{
  "_format": "hh-sol-artifact-1",
  "contractName": "InflationAllocation",
  "sourceName": "contracts/inflation/implementation/InflationAllocation.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_governance",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_addressUpdater",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "_annualInflationScheduleBips",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "annualInflationPercentagesBips",
          "type": "uint256[]"
        }
      ],
      "name": "AnnualInflationPercentageScheduleSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "percentageBips",
          "type": "uint256"
        }
      ],
      "name": "AnnualInflationPercentageYielded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "proposedGovernance",
          "type": "address"
        }
      ],
      "name": "GovernanceProposed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldGovernance",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newGoveranance",
          "type": "address"
        }
      ],
      "name": "GovernanceUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "InflationSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "contract IIInflationReceiver[]",
          "name": "inflationRecievers",
          "type": "address[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "percentagePerReceiverBips",
          "type": "uint256[]"
        }
      ],
      "name": "InflationSharingPercentagesSet",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "annualInflationPercentagesBips",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "claimGovernance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getAddressUpdater",
      "outputs": [
        {
          "internalType": "address",
          "name": "_addressUpdater",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getAnnualPercentageBips",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getSharingPercentages",
      "outputs": [
        {
          "components": [
            {
              "internalType": "contract IIInflationReceiver",
              "name": "inflationReceiver",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "percentBips",
              "type": "uint256"
            }
          ],
          "internalType": "struct SharingPercentage[]",
          "name": "_sharingPercentages",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "governance",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "inflation",
      "outputs": [
        {
          "internalType": "contract Inflation",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "inflationReceivers",
      "outputs": [
        {
          "internalType": "contract IIInflationReceiver",
          "name": "receiverContract",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "percentageBips",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_governance",
          "type": "address"
        }
      ],
      "name": "initialise",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "lastAnnualInflationPercentageBips",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_governance",
          "type": "address"
        }
      ],
      "name": "proposeGovernance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proposedGovernance",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "_annualInflationScheduleBips",
          "type": "uint256[]"
        }
      ],
      "name": "setAnnualInflation",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IIInflationReceiver[]",
          "name": "_inflationRecievers",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_percentagePerReceiverBips",
          "type": "uint256[]"
        }
      ],
      "name": "setSharingPercentages",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_governance",
          "type": "address"
        }
      ],
      "name": "transferGovernance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32[]",
          "name": "_contractNameHashes",
          "type": "bytes32[]"
        },
        {
          "internalType": "address[]",
          "name": "_contractAddresses",
          "type": "address[]"
        }
      ],
      "name": "updateContractAddresses",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162001c4838038062001c488339810160408190526200003491620003d3565b8183806001600160a01b038116156200005257620000528162000145565b506001600160a01b038116620000a2576040805162461bcd60e51b815260206004820152601060248201526f5f676f7665726e616e6365207a65726f60801b604482015290519081900360640190fd5b50620000ae8162000229565b5060008151116040518060400160405280601f81526020017f616e6e75616c20696e666c6174696f6e207363686564756c6520656d7074790081525090620001145760405162461bcd60e51b81526004016200010b9190620004b0565b60405180910390fd5b50806000815181106200012357fe5b60209081029190910101516004556200013c816200024d565b50505062000506565b600154600160a01b900460ff1615620001a5576040805162461bcd60e51b815260206004820152601460248201527f696e697469616c6973656420213d2066616c7365000000000000000000000000604482015290519081900360640190fd5b6001805460ff60a01b1916600160a01b179055600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b7f714f205b2abd25bef1d06a1af944e38c113fe6160375c4e1d6d5cf28848e771955565b600a8151111560405180604001604052806008815260200167746f6f206d616e7960c01b81525090620002955760405162461bcd60e51b81526004016200010b9190620004b0565b50805160045460005b82811015620003b05781848281518110620002b557fe5b602002602001015111158015620002e057506000848281518110620002d657fe5b6020026020010151115b8015620003065750600a61271004848281518110620002fb57fe5b602002602001015111155b6040518060400160405280601e81526020017f616e6e75616c20696e666c6174696f6e206f7574206f6620626f756e64730000815250906200035d5760405162461bcd60e51b81526004016200010b9190620004b0565b508381815181106200036b57fe5b6020026020010151915060058482815181106200038457fe5b60209081029190910181015182546001818101855560009485529290932090920191909155016200029e565b50505050565b80516001600160a01b0381168114620003ce57600080fd5b919050565b600080600060608486031215620003e8578283fd5b620003f384620003b6565b9250602062000404818601620003b6565b60408601519093506001600160401b038082111562000421578384fd5b818701915087601f83011262000435578384fd5b8151818111156200044257fe5b838102604051858282010181811085821117156200045c57fe5b604052828152858101935084860182860187018c10156200047b578788fd5b8795505b838610156200049f5780518552600195909501949386019386016200047f565b508096505050505050509250925092565b6000602080835283518082850152825b81811015620004de57858101830151858201604001528201620004c0565b81811115620004f05783604083870101525b50601f01601f1916929092016040019392505050565b61173280620005166000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80639d6a890f11610097578063c373a08e11610066578063c373a08e146101da578063c853b8d4146101ed578063d38bfff414610202578063ebee6fa41461021557610100565b80639d6a890f14610199578063b00c0b76146101ac578063b2d9e806146101bf578063be0522e0146101d257610100565b806360f7ac97116100d357806360f7ac9714610156578063728a5bcb1461015e57806390ac884b1461017e578063981940291461019157610100565b80631d019e34146101055780635267a15d1461012f5780635aa6e675146101445780635d36b1901461014c575b600080fd5b6101186101133660046114d0565b61021d565b60405161012692919061161b565b60405180910390f35b610137610255565b6040516101269190611522565b61013761027a565b610154610289565b005b61013761034b565b61017161016c3660046114d0565b61035a565b604051610126919061166d565b61015461018c36600461140b565b61037b565b610171610401565b6101546101a736600461127b565b61058f565b6101546101ba36600461129e565b610669565b6101546101cd366004611355565b610714565b610137610726565b6101546101e836600461127b565b610735565b6101f5610791565b60405161012691906115b0565b61015461021036600461127b565b61089b565b610171610914565b6002818154811061022d57600080fd5b6000918252602090912001546001600160a01b0381169150600160a01b900463ffffffff1682565b7f714f205b2abd25bef1d06a1af944e38c113fe6160375c4e1d6d5cf28848e77195490565b6000546001600160a01b031681565b6001546001600160a01b031633146102d8576040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd0818db185a5b585a5b9d609a1b604482015290519081900360640190fd5b600054600154604080516001600160a01b03938416815292909116602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6001546001600160a01b031681565b6005818154811061036a57600080fd5b600091825260209091200154905081565b61038361091a565b60055460005b818110156103bc57600580548061039c57fe5b600082815260208120820160001990810191909155019055600101610389565b506103c68261096d565b7fe3ad326cdb10e1201bcea3d96ccf2f5437ed71942548e5ba0aab68c9bd296fa4826040516103f59190611608565b60405180910390a15050565b60035460408051808201909152600c81526b06164647265737320697320360a41b60208201526000916001600160a01b0316908161045b5760405162461bcd60e51b8152600401610452919061163a565b60405180910390fd5b5060035460408051808201909152600e81526d37b7363c9034b7333630ba34b7b760911b6020820152906001600160a01b031633146104ad5760405162461bcd60e51b8152600401610452919061163a565b506005541561054e5760056000815481106104c457fe5b600091825260209091200154600455600554600181111561052b5760005b6001820381101561052957600581600101815481106104fd57fe5b90600052602060002001546005828154811061051557fe5b6000918252602090912001556001016104e2565b505b600580548061053657fe5b60019003818190600052602060002001600090559055505b7fc46384622db26f8a6509e51f7cbe387b3fa773448f19fc9f070fcdc984cffb8e60045460405161057f919061166d565b60405180910390a1505060045490565b600154600160a01b900460ff16156105e5576040805162461bcd60e51b8152602060048201526014602482015273696e697469616c6973656420213d2066616c736560601b604482015290519081900360640190fd5b6001805460ff60a01b1916600160a01b179055600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b610671610255565b6001600160a01b0316336001600160a01b0316146106cd576040805162461bcd60e51b815260206004820152601460248201527337b7363c9030b2323932b9b9903ab83230ba32b960611b604482015290519081900360640190fd5b61070661070183836040518060400160405280600e81526020016d20b2323932b9b9aab83230ba32b960911b815250610ac7565b610bf4565b6107108282610c18565b5050565b61071c61091a565b6107108282610e7f565b6003546001600160a01b031681565b61073d61091a565b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f1f95fb40be3a947982072902a887b521248d1d8931a39eb38f84f4d6fd758b699181900360200190a150565b6002546060908067ffffffffffffffff811180156107ae57600080fd5b506040519080825280602002602001820160405280156107e857816020015b6107d5611195565b8152602001906001900390816107cd5790505b50915060005b81811015610896576002818154811061080357fe5b9060005260206000200160000160149054906101000a900463ffffffff1663ffffffff1683828151811061083357fe5b602002602001015160200181815250506002818154811061085057fe5b60009182526020909120015483516001600160a01b039091169084908390811061087657fe5b60209081029190910101516001600160a01b0390911690526001016107ee565b505090565b6108a361091a565b600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b60045481565b6000546001600160a01b0316331461096b576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b565b600a8151111560405180604001604052806008815260200167746f6f206d616e7960c01b815250906109b25760405162461bcd60e51b8152600401610452919061163a565b50805160045460005b82811015610ac157818482815181106109d057fe5b6020026020010151111580156109f9575060008482815181106109ef57fe5b6020026020010151115b8015610a1d5750600a61271004848281518110610a1257fe5b602002602001015111155b6040518060400160405280601e81526020017f616e6e75616c20696e666c6174696f6e206f7574206f6620626f756e6473000081525090610a715760405162461bcd60e51b8152600401610452919061163a565b50838181518110610a7e57fe5b602002602001015191506005848281518110610a9657fe5b60209081029190910181015182546001818101855560009485529290932090920191909155016109bb565b50505050565b600080826040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015610b0b578181015183820152602001610af3565b50505050905090810190601f168015610b385780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012090506000805b8651811015610ba057868181518110610b6e57fe5b6020026020010151831415610b9857858181518110610b8957fe5b60200260200101519150610ba0565b600101610b59565b506001600160a01b038116610beb576040805162461bcd60e51b815260206004820152600c60248201526b61646472657373207a65726f60a01b604482015290519081900360640190fd5b95945050505050565b7f714f205b2abd25bef1d06a1af944e38c113fe6160375c4e1d6d5cf28848e771955565b6000610c4683836040518060400160405280600981526020016824b7333630ba34b7b760b91b815250610ac7565b6003546040519192507f4bdd1012a7d55ed9afad8675a125e1b68c7c15f712c0f3d5cddac69c3b97980591610c86916001600160a01b0316908490611536565b60405180910390a1600380546001600160a01b0319166001600160a01b03831617905560025480610cb8575050610710565b60008167ffffffffffffffff81118015610cd157600080fd5b50604051908082528060200260200182016040528015610cfb578160200160208202803683370190505b50905060008267ffffffffffffffff81118015610d1757600080fd5b50604051908082528060200260200182016040528015610d41578160200160208202803683370190505b50905060005b83811015610e6c57600060028281548110610d5e57fe5b6000918252602080832060408051808201825293909101546001600160a01b038116808552600160a01b90910463ffffffff16928401929092528051637afadd3960e11b81529051929450610e15938c938c939263f5f5ba72926004808301939192829003018186803b158015610dd457600080fd5b505afa158015610de8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e109190810190611446565b610ac7565b848381518110610e2157fe5b60200260200101906001600160a01b031690816001600160a01b031681525050806020015163ffffffff16838381518110610e5857fe5b602090810291909101015250600101610d47565b50610e778282610e7f565b505050505050565b80518251146040518060400160405280600f81526020016e0d8cadccee8d040dad2e6dac2e8c6d608b1b81525090610eca5760405162461bcd60e51b8152600401610452919061163a565b50600a8251111560405180604001604052806008815260200167746f6f206d616e7960c01b81525090610f105760405162461bcd60e51b8152600401610452919061163a565b50600254600090815b81811015610f56576002805480610f2c57fe5b600082815260209020810160001990810180546001600160c01b0319169055019055600101610f19565b5060005b84518110156110fe57612710848281518110610f7257fe5b602002602001015111156040518060400160405280601781526020017f686967682073686172696e672070657263656e7461676500000000000000000081525090610fd05760405162461bcd60e51b8152600401610452919061163a565b5060006001600160a01b0316858281518110610fe857fe5b60200260200101516001600160a01b031614156040518060400160405280600c81526020016b06164647265737320697320360a41b8152509061103e5760405162461bcd60e51b8152600401610452919061163a565b5083818151811061104b57fe5b6020026020010151830192506002604051806040016040528087848151811061107057fe5b60200260200101516001600160a01b0316815260200186848151811061109257fe5b60209081029190910181015163ffffffff90811690925283546001808201865560009586529482902084519101805494909201516001600160a01b03199094166001600160a01b039091161763ffffffff60a01b1916600160a01b939092169290920217905501610f5a565b5060408051808201909152601f81527f73756d2073686172696e672070657263656e74616765206e6f74203130302500602082015261271083146111555760405162461bcd60e51b8152600401610452919061163a565b507f5851f041454bd72003e19484c59ec9c1bd9c6f8df07679fd1e94412fb5880b448484604051611187929190611550565b60405180910390a150505050565b604080518082019091526000808252602082015290565b600082601f8301126111bc578081fd5b813560206111d16111cc8361169a565b611676565b82815281810190858301838502870184018810156111ed578586fd5b855b85811015611214578135611202816116e4565b845292840192908401906001016111ef565b5090979650505050505050565b600082601f830112611231578081fd5b813560206112416111cc8361169a565b828152818101908583018385028701840188101561125d578586fd5b855b858110156112145781358452928401929084019060010161125f565b60006020828403121561128c578081fd5b8135611297816116e4565b9392505050565b600080604083850312156112b0578081fd5b823567ffffffffffffffff808211156112c7578283fd5b818501915085601f8301126112da578283fd5b813560206112ea6111cc8361169a565b82815281810190858301838502870184018b1015611306578788fd5b8796505b8487101561132857803583526001969096019591830191830161130a565b509650508601359250508082111561133e578283fd5b5061134b858286016111ac565b9150509250929050565b60008060408385031215611367578182fd5b823567ffffffffffffffff8082111561137e578384fd5b818501915085601f830112611391578384fd5b813560206113a16111cc8361169a565b82815281810190858301838502870184018b10156113bd578889fd5b8896505b848710156113e85780356113d4816116e4565b8352600196909601959183019183016113c1565b50965050860135925050808211156113fe578283fd5b5061134b85828601611221565b60006020828403121561141c578081fd5b813567ffffffffffffffff811115611432578182fd5b61143e84828501611221565b949350505050565b600060208284031215611457578081fd5b815167ffffffffffffffff8082111561146e578283fd5b818401915084601f830112611481578283fd5b81518181111561148d57fe5b6114a0601f8201601f1916602001611676565b91508082528560208285010111156114b6578384fd5b6114c78160208401602086016116b8565b50949350505050565b6000602082840312156114e1578081fd5b5035919050565b6000815180845260208085019450808401835b83811015611517578151875295820195908201906001016114fb565b509495945050505050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b604080825283519082018190526000906020906060840190828701845b828110156115925781516001600160a01b03168452928401929084019060010161156d565b505050838103828501526115a681866114e8565b9695505050505050565b602080825282518282018190526000919060409081850190868401855b828110156115fb57815180516001600160a01b031685528601518685015292840192908501906001016115cd565b5091979650505050505050565b60006020825261129760208301846114e8565b6001600160a01b0392909216825263ffffffff16602082015260400190565b60006020825282518060208401526116598160408501602087016116b8565b601f01601f19169190910160400192915050565b90815260200190565b60405181810167ffffffffffffffff8111828210171561169257fe5b604052919050565b600067ffffffffffffffff8211156116ae57fe5b5060209081020190565b60005b838110156116d35781810151838201526020016116bb565b83811115610ac15750506000910152565b6001600160a01b03811681146116f957600080fd5b5056fea264697066735822122002e120f8c0318659080c8b365b541c510e403c695e4ee552aabd5fe9ba086e6a64736f6c63430007060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80639d6a890f11610097578063c373a08e11610066578063c373a08e146101da578063c853b8d4146101ed578063d38bfff414610202578063ebee6fa41461021557610100565b80639d6a890f14610199578063b00c0b76146101ac578063b2d9e806146101bf578063be0522e0146101d257610100565b806360f7ac97116100d357806360f7ac9714610156578063728a5bcb1461015e57806390ac884b1461017e578063981940291461019157610100565b80631d019e34146101055780635267a15d1461012f5780635aa6e675146101445780635d36b1901461014c575b600080fd5b6101186101133660046114d0565b61021d565b60405161012692919061161b565b60405180910390f35b610137610255565b6040516101269190611522565b61013761027a565b610154610289565b005b61013761034b565b61017161016c3660046114d0565b61035a565b604051610126919061166d565b61015461018c36600461140b565b61037b565b610171610401565b6101546101a736600461127b565b61058f565b6101546101ba36600461129e565b610669565b6101546101cd366004611355565b610714565b610137610726565b6101546101e836600461127b565b610735565b6101f5610791565b60405161012691906115b0565b61015461021036600461127b565b61089b565b610171610914565b6002818154811061022d57600080fd5b6000918252602090912001546001600160a01b0381169150600160a01b900463ffffffff1682565b7f714f205b2abd25bef1d06a1af944e38c113fe6160375c4e1d6d5cf28848e77195490565b6000546001600160a01b031681565b6001546001600160a01b031633146102d8576040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd0818db185a5b585a5b9d609a1b604482015290519081900360640190fd5b600054600154604080516001600160a01b03938416815292909116602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6001546001600160a01b031681565b6005818154811061036a57600080fd5b600091825260209091200154905081565b61038361091a565b60055460005b818110156103bc57600580548061039c57fe5b600082815260208120820160001990810191909155019055600101610389565b506103c68261096d565b7fe3ad326cdb10e1201bcea3d96ccf2f5437ed71942548e5ba0aab68c9bd296fa4826040516103f59190611608565b60405180910390a15050565b60035460408051808201909152600c81526b06164647265737320697320360a41b60208201526000916001600160a01b0316908161045b5760405162461bcd60e51b8152600401610452919061163a565b60405180910390fd5b5060035460408051808201909152600e81526d37b7363c9034b7333630ba34b7b760911b6020820152906001600160a01b031633146104ad5760405162461bcd60e51b8152600401610452919061163a565b506005541561054e5760056000815481106104c457fe5b600091825260209091200154600455600554600181111561052b5760005b6001820381101561052957600581600101815481106104fd57fe5b90600052602060002001546005828154811061051557fe5b6000918252602090912001556001016104e2565b505b600580548061053657fe5b60019003818190600052602060002001600090559055505b7fc46384622db26f8a6509e51f7cbe387b3fa773448f19fc9f070fcdc984cffb8e60045460405161057f919061166d565b60405180910390a1505060045490565b600154600160a01b900460ff16156105e5576040805162461bcd60e51b8152602060048201526014602482015273696e697469616c6973656420213d2066616c736560601b604482015290519081900360640190fd5b6001805460ff60a01b1916600160a01b179055600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b610671610255565b6001600160a01b0316336001600160a01b0316146106cd576040805162461bcd60e51b815260206004820152601460248201527337b7363c9030b2323932b9b9903ab83230ba32b960611b604482015290519081900360640190fd5b61070661070183836040518060400160405280600e81526020016d20b2323932b9b9aab83230ba32b960911b815250610ac7565b610bf4565b6107108282610c18565b5050565b61071c61091a565b6107108282610e7f565b6003546001600160a01b031681565b61073d61091a565b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f1f95fb40be3a947982072902a887b521248d1d8931a39eb38f84f4d6fd758b699181900360200190a150565b6002546060908067ffffffffffffffff811180156107ae57600080fd5b506040519080825280602002602001820160405280156107e857816020015b6107d5611195565b8152602001906001900390816107cd5790505b50915060005b81811015610896576002818154811061080357fe5b9060005260206000200160000160149054906101000a900463ffffffff1663ffffffff1683828151811061083357fe5b602002602001015160200181815250506002818154811061085057fe5b60009182526020909120015483516001600160a01b039091169084908390811061087657fe5b60209081029190910101516001600160a01b0390911690526001016107ee565b505090565b6108a361091a565b600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b60045481565b6000546001600160a01b0316331461096b576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b565b600a8151111560405180604001604052806008815260200167746f6f206d616e7960c01b815250906109b25760405162461bcd60e51b8152600401610452919061163a565b50805160045460005b82811015610ac157818482815181106109d057fe5b6020026020010151111580156109f9575060008482815181106109ef57fe5b6020026020010151115b8015610a1d5750600a61271004848281518110610a1257fe5b602002602001015111155b6040518060400160405280601e81526020017f616e6e75616c20696e666c6174696f6e206f7574206f6620626f756e6473000081525090610a715760405162461bcd60e51b8152600401610452919061163a565b50838181518110610a7e57fe5b602002602001015191506005848281518110610a9657fe5b60209081029190910181015182546001818101855560009485529290932090920191909155016109bb565b50505050565b600080826040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015610b0b578181015183820152602001610af3565b50505050905090810190601f168015610b385780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012090506000805b8651811015610ba057868181518110610b6e57fe5b6020026020010151831415610b9857858181518110610b8957fe5b60200260200101519150610ba0565b600101610b59565b506001600160a01b038116610beb576040805162461bcd60e51b815260206004820152600c60248201526b61646472657373207a65726f60a01b604482015290519081900360640190fd5b95945050505050565b7f714f205b2abd25bef1d06a1af944e38c113fe6160375c4e1d6d5cf28848e771955565b6000610c4683836040518060400160405280600981526020016824b7333630ba34b7b760b91b815250610ac7565b6003546040519192507f4bdd1012a7d55ed9afad8675a125e1b68c7c15f712c0f3d5cddac69c3b97980591610c86916001600160a01b0316908490611536565b60405180910390a1600380546001600160a01b0319166001600160a01b03831617905560025480610cb8575050610710565b60008167ffffffffffffffff81118015610cd157600080fd5b50604051908082528060200260200182016040528015610cfb578160200160208202803683370190505b50905060008267ffffffffffffffff81118015610d1757600080fd5b50604051908082528060200260200182016040528015610d41578160200160208202803683370190505b50905060005b83811015610e6c57600060028281548110610d5e57fe5b6000918252602080832060408051808201825293909101546001600160a01b038116808552600160a01b90910463ffffffff16928401929092528051637afadd3960e11b81529051929450610e15938c938c939263f5f5ba72926004808301939192829003018186803b158015610dd457600080fd5b505afa158015610de8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e109190810190611446565b610ac7565b848381518110610e2157fe5b60200260200101906001600160a01b031690816001600160a01b031681525050806020015163ffffffff16838381518110610e5857fe5b602090810291909101015250600101610d47565b50610e778282610e7f565b505050505050565b80518251146040518060400160405280600f81526020016e0d8cadccee8d040dad2e6dac2e8c6d608b1b81525090610eca5760405162461bcd60e51b8152600401610452919061163a565b50600a8251111560405180604001604052806008815260200167746f6f206d616e7960c01b81525090610f105760405162461bcd60e51b8152600401610452919061163a565b50600254600090815b81811015610f56576002805480610f2c57fe5b600082815260209020810160001990810180546001600160c01b0319169055019055600101610f19565b5060005b84518110156110fe57612710848281518110610f7257fe5b602002602001015111156040518060400160405280601781526020017f686967682073686172696e672070657263656e7461676500000000000000000081525090610fd05760405162461bcd60e51b8152600401610452919061163a565b5060006001600160a01b0316858281518110610fe857fe5b60200260200101516001600160a01b031614156040518060400160405280600c81526020016b06164647265737320697320360a41b8152509061103e5760405162461bcd60e51b8152600401610452919061163a565b5083818151811061104b57fe5b6020026020010151830192506002604051806040016040528087848151811061107057fe5b60200260200101516001600160a01b0316815260200186848151811061109257fe5b60209081029190910181015163ffffffff90811690925283546001808201865560009586529482902084519101805494909201516001600160a01b03199094166001600160a01b039091161763ffffffff60a01b1916600160a01b939092169290920217905501610f5a565b5060408051808201909152601f81527f73756d2073686172696e672070657263656e74616765206e6f74203130302500602082015261271083146111555760405162461bcd60e51b8152600401610452919061163a565b507f5851f041454bd72003e19484c59ec9c1bd9c6f8df07679fd1e94412fb5880b448484604051611187929190611550565b60405180910390a150505050565b604080518082019091526000808252602082015290565b600082601f8301126111bc578081fd5b813560206111d16111cc8361169a565b611676565b82815281810190858301838502870184018810156111ed578586fd5b855b85811015611214578135611202816116e4565b845292840192908401906001016111ef565b5090979650505050505050565b600082601f830112611231578081fd5b813560206112416111cc8361169a565b828152818101908583018385028701840188101561125d578586fd5b855b858110156112145781358452928401929084019060010161125f565b60006020828403121561128c578081fd5b8135611297816116e4565b9392505050565b600080604083850312156112b0578081fd5b823567ffffffffffffffff808211156112c7578283fd5b818501915085601f8301126112da578283fd5b813560206112ea6111cc8361169a565b82815281810190858301838502870184018b1015611306578788fd5b8796505b8487101561132857803583526001969096019591830191830161130a565b509650508601359250508082111561133e578283fd5b5061134b858286016111ac565b9150509250929050565b60008060408385031215611367578182fd5b823567ffffffffffffffff8082111561137e578384fd5b818501915085601f830112611391578384fd5b813560206113a16111cc8361169a565b82815281810190858301838502870184018b10156113bd578889fd5b8896505b848710156113e85780356113d4816116e4565b8352600196909601959183019183016113c1565b50965050860135925050808211156113fe578283fd5b5061134b85828601611221565b60006020828403121561141c578081fd5b813567ffffffffffffffff811115611432578182fd5b61143e84828501611221565b949350505050565b600060208284031215611457578081fd5b815167ffffffffffffffff8082111561146e578283fd5b818401915084601f830112611481578283fd5b81518181111561148d57fe5b6114a0601f8201601f1916602001611676565b91508082528560208285010111156114b6578384fd5b6114c78160208401602086016116b8565b50949350505050565b6000602082840312156114e1578081fd5b5035919050565b6000815180845260208085019450808401835b83811015611517578151875295820195908201906001016114fb565b509495945050505050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b604080825283519082018190526000906020906060840190828701845b828110156115925781516001600160a01b03168452928401929084019060010161156d565b505050838103828501526115a681866114e8565b9695505050505050565b602080825282518282018190526000919060409081850190868401855b828110156115fb57815180516001600160a01b031685528601518685015292840192908501906001016115cd565b5091979650505050505050565b60006020825261129760208301846114e8565b6001600160a01b0392909216825263ffffffff16602082015260400190565b60006020825282518060208401526116598160408501602087016116b8565b601f01601f19169190910160400192915050565b90815260200190565b60405181810167ffffffffffffffff8111828210171561169257fe5b604052919050565b600067ffffffffffffffff8211156116ae57fe5b5060209081020190565b60005b838110156116d35781810151838201526020016116bb565b83811115610ac15750506000910152565b6001600160a01b03811681146116f957600080fd5b5056fea264697066735822122002e120f8c0318659080c8b365b541c510e403c695e4ee552aabd5fe9ba086e6a64736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
