@arbitrum/nitro-contracts
Version:
Layer 2 precompiles and rollup for Arbitrum Nitro
855 lines • 127 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "BOLDUpgradeAction",
"sourceName": "src/rollup/BOLDUpgradeAction.sol",
"abi": [
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "excessStakeReceiver",
"type": "address"
},
{
"internalType": "contract IOldRollup",
"name": "rollup",
"type": "address"
},
{
"internalType": "address",
"name": "bridge",
"type": "address"
},
{
"internalType": "address",
"name": "sequencerInbox",
"type": "address"
},
{
"internalType": "address",
"name": "rollupEventInbox",
"type": "address"
},
{
"internalType": "address",
"name": "outbox",
"type": "address"
},
{
"internalType": "address",
"name": "inbox",
"type": "address"
},
{
"internalType": "contract IOneStepProofEntry",
"name": "osp",
"type": "address"
}
],
"internalType": "struct BOLDUpgradeAction.Contracts",
"name": "contracts",
"type": "tuple"
},
{
"components": [
{
"internalType": "address",
"name": "outbox",
"type": "address"
},
{
"internalType": "address",
"name": "bridge",
"type": "address"
},
{
"internalType": "address",
"name": "rei",
"type": "address"
},
{
"internalType": "address",
"name": "seqInbox",
"type": "address"
},
{
"internalType": "address",
"name": "inbox",
"type": "address"
}
],
"internalType": "struct BOLDUpgradeAction.ProxyAdmins",
"name": "proxyAdmins",
"type": "tuple"
},
{
"components": [
{
"internalType": "address",
"name": "bridge",
"type": "address"
},
{
"internalType": "address",
"name": "seqInbox",
"type": "address"
},
{
"internalType": "address",
"name": "inbox",
"type": "address"
},
{
"internalType": "address",
"name": "rei",
"type": "address"
},
{
"internalType": "address",
"name": "outbox",
"type": "address"
},
{
"internalType": "address",
"name": "newRollupUser",
"type": "address"
},
{
"internalType": "address",
"name": "newRollupAdmin",
"type": "address"
},
{
"internalType": "address",
"name": "challengeManager",
"type": "address"
}
],
"internalType": "struct BOLDUpgradeAction.Implementations",
"name": "implementations",
"type": "tuple"
},
{
"components": [
{
"internalType": "uint64",
"name": "confirmPeriodBlocks",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "challengePeriodBlocks",
"type": "uint64"
},
{
"internalType": "address",
"name": "stakeToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "stakeAmt",
"type": "uint256"
},
{
"internalType": "uint256[]",
"name": "miniStakeAmounts",
"type": "uint256[]"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "minimumAssertionPeriod",
"type": "uint256"
},
{
"internalType": "uint64",
"name": "validatorAfkBlocks",
"type": "uint64"
},
{
"internalType": "bool",
"name": "disableValidatorWhitelist",
"type": "bool"
},
{
"internalType": "uint256",
"name": "blockLeafSize",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "bigStepLeafSize",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "smallStepLeafSize",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "numBigStepLevel",
"type": "uint8"
},
{
"internalType": "uint64",
"name": "challengeGracePeriodBlocks",
"type": "uint64"
},
{
"internalType": "bool",
"name": "isDelayBufferable",
"type": "bool"
},
{
"components": [
{
"internalType": "uint64",
"name": "threshold",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "max",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "replenishRateInBasis",
"type": "uint64"
}
],
"internalType": "struct BufferConfig",
"name": "bufferConfig",
"type": "tuple"
}
],
"internalType": "struct BOLDUpgradeAction.Settings",
"name": "settings",
"type": "tuple"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "rollup",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "challengeManager",
"type": "address"
}
],
"name": "RollupMigrated",
"type": "event"
},
{
"inputs": [],
"name": "BIGSTEP_LEAF_SIZE",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "BLOCK_LEAF_SIZE",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "BRIDGE",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "CHAIN_ID",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "CHALLENGE_GRACE_PERIOD_BLOCKS",
"outputs": [
{
"internalType": "uint64",
"name": "",
"type": "uint64"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "CHALLENGE_PERIOD_BLOCKS",
"outputs": [
{
"internalType": "uint64",
"name": "",
"type": "uint64"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "CONFIRM_PERIOD_BLOCKS",
"outputs": [
{
"internalType": "uint64",
"name": "",
"type": "uint64"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "DISABLE_VALIDATOR_WHITELIST",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "EXCESS_STAKE_RECEIVER",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "IMPL_BRIDGE",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "IMPL_CHALLENGE_MANAGER",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "IMPL_INBOX",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "IMPL_NEW_ROLLUP_ADMIN",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "IMPL_NEW_ROLLUP_USER",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "IMPL_OUTBOX",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "IMPL_REI",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "IMPL_SEQUENCER_INBOX",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "INBOX",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "IS_DELAY_BUFFERABLE",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MAX",
"outputs": [
{
"internalType": "uint64",
"name": "",
"type": "uint64"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MINIMUM_ASSERTION_PERIOD",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MINI_STAKE_AMOUNTS_STORAGE",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "NUM_BIGSTEP_LEVEL",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "OLD_ROLLUP",
"outputs": [
{
"internalType": "contract IOldRollup",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "OSP",
"outputs": [
{
"internalType": "contract IOneStepProofEntry",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "OUTBOX",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "PREIMAGE_LOOKUP",
"outputs": [
{
"internalType": "contract StateHashPreImageLookup",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "PROXY_ADMIN_BRIDGE",
"outputs": [
{
"internalType": "contract ProxyAdmin",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "PROXY_ADMIN_INBOX",
"outputs": [
{
"internalType": "contract ProxyAdmin",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "PROXY_ADMIN_OUTBOX",
"outputs": [
{
"internalType": "contract ProxyAdmin",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "PROXY_ADMIN_REI",
"outputs": [
{
"internalType": "contract ProxyAdmin",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "PROXY_ADMIN_SEQUENCER_INBOX",
"outputs": [
{
"internalType": "contract ProxyAdmin",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "REI",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "REPLENISH_RATE_IN_BASIS",
"outputs": [
{
"internalType": "uint64",
"name": "",
"type": "uint64"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "SECONDS_PER_SLOT",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "SEQ_INBOX",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "SMALLSTEP_LEAF_SIZE",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "STAKE_AMOUNT",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "STAKE_TOKEN",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "THRESHOLD",
"outputs": [
{
"internalType": "uint64",
"name": "",
"type": "uint64"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "VALIDATOR_AFK_BLOCKS",
"outputs": [
{
"internalType": "uint64",
"name": "",
"type": "uint64"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "deployer",
"type": "address"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
}
],
"name": "expectedRollupAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "validators",
"type": "address[]"
}
],
"name": "perform",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "rollupAddress",
"type": "address"
},
{
"internalType": "address",
"name": "deployer",
"type": "address"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
}
],
"name": "validateRollupDeployedAtAddress",
"outputs": [],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x6105806040523480156200001257600080fd5b506040516200758f3803806200758f833981016040819052620000359162000718565b83516001600160a01b039081166101005260208086015182166101205260408087015183166101405260608088015184166101605260808089015185166101805260a089015185166101a05260c089015185166101c05260e089015185166103a052875185166103c0529287015184166103e05286820151841661040052860151831661042052908501519091166104405251620000d3906200026d565b604051809103906000f080158015620000f0573d6000803e3d6000fd5b506001600160a01b0390811661046052825181166104805260208084015182166104a05260408085015183166104c05260608086015184166104e05260808087015185166105005260a08088015186166105205260c08089015187166105405260e0808a01518816610560529188015161026052870151610280528601516001600160401b039081166102a052865181166101e0529386015190931661020052848201519093166102205291830151610240528201519051620001b3906200027b565b620001bf91906200083f565b604051809103906000f080158015620001dc573d6000803e3d6000fd5b506001600160a01b03166103005261010081015115156102c05261012081015160805261014081015160a05261016081015160c05261018081015160ff1660e0526101a08101516001600160401b039081166102e0526101c08201511515610320526101e0909101805160200151821661034052805151821661036052516040015116610380525062000885915050565b610a2d80620068c283390190565b6102a080620072ef83390190565b634e487b7160e01b600052604160045260246000fd5b60405161010081016001600160401b0381118282101715620002c557620002c562000289565b60405290565b60405161020081016001600160401b0381118282101715620002c557620002c562000289565b6001600160a01b03811681146200030757600080fd5b50565b80516200031781620002f1565b919050565b600060a082840312156200032f57600080fd5b60405160a081016001600160401b038111828210171562000354576200035462000289565b806040525080915082516200036981620002f1565b815260208301516200037b81620002f1565b602082015260408301516200039081620002f1565b60408201526060830151620003a581620002f1565b60608201526080830151620003ba81620002f1565b6080919091015292915050565b60006101008284031215620003db57600080fd5b620003e56200029f565b90508151620003f481620002f1565b815260208201516200040681620002f1565b602082015262000419604083016200030a565b60408201526200042c606083016200030a565b60608201526200043f608083016200030a565b60808201526200045260a083016200030a565b60a08201526200046560c083016200030a565b60c08201526200047860e083016200030a565b60e082015292915050565b80516001600160401b03811681146200031757600080fd5b600082601f830112620004ad57600080fd5b815160206001600160401b0380831115620004cc57620004cc62000289565b8260051b604051601f19603f83011681018181108482111715620004f457620004f462000289565b6040529384528581018301938381019250878511156200051357600080fd5b83870191505b84821015620005345781518352918301919083019062000519565b979650505050505050565b805180151581146200031757600080fd5b805160ff811681146200031757600080fd5b6000606082840312156200057557600080fd5b604051606081016001600160401b03811182821017156200059a576200059a62000289565b604052905080620005ab8362000483565b8152620005bb6020840162000483565b6020820152620005ce6040840162000483565b60408201525092915050565b60006102408284031215620005ee57600080fd5b620005f8620002cb565b9050620006058262000483565b8152620006156020830162000483565b602082015262000628604083016200030a565b60408201526060828101519082015260808201516001600160401b038111156200065157600080fd5b6200065f848285016200049b565b60808301525060a082015160a082015260c082015160c08201526200068760e0830162000483565b60e08201526101006200069c8184016200053f565b90820152610120828101519082015261014080830151908201526101608083015190820152610180620006d181840162000550565b908201526101a0620006e583820162000483565b908201526101c0620006f98382016200053f565b908201526101e06200070e8484830162000562565b9082015292915050565b6000806000808486036102c08112156200073157600080fd5b610100808212156200074257600080fd5b6200074c6200029f565b915086516200075b81620002f1565b82526200076b602088016200030a565b60208301526200077e604088016200030a565b604083015262000791606088016200030a565b6060830152620007a4608088016200030a565b6080830152620007b760a088016200030a565b60a0830152620007ca60c088016200030a565b60c0830152620007dd60e088016200030a565b60e0830152819550620007f3888289016200031c565b9450505062000807866101a08701620003c7565b6102a08601519092506001600160401b038111156200082557600080fd5b6200083387828801620005da565b91505092959194509250565b6020808252825182820181905260009190848201906040850190845b8181101562000879578351835292840192918401916001016200085b565b50909695505050505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e05161030051610320516103405161036051610380516103a0516103c0516103e05161040051610420516104405161046051610480516104a0516104c0516104e05161050051610520516105405161056051615ca262000c20600039600081816104480152610b4a0152600081816103750152610ce80152600081816105580152610d1701526000818161086501526123db015260008181610815015261229f01526000818161068301526121d801526000818161083d0152818161259a0152612750015260008181610905015261206f01526000818161088d01528181611ac50152611b8f01526000818161058001526122010152600081816104ff0152818161256a015261277801526000818161053001526122c90152600081816103de01528181610b6b01526120980152600081816103b6015261240501526000818161073c0152610e5b015260008181610955015261262601526000818161065b01526125c60152600081816108dd01526125f601526000818161092d015261254301526000818161079d0152611ea70152600081816109940152611ff20152600081816107640152818161126301526112b00152600081816105a80152611e7701526000818161033a0152611e510152600081816106ab0152611e16015260008181610a0c0152611d280152600081816104980152611cf90152600081816106fb0152610e3a0152600081816104060152611cc90152600081816107c501528181610c4c01526121af01526000818161047001528181610c7b015281816123b201526124660152600081816107ed01528181610caa01528181612276015261232a0152600081816108b501528181610c1d01528181612522015281816127df015281816128c501526129670152600081816109bc01528181610bee01528181612046015261212e0152600081816106d301528181610d460152818161109d0152818161132101528181611579015281816115f0015281816116e80152818161179c015281816118a701528181611956015281816119850152611d4e01526000818161063301528181610e930152611de70152600081816105d00152611fc90152600081816109e40152611f870152600081816104c00152611f6101526000818161060b0152611f3b0152615ca26000f3fe60806040523480156200001157600080fd5b50600436106200032f5760003560e01c80638765240f11620001b1578063cc8089bb11620000f5578063eb657a4e11620000a3578063ee9a31a2116200007a578063ee9a31a214620009b6578063fa28742014620009de578063faf5625f1462000a0657600080fd5b8063eb657a4e146200094f578063ebe03a931462000977578063ec4f74ce146200098e57600080fd5b8063d49d518111620000d8578063d49d518114620008d7578063dae7cb8b14620008ff578063e8180c29146200092757600080fd5b8063cc8089bb1462000887578063d384cb9514620008af57600080fd5b8063b5e00c3f116200015f578063c21c42331162000136578063c21c4233146200080f578063c519d1511462000837578063c897f55e146200085f57600080fd5b8063b5e00c3f1462000797578063b701069714620007bf578063be41b36714620007e757600080fd5b8063999f20db1162000194578063999f20db146200071d5780639f9854e51462000736578063b38d57f0146200075e57600080fd5b80638765240f14620006cd57806391ddb28514620006f557600080fd5b8063304b907111620002795780635d9e24441162000227578063785ffb3711620001fe578063785ffb371462000655578063817cd312146200067d57806385e1f4d014620006a557600080fd5b80635d9e244414620005ca578063609fb503146200060557806364f4992a146200062d57600080fd5b80634692de5d116200025c5780634692de5d14620005525780634b2f51ef146200057a5780634ceccfe514620005a257600080fd5b8063304b907114620005215780633c2b7840146200052a57600080fd5b806310a662e211620002e35780631ccc2cd111620002ba5780631ccc2cd114620004ba57806328fb228c14620004e25780632cfb7ca314620004f957600080fd5b806310a662e214620004425780631b142ea7146200046a5780631c39b672146200049257600080fd5b80630787484b11620003185780630787484b14620003b05780630a54257d14620003d85780631047fc52146200040057600080fd5b80623c78fb1462000334578062f9731e146200036f575b600080fd5b6200035c7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b620003977f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200162000366565b620003977f000000000000000000000000000000000000000000000000000000000000000081565b620003977f000000000000000000000000000000000000000000000000000000000000000081565b620004287f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff909116815260200162000366565b620003977f000000000000000000000000000000000000000000000000000000000000000081565b620003977f000000000000000000000000000000000000000000000000000000000000000081565b620003977f000000000000000000000000000000000000000000000000000000000000000081565b6200035c7f000000000000000000000000000000000000000000000000000000000000000081565b62000397620004f336600462002bc0565b62000a2e565b620003977f000000000000000000000000000000000000000000000000000000000000000081565b6200035c600c81565b620003977f000000000000000000000000000000000000000000000000000000000000000081565b620003977f000000000000000000000000000000000000000000000000000000000000000081565b620003977f000000000000000000000000000000000000000000000000000000000000000081565b620004287f000000000000000000000000000000000000000000000000000000000000000081565b620005f27f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200162000366565b6200035c7f000000000000000000000000000000000000000000000000000000000000000081565b620003977f000000000000000000000000000000000000000000000000000000000000000081565b620004287f000000000000000000000000000000000000000000000000000000000000000081565b620003977f000000000000000000000000000000000000000000000000000000000000000081565b6200035c7f000000000000000000000000000000000000000000000000000000000000000081565b620003977f000000000000000000000000000000000000000000000000000000000000000081565b620004287f000000000000000000000000000000000000000000000000000000000000000081565b620007346200072e36600462002bef565b62000aa0565b005b620003977f000000000000000000000000000000000000000000000000000000000000000081565b620007867f000000000000000000000000000000000000000000000000000000000000000081565b604051901515815260200162000366565b620003977f000000000000000000000000000000000000000000000000000000000000000081565b620003977f000000000000000000000000000000000000000000000000000000000000000081565b620003977f000000000000000000000000000000000000000000000000000000000000000081565b620003977f000000000000000000000000000000000000000000000000000000000000000081565b620003977f000000000000000000000000000000000000000000000000000000000000000081565b620003977f000000000000000000000000000000000000000000000000000000000000000081565b620003977f000000000000000000000000000000000000000000000000000000000000000081565b620003977f000000000000000000000000000000000000000000000000000000000000000081565b620004287f000000000000000000000000000000000000000000000000000000000000000081565b620003977f000000000000000000000000000000000000000000000000000000000000000081565b620007867f000000000000000000000000000000000000000000000000000000000000000081565b620004287f000000000000000000000000000000000000000000000000000000000000000081565b620007346200098836600462002cf9565b62000b2e565b620004287f000000000000000000000000000000000000000000000000000000000000000081565b620003977f000000000000000000000000000000000000000000000000000000000000000081565b6200035c7f000000000000000000000000000000000000000000000000000000000000000081565b6200035c7f000000000000000000000000000000000000000000000000000000000000000081565b6000808260405160200162000a4591815260200190565b60405160208183030381529060405280519060200120905062000a96816040518060200162000a7490620029e2565b6020820181038252601f19601f820116604052508051906020012086620014ef565b9150505b92915050565b6000836001600160a01b03163b11801562000ad75750826001600160a01b031662000acc838362000a2e565b6001600160a01b0316145b62000b295760405162461bcd60e51b815260206004820152600d60248201527f414444525f4d49534d415443480000000000000000000000000000000000000060448201526064015b60405180910390fd5b505050565b62000b3862001577565b600062000b4462001948565b905060007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000060405162000b9890620029f0565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f08015801562000bdb573d6000803e3d6000fd5b50905060006040518061012001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602001836001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bc45e0ae6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000da3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000dc9919062002da4565b6001600160a01b0316815250905060008360c0015160405160200162000df191815260200190565b604051602081830303815290604052805190602001209050600062000e1b308660c0015162000a2e565b905062000e28816200202f565b836001600160a01b0316631a72d54c827f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008961018001518a6101a001518b6101c001518c602001517f00000000000000000000000000000000000000000000000000000000000000008e61024001518f61014001516040518b63ffffffff1660e01b815260040162000ee59a9998979695949392919062002dc4565b600060405180830381600087803b15801562000f0057600080fd5b505af115801562000f15573d6000803e3d6000fd5b5050505060008260405162000f2a90620029e2565b8190604051809103906000f590508015801562000f4b573d6000803e3d6000fd5b509050816001600160a01b0316816001600160a01b03161462000fb15760405162461bcd60e51b815260206004820152601560248201527f554e455850435445445f524f4c4c55505f414444520000000000000000000000604482015260640162000b20565b608086018051309091526040517fadfef6ac0000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063adfef6ac9062001004908a9089906004016200308e565b600060405180830381600087803b1580156200101f57600080fd5b505af115801562001034573d6000803e3d6000fd5b50505050875160001462001261576000885167ffffffffffffffff81111562001061576200106162002c35565b6040519080825280602002602001820160405280156200108b578160200160208202803683370190505b50905060005b8951811015620011e1577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663facd743b8b8381518110620010df57620010df620032b4565b60200260200101516040518263ffffffff1660e01b81526004016200111391906001600160a01b0391909116815260200190565b602060405180830381865afa15801562001131573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011579190620032e0565b620011a55760405162461bcd60e51b815260206004820152601860248201527f554e45585045435445445f4e45575f56414c494441544f520000000000000000604482015260640162000b20565b6001828281518110620011bc57620011bc620032b4565b9115156020928302919091019091015280620011d88162003314565b91505062001091565b506040517fa3ffb7720000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063a3ffb772906200122b908c9085906004016200338a565b600060405180830381600087803b1580156200124657600080fd5b505af11580156200125b573d6000803e3d6000fd5b50505050505b7f0000000000000000000000000000000000000000000000000000000000000000156200131f576040517fa2b4f1d80000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000151560048201526001600160a01b0383169063a2b4f1d890602401600060405180830381600087803b1580156200130557600080fd5b505af11580156200131a573d6000803e3d6000fd5b505050505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166355840a586040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156200139c575060408051601f3d908101601f19168201909252620013999181019062002da4565b60015b156200142b576001600160a01b0381161562001429576040517f0d561b370000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152841690630d561b3790602401600060405180830381600087803b1580156200140f57600080fd5b505af115801562001424573d6000803e3d6000fd5b505050505b505b6040517f13af40350000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301528316906313af403590602401600060405180830381600087803b1580156200148857600080fd5b505af11580156200149d573d6000803e3d6000fd5b5050604080516001600160a01b0380881682528a1660208201527f7e5cc5c3fce046d868d5918548df8d3e8ef9f09e6fb30a68081f1f1348cd0314935001905060405180910390a15050505050505050565b604080517fff00000000000000000000000000000000000000000000000000000000000000602080830191909152606084901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602183015260358201869052605580830186905283518084039091018152607590920190925280519101205b9392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620015d357600080fd5b505af1158015620015e8573d6000803e3d6000fd5b5050505060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dff697876040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200164d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001673919062003400565b905060328167ffffffffffffffff1611156200168d575060325b60005b8167ffffffffffffffff168167ffffffffffffffff16101562001944576040517f6ddd374400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636ddd374490602401602060405180830381865afa15801562001738573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200175e919062002da4565b6040517fa23c44b10000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301529192506000917f0000000000000000000000000000000000000000000000000000000000000000169063a23c44b19060240160a060405180830381865afa158015620017e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200180a91906200341e565b9050806080015180156200182a5750606081015167ffffffffffffffff16155b156200192c57604080516001808252818301909252600091602080830190803683370190505090508281600081518110620018695762001869620032b4565b6001600160a01b0392831660209182029290920101526040517f7c75c2980000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000090911690637c75c29890620018e0908490600401620034b1565b600060405180830381600087803b158015620018fb57600080fd5b505af115801562001910573d6000803e3d6000fd5b50505050600185620019239190620034c6565b9450506200193c565b826200193881620034f1565b9350505b505062001690565b5050565b62001952620029fe565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166392c8134c7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166365f7f80d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620019e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a08919062003400565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff909116600482015260240161018060405180830381865afa15801562001a67573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a8d91906200351b565b516040517f8eaa6ac00000000000000000000000000000000000000000000000000000000081526004810182905290915060009081907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690638eaa6ac09060240160c060405180830381865afa15801562001b15573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b3b91906200366f565b9150915062001b4962002b20565b8251815260208084015190820190600281111562001b6b5762001b6b62002f5e565b9081600281111562001b815762001b8162002f5e565b905250836001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016633164413062001bbf84620024e0565b856040518363ffffffff1660e01b815260040162001bdf92919062003740565b602060405180830381865afa15801562001bfd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c23919062003777565b1462001c725760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964206c617465737420657865637574696f6e2068617368000000604482015260640162000b20565b62001c9e6040518060800160405280600081526020016000815260200160008152602001600081525090565b6040805160608101825260008082526020820181905291810191909152604051806102a001604052807f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff1681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638ee1a1266040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001dab573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001dd1919062003777565b8152602001306001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f000000000000000000000000000000000000000000000000000000000000000081526020016040518060200160405280600081525081526020017f000000000000000000000000000000000000000000000000000000000000000081526020017f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff1681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b0ec2ae16040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001f04573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001f2e919081019062003791565b81526020018381526020017f000000000000000000000000000000000000000000000000000000000000000081526020017f000000000000000000000000000000000000000000000000000000000000000081526020017f0000000000000000000000000000000000000000000000000000000000000000815260200184815260200185815260200160006001600160a01b031681526020017f000000000000000000000000000000000000000000000000000000000000000060ff1681526020017f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff16815260200182815250965050505050505090565b60405163266a23b160e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081811660048401527f000000000000000000000000000000000000000000000000000000000000000082166024840152917f0000000000000000000000000000000000000000000000000000000000000000909116906399a88ec490604401600060405180830381600087803b158015620020df57600080fd5b505af1158015620020f4573d6000803e3d6000fd5b50506040517f919cc7060000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301527f000000000000000000000000000000000000000000000000000000000000000016925063919cc7069150602401600060405180830381600087803b1580156200217557600080fd5b505af11580156200218a573d6000803e3d6000fd5b505050506200219862002520565b60405163266a23b160e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081811660048401527f000000000000000000000000000000000000000000000000000000000000000082166024840152917f0000000000000000000000000000000000000000000000000000000000000000909116906399a88ec490604401600060405180830381600087803b1580156200224857600080fd5b505af11580156200225d573d6000803e3d6000fd5b505060405163266a23b160e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081811660048401527f00000000000000000000000000000000000000000000000000000000000000008216602484015293507f00000000000000000000000000000000000000000000000000000000000000001691506399a88ec490604401600060405180830381600087803b1580156200230f57600080fd5b505af115801562002324573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636ae71f126040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200238457600080fd5b505af115801562002399573d6000803e3d6000fd5b505060405163266a23b160e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081811660048401527f00000000000000000000000000000000000000000000000000000000000000008216602484015293507f00000000000000000000000000000000000000000000000000000000000000001691506399a88ec490604401600060405180830381600087803b1580156200244b57600080fd5b505af115801562002460573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636ae71f126040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620024c057600080fd5b505af1158015620024d5573d6000803e3d6000fd5b505050505050505050565b620024ea62002b49565b6040518060400160405280836000015181526020018360200151600281111562002518576200251862002f5e565b905292915050565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000001562002731577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639623609d827f000000000000000000000000000000000000000000000000000000000000000060405180606001604052807f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff1681525060405160240162002664919062003820565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa655d93700000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152620026f79392919060040162003852565b600060405180830381600087803b1580156200271257600080fd5b505af115801562002727573d6000803e3d6000fd5b50505050620027d7565b60405163266a23b160e21b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301527f000000000000000000000000000000000000000000000000000000000000000016906399a88ec490604401600060405180830381600087803b158015620027bd57600080fd5b505af1158015620027d2573d6000803e3d6000fd5b505050505b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ebea461d6040518163ffffffff1660e01b8152600401608060405180830381865afa1580156200283c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002862919062003889565b93509350935093506000600c836200287b9190620038d6565b15620028a1576200288e600c84620038ed565b6200289b90600162003904565b620028ae565b620028ae600c84620038ed565b9050848111620028bf5784620028c1565b805b94507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b31761f86040518060800160405280888152602001878152602001868152602001858152506040518263ffffffff1660e01b81526004016200293191906200391a565b600060405180830381600087803b1580156200294c57600080fd5b505af115801562002961573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636ae71f126040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620029c157600080fd5b505af1158015620029d6573d6000803e3d6000fd5b50505050505050505050565b611453806200394783390190565b610ed38062004d9a83390190565b604051806102a00160405280600067ffffffffffffffff16815260200160006001600160a01b03168152602001600081526020016000801916815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016060815260200160008152602001600067ffffffffffffffff1681526020016060815260200162002ab56040518060800160405280600081526020016000815260200160008152602001600081525090565b815260200160008152602001600081526020016000815260200162002ad962002b20565b81526000602080830182905260408084018390526060808501849052608085018490528151908101825283815291820183905281019190915260a09091015290565b905290565b604051806060016040528062002b3562002b6a565b815260200160008152600060209091015290565b604051806040016040528062002b5e62002b6a565b81526020016000905290565b604051806040016040528062002b7f62002b89565b815260200162002b1b5b60405180604001604052806002906020820280368337509192915050565b6001600160a01b038116811462002bbd57600080fd5b50565b6000806040838503121562002bd457600080fd5b823562002be18162002ba7565b946020939093013593505050565b60008060006060848603121562002c0557600080fd5b833562002c128162002ba7565b9250602084013562002c248162002ba7565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051610180810167ffffffffffffffff8111828210171562002c725762002c7262002c35565b60405290565b6040805190810167ffffffffffffffff8111828210171562002c725762002c7262002c35565b604051601f8201601f1916810167ffffffffffffffff8111828210171562002cca5762002cca62002c35565b604052919050565b600067ffffffffffffffff82111562002cef5762002cef62002c35565b5060051b60200190565b6000602080838503121562002d0d57600080fd5b823567ffffffffffffffff81111562002d2557600080fd5b8301601f8101851362002d3757600080fd5b803562002d4e62002d488262002cd2565b62002c9e565b81815260059190911b8201830190838101908783111562002d6e57600080fd5b928401925b8284101562002d9957833562002d898162002ba7565b8252928401929084019062002d73565b979650505050505050565b60006020828403121562002db757600080fd5b8151620015708162002ba7565b60006101408083016001600160a01b03808f168552602067ffffffffffffffff8f1681870152818e1660408701528c60608701528b60808701528a60a0870152818a1660c087015281891660e087015260ff8816610100870152836101208701528293508651915081835261016086019350808701925060005b8281101562002e5c5783518552938101939281019260010162002e3e565b50929f9e505050505050505050505050505050565b6000815180845260005b8181101562002e995760208185018101518683018201520162002e7b565b506000602082860101526020601f19601f83011685010191505092915050565b600081518084526020808501945080840160005b8381101562002eeb5781518752958201959082019060010162002ecd565b509495945050505050565b80518260005b600281101562002f1d57825182526020928301929091019060010162002efc565b5050506020808201516040840160005b600281101562002f5657825167ffffffffffffffff168252918301919083019060010162002f2d565b505050505050565b634e487b7160e01b600052602160045260246000fd5b6003811062002f9357634e487b7160e01b600052602160045260246000fd5b9052565b62002fa482825162002ef6565b602081015162002fb8608084018262002f74565b506040015160a09190910152565b6001600160a01b038082511683528060208301511660208401528060408301511660408401525060608101516200300860608401826001600160a01b03169052565b5060808101516200302460808401826001600160a01b03169052565b506