{
  "_format": "hh-sol-artifact-1",
  "contractName": "DxDaoSchemeConstraints",
  "sourceName": "contracts/schemes/DxDaoSchemeConstraints.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "_contractsAddresses",
          "type": "address[]"
        },
        {
          "indexed": false,
          "internalType": "bool[]",
          "name": "_contractsWhitelisted",
          "type": "bool[]"
        }
      ],
      "name": "UpdatedContractsWhitelist",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_periodLimitWei",
          "type": "uint256"
        }
      ],
      "name": "UpdatedPeriodLimitWei",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "_tokensAddresses",
          "type": "address[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "_tokensPeriodLimits",
          "type": "uint256[]"
        }
      ],
      "name": "UpdatedPeriodLimitsTokens",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "avatar",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "contractsWhiteList",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "contractsWhiteListMap",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "descriptionHash",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "genericSchemeMultiCall",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getContractsWhiteList",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "initialTimestamp",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_avatar",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_periodSize",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_periodLimitWei",
          "type": "uint256"
        },
        {
          "internalType": "address[]",
          "name": "_periodLimitTokensAddresses",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_periodLimitTokensAmounts",
          "type": "uint256[]"
        },
        {
          "internalType": "address[]",
          "name": "_contractsWhiteList",
          "type": "address[]"
        },
        {
          "internalType": "address",
          "name": "_genericSchemeMultiCall",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_contractsToCall",
          "type": "address[]"
        },
        {
          "internalType": "bytes[]",
          "name": "_callsData",
          "type": "bytes[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_values",
          "type": "uint256[]"
        },
        {
          "internalType": "contract Avatar",
          "name": "",
          "type": "address"
        }
      ],
      "name": "isAllowedToCall",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_contractsToCall",
          "type": "address[]"
        },
        {
          "internalType": "bytes[]",
          "name": "_callsData",
          "type": "bytes[]"
        },
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        },
        {
          "internalType": "contract Avatar",
          "name": "",
          "type": "address"
        }
      ],
      "name": "isAllowedToPropose",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "observationIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "periodLimitToken",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "periodLimitWei",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "periodSize",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "periodSpendingToken",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "periodSpendingWei",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_contractsAddresses",
          "type": "address[]"
        },
        {
          "internalType": "bool[]",
          "name": "_contractsWhitelisted",
          "type": "bool[]"
        }
      ],
      "name": "updateContractsWhitelist",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_periodLimitWei",
          "type": "uint256"
        }
      ],
      "name": "updatePeriodLimitWei",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_tokensAddresses",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_tokensPeriodLimits",
          "type": "uint256[]"
        }
      ],
      "name": "updatePeriodLimitsTokens",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506118c1806100206000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806385dcee93116100ad578063d6d1417111610071578063d6d141711461023a578063da6f0d9b14610242578063e4463eb214610255578063e5e48a341461025d578063f743327b1461027057610121565b806385dcee93146101e45780639836bbd5146101f9578063b7f592361461020c578063bcdedfdb1461021f578063d6cf0c371461023257610121565b80635fa4a6cd116100f45780635fa4a6cd1461018157806364ab2de9146101965780636b401b3d146101b65780636c39ed27146101be57806378d8b59e146101d157610121565b80633590432a146101265780633b7fdf09146101445780635a7a3e87146101595780635aef7de61461016c575b600080fd5b61012e610283565b60405161013b91906117a0565b60405180910390f35b61014c610289565b60405161013b91906116a9565b61012e610167366004611168565b6102ec565b6101746102fe565b60405161013b9190611643565b61019461018f366004611168565b61030d565b005b6101a96101a4366004611094565b610380565b60405161013b91906116c1565b610174610701565b6101946101cc366004610f33565b610710565b61012e6101df366004611186565b6108bf565b6101ec6108dc565b60405161013b91906116cf565b610194610207366004611024565b610969565b61017461021a366004611168565b610a5b565b61019461022d366004611024565b610a82565b61012e610b82565b61012e610b99565b6101a9610250366004611094565b610b9f565b61012e610db6565b6101a961026b366004610f0d565b610dbc565b61012e61027e366004610f0d565b610dd1565b60065481565b606060008054806020026020016040519081016040528092919081815260200182805480156102e157602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102c3575b505050505090505b90565b60096020526000908152604090205481565b6002546001600160a01b031681565b6002546001600160a01b031633146103405760405162461bcd60e51b815260040161033790611720565b60405180910390fd5b60068190556040517f42607d262cbbcb6bf6f321b617595950a50ec4333abf7481524fcd78835185c4906103759083906117a0565b60405180910390a150565b6003546000906001600160a01b031633146103ad5760405162461bcd60e51b8152600401610337906116e0565b60006103b7610b82565b90506000805b8981101561069f57600a60008c8c848181106103d557fe5b90506020020160206103ea9190810190610f0d565b6001600160a01b0316815260208101919091526040016000205460ff166104235760405162461bcd60e51b815260040161033790611790565b61044887878381811061043257fe5b9050602002013583610de390919063ffffffff16565b9150606089898381811061045857fe5b602002820190508035601e193684900301811261047457600080fd5b9091016020810191503567ffffffffffffffff81111561049357600080fd5b368190038213156104a357600080fd5b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093945063095ea7b360e01b9392506104e9915050565b1a60f81b6001600160f81b0319168160008151811061050457fe5b01602001516001600160f81b03191614801561054157508051602f60f91b908290600190811061053057fe5b01602001516001600160f81b031916145b801561056e5750805160a760f81b908290600290811061055d57fe5b01602001516001600160f81b031916145b801561059b5750805160b360f81b908290600390811061058a57fe5b01602001516001600160f81b031916145b156106965760008060008e8e868181106105b157fe5b90506020020160206105c69190810190610f0d565b602485015160448601516001600160a01b0382166000908152600a602052604090205490955090935090915060ff166106115760405162461bcd60e51b815260040161033790611770565b60008781526008602090815260408083206001600160a01b0385168452909152902054610644908463ffffffff610de316565b60008881526008602090815260408083206001600160a01b03861684528083528184208590556007835292205491905210156106925760405162461bcd60e51b815260040161033790611740565b5050505b506001016103bd565b506000828152600960205260409020546106bf908263ffffffff610de316565b600083815260096020526040902081905560065410156106f15760405162461bcd60e51b8152600401610337906116f0565b5060019998505050505050505050565b6003546001600160a01b031681565b600454156107305760405162461bcd60e51b815260040161033790611730565b600089116107505760405162461bcd60e51b815260040161033790611760565b85841461076f5760405162461bcd60e51b815260040161033790611750565b6001600160a01b0381166107955760405162461bcd60e51b815260040161033790611780565b60058990556006889055600280546001600160a01b0319166001600160a01b038c161790554260045560005b82811015610820576001600a60008686858181106107db57fe5b90506020020160206107f09190810190610f0d565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556001016107c1565b5060005b848110156108865785858281811061083857fe5b90506020020135600760008a8a8581811061084f57fe5b90506020020160206108649190810190610f0d565b6001600160a01b03168152602081019190915260400160002055600101610824565b5061089360008484610e11565b50600380546001600160a01b0319166001600160a01b0392909216919091179055505050505050505050565b600860209081526000928352604080842090915290825290205481565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156109615780601f1061093657610100808354040283529160200191610961565b820191906000526020600020905b81548152906001019060200180831161094457829003601f168201915b505050505081565b6002546001600160a01b031633146109935760405162461bcd60e51b815260040161033790611720565b8281146109b25760405162461bcd60e51b815260040161033790611710565b60005b83811015610a17578282828181106109c957fe5b90506020020135600760008787858181106109e057fe5b90506020020160206109f59190810190610f0d565b6001600160a01b031681526020810191909152604001600020556001016109b5565b507fba10d0b2427adac50e6f7251d800b6df7b39ba33c5e2ec7d6843b0eed257d35584848484604051610a4d9493929190611682565b60405180910390a150505050565b60008181548110610a6857fe5b6000918252602090912001546001600160a01b0316905081565b6002546001600160a01b03163314610aac5760405162461bcd60e51b815260040161033790611720565b828114610acb5760405162461bcd60e51b815260040161033790611750565b60005b83811015610b4c57828282818110610ae257fe5b9050602002016020610af7919081019061114a565b600a6000878785818110610b0757fe5b9050602002016020610b1c9190810190610f0d565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055600101610ace565b507f46c4f9ef59b2c1ca5c52a16fbf2268b832760b5c629322e1479e134594a1d7ee84848484604051610a4d9493929190611651565b6000600554600454420381610b9357fe5b04905090565b60045481565b6000805b87811015610da757600a60008a8a84818110610bbb57fe5b9050602002016020610bd09190810190610f0d565b6001600160a01b0316815260208101919091526040016000205460ff16610c095760405162461bcd60e51b815260040161033790611790565b6060878783818110610c1757fe5b602002820190508035601e1936849003018112610c3357600080fd5b9091016020810191503567ffffffffffffffff811115610c5257600080fd5b36819003821315610c6257600080fd5b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093945063095ea7b360e01b939250610ca8915050565b1a60f81b6001600160f81b03191681600081518110610cc357fe5b01602001516001600160f81b031916148015610d0057508051602f60f91b9082906001908110610cef57fe5b01602001516001600160f81b031916145b8015610d2d5750805160a760f81b9082906002908110610d1c57fe5b01602001516001600160f81b031916145b8015610d5a5750805160b360f81b9082906003908110610d4957fe5b01602001516001600160f81b031916145b15610d9e5760248101516001600160a01b0381166000908152600a602052604090205460ff16610d9c5760405162461bcd60e51b815260040161033790611770565b505b50600101610ba3565b50600198975050505050505050565b60055481565b600a6020526000908152604090205460ff1681565b60076020526000908152604090205481565b600082820183811015610e085760405162461bcd60e51b815260040161033790611700565b90505b92915050565b828054828255906000526020600020908101928215610e64579160200282015b82811115610e645781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190610e31565b50610e70929150610e74565b5090565b6102e991905b80821115610e705780546001600160a01b0319168155600101610e7a565b8035610e0b8161184c565b60008083601f840112610eb557600080fd5b50813567ffffffffffffffff811115610ecd57600080fd5b602083019150836020820283011115610ee557600080fd5b9250929050565b8035610e0b81611863565b8035610e0b8161186c565b8035610e0b81611875565b600060208284031215610f1f57600080fd5b6000610f2b8484610e98565b949350505050565b60008060008060008060008060008060e08b8d031215610f5257600080fd5b6000610f5e8d8d610e98565b9a50506020610f6f8d828e01610f02565b9950506040610f808d828e01610f02565b98505060608b013567ffffffffffffffff811115610f9d57600080fd5b610fa98d828e01610ea3565b975097505060808b013567ffffffffffffffff811115610fc857600080fd5b610fd48d828e01610ea3565b955095505060a08b013567ffffffffffffffff811115610ff357600080fd5b610fff8d828e01610ea3565b935093505060c06110128d828e01610e98565b9150509295989b9194979a5092959850565b6000806000806040858703121561103a57600080fd5b843567ffffffffffffffff81111561105157600080fd5b61105d87828801610ea3565b9450945050602085013567ffffffffffffffff81111561107c57600080fd5b61108887828801610ea3565b95989497509550505050565b60008060008060008060006080888a0312156110af57600080fd5b873567ffffffffffffffff8111156110c657600080fd5b6110d28a828b01610ea3565b9750975050602088013567ffffffffffffffff8111156110f157600080fd5b6110fd8a828b01610ea3565b9550955050604088013567ffffffffffffffff81111561111c57600080fd5b6111288a828b01610ea3565b9350935050606061113b8a828b01610ef7565b91505092959891949750929550565b60006020828403121561115c57600080fd5b6000610f2b8484610eec565b60006020828403121561117a57600080fd5b6000610f2b8484610f02565b6000806040838503121561119957600080fd5b60006111a58585610f02565b92505060206111b685828601610e98565b9150509250929050565b60006111cc83836111e0565b505060200190565b60006111cc838361131b565b6111e9816117df565b82525050565b60006111fb83856117b8565b9350611206826102e9565b8060005b8581101561123c5761121c82846117c1565b61122688826111c0565b9750611231836117ae565b92505060010161120a565b509495945050505050565b6000611252826117b4565b61125c81856117b8565b9350611267836117ae565b8060005b8381101561123c57815161127f88826111c0565b975061128a836117ae565b92505060010161126b565b60006112a183856117b8565b93506112ac826102e9565b8060005b8581101561123c576112c282846117d0565b6112cc88826111d4565b97506112d7836117ae565b9250506001016112b0565b60006112ee83856117b8565b93506001600160fb1b0383111561130457600080fd5b602083029250611315838584611806565b50500190565b6111e9816117ea565b600061132f826117b4565b61133981856117b8565b9350611349818560208601611812565b61135281611842565b9093019392505050565b6000611369601b836117b8565b7f6f6e6c792067656e65726963536368656d654d756c746943616c6c0000000000815260200192915050565b60006113a26019836117b8565b7f706572696f645370656e64696e67576569457863656564656400000000000000815260200192915050565b60006113db601b836117b8565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006114146022836117b8565b7f696e76616c6964206c656e677468205f746f6b656e73506572696f644c696d69815261747360f01b602082015260400192915050565b60006114586015836117b8565b7431b0b63632b91036bab9ba1031329030bb30ba30b960591b815260200192915050565b60006114896017836117b8565b7f63616e6e6f7420696e697469616c697a65207477696365000000000000000000815260200192915050565b60006114c2601c836117b8565b7f706572696f645370656e64696e67546f6b656e73457863656564656400000000815260200192915050565b60006114fb602a836117b8565b7f696e76616c6964206c656e677468205f706572696f644c696d6974546f6b656e8152697341646472657373657360b01b602082015260400192915050565b60006115476025836117b8565b7f70726572696f642073697a652073686f756c6420626520677265617465722074815264068616e20360dc1b602082015260400192915050565b600061158e6020836117b8565b7f7370656e64657220636f6e7472616374206e6f742077686974656c6973746564815260200192915050565b60006115c76025836117b8565b7f67656e65726963536368656d654d756c746943616c6c2063616e6e6f74206265815264207a65726f60d81b602082015260400192915050565b600061160e6018836117b8565b7f636f6e7472616374206e6f742077686974656c69737465640000000000000000815260200192915050565b6111e9816102e9565b60208101610e0b82846111e0565b604080825281016116638186886111ef565b90508181036020830152611678818486611295565b9695505050505050565b604080825281016116948186886111ef565b905081810360208301526116788184866112e2565b602080825281016116ba8184611247565b9392505050565b60208101610e0b828461131b565b602080825281016116ba8184611324565b60208082528101610e0b8161135c565b60208082528101610e0b81611395565b60208082528101610e0b816113ce565b60208082528101610e0b81611407565b60208082528101610e0b8161144b565b60208082528101610e0b8161147c565b60208082528101610e0b816114b5565b60208082528101610e0b816114ee565b60208082528101610e0b8161153a565b60208082528101610e0b81611581565b60208082528101610e0b816115ba565b60208082528101610e0b81611601565b60208101610e0b828461163a565b60200190565b5190565b90815260200190565b60006116ba6020840184610e98565b60006116ba6020840184610eec565b6000610e0b826117fa565b151590565b6000610e0b826117df565b6001600160a01b031690565b82818337506000910152565b60005b8381101561182d578181015183820152602001611815565b8381111561183c576000848401525b50505050565b601f01601f191690565b611855816117df565b811461186057600080fd5b50565b611855816117ea565b611855816117ef565b611855816102e956fea365627a7a72315820a74cff9df40b6eda0095c04c8c4cf984034fd9a8ef7cdbabb13bc2b2acd3ba816c6578706572696d656e74616cf564736f6c63430005110040",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101215760003560e01c806385dcee93116100ad578063d6d1417111610071578063d6d141711461023a578063da6f0d9b14610242578063e4463eb214610255578063e5e48a341461025d578063f743327b1461027057610121565b806385dcee93146101e45780639836bbd5146101f9578063b7f592361461020c578063bcdedfdb1461021f578063d6cf0c371461023257610121565b80635fa4a6cd116100f45780635fa4a6cd1461018157806364ab2de9146101965780636b401b3d146101b65780636c39ed27146101be57806378d8b59e146101d157610121565b80633590432a146101265780633b7fdf09146101445780635a7a3e87146101595780635aef7de61461016c575b600080fd5b61012e610283565b60405161013b91906117a0565b60405180910390f35b61014c610289565b60405161013b91906116a9565b61012e610167366004611168565b6102ec565b6101746102fe565b60405161013b9190611643565b61019461018f366004611168565b61030d565b005b6101a96101a4366004611094565b610380565b60405161013b91906116c1565b610174610701565b6101946101cc366004610f33565b610710565b61012e6101df366004611186565b6108bf565b6101ec6108dc565b60405161013b91906116cf565b610194610207366004611024565b610969565b61017461021a366004611168565b610a5b565b61019461022d366004611024565b610a82565b61012e610b82565b61012e610b99565b6101a9610250366004611094565b610b9f565b61012e610db6565b6101a961026b366004610f0d565b610dbc565b61012e61027e366004610f0d565b610dd1565b60065481565b606060008054806020026020016040519081016040528092919081815260200182805480156102e157602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102c3575b505050505090505b90565b60096020526000908152604090205481565b6002546001600160a01b031681565b6002546001600160a01b031633146103405760405162461bcd60e51b815260040161033790611720565b60405180910390fd5b60068190556040517f42607d262cbbcb6bf6f321b617595950a50ec4333abf7481524fcd78835185c4906103759083906117a0565b60405180910390a150565b6003546000906001600160a01b031633146103ad5760405162461bcd60e51b8152600401610337906116e0565b60006103b7610b82565b90506000805b8981101561069f57600a60008c8c848181106103d557fe5b90506020020160206103ea9190810190610f0d565b6001600160a01b0316815260208101919091526040016000205460ff166104235760405162461bcd60e51b815260040161033790611790565b61044887878381811061043257fe5b9050602002013583610de390919063ffffffff16565b9150606089898381811061045857fe5b602002820190508035601e193684900301811261047457600080fd5b9091016020810191503567ffffffffffffffff81111561049357600080fd5b368190038213156104a357600080fd5b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093945063095ea7b360e01b9392506104e9915050565b1a60f81b6001600160f81b0319168160008151811061050457fe5b01602001516001600160f81b03191614801561054157508051602f60f91b908290600190811061053057fe5b01602001516001600160f81b031916145b801561056e5750805160a760f81b908290600290811061055d57fe5b01602001516001600160f81b031916145b801561059b5750805160b360f81b908290600390811061058a57fe5b01602001516001600160f81b031916145b156106965760008060008e8e868181106105b157fe5b90506020020160206105c69190810190610f0d565b602485015160448601516001600160a01b0382166000908152600a602052604090205490955090935090915060ff166106115760405162461bcd60e51b815260040161033790611770565b60008781526008602090815260408083206001600160a01b0385168452909152902054610644908463ffffffff610de316565b60008881526008602090815260408083206001600160a01b03861684528083528184208590556007835292205491905210156106925760405162461bcd60e51b815260040161033790611740565b5050505b506001016103bd565b506000828152600960205260409020546106bf908263ffffffff610de316565b600083815260096020526040902081905560065410156106f15760405162461bcd60e51b8152600401610337906116f0565b5060019998505050505050505050565b6003546001600160a01b031681565b600454156107305760405162461bcd60e51b815260040161033790611730565b600089116107505760405162461bcd60e51b815260040161033790611760565b85841461076f5760405162461bcd60e51b815260040161033790611750565b6001600160a01b0381166107955760405162461bcd60e51b815260040161033790611780565b60058990556006889055600280546001600160a01b0319166001600160a01b038c161790554260045560005b82811015610820576001600a60008686858181106107db57fe5b90506020020160206107f09190810190610f0d565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556001016107c1565b5060005b848110156108865785858281811061083857fe5b90506020020135600760008a8a8581811061084f57fe5b90506020020160206108649190810190610f0d565b6001600160a01b03168152602081019190915260400160002055600101610824565b5061089360008484610e11565b50600380546001600160a01b0319166001600160a01b0392909216919091179055505050505050505050565b600860209081526000928352604080842090915290825290205481565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156109615780601f1061093657610100808354040283529160200191610961565b820191906000526020600020905b81548152906001019060200180831161094457829003601f168201915b505050505081565b6002546001600160a01b031633146109935760405162461bcd60e51b815260040161033790611720565b8281146109b25760405162461bcd60e51b815260040161033790611710565b60005b83811015610a17578282828181106109c957fe5b90506020020135600760008787858181106109e057fe5b90506020020160206109f59190810190610f0d565b6001600160a01b031681526020810191909152604001600020556001016109b5565b507fba10d0b2427adac50e6f7251d800b6df7b39ba33c5e2ec7d6843b0eed257d35584848484604051610a4d9493929190611682565b60405180910390a150505050565b60008181548110610a6857fe5b6000918252602090912001546001600160a01b0316905081565b6002546001600160a01b03163314610aac5760405162461bcd60e51b815260040161033790611720565b828114610acb5760405162461bcd60e51b815260040161033790611750565b60005b83811015610b4c57828282818110610ae257fe5b9050602002016020610af7919081019061114a565b600a6000878785818110610b0757fe5b9050602002016020610b1c9190810190610f0d565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055600101610ace565b507f46c4f9ef59b2c1ca5c52a16fbf2268b832760b5c629322e1479e134594a1d7ee84848484604051610a4d9493929190611651565b6000600554600454420381610b9357fe5b04905090565b60045481565b6000805b87811015610da757600a60008a8a84818110610bbb57fe5b9050602002016020610bd09190810190610f0d565b6001600160a01b0316815260208101919091526040016000205460ff16610c095760405162461bcd60e51b815260040161033790611790565b6060878783818110610c1757fe5b602002820190508035601e1936849003018112610c3357600080fd5b9091016020810191503567ffffffffffffffff811115610c5257600080fd5b36819003821315610c6257600080fd5b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093945063095ea7b360e01b939250610ca8915050565b1a60f81b6001600160f81b03191681600081518110610cc357fe5b01602001516001600160f81b031916148015610d0057508051602f60f91b9082906001908110610cef57fe5b01602001516001600160f81b031916145b8015610d2d5750805160a760f81b9082906002908110610d1c57fe5b01602001516001600160f81b031916145b8015610d5a5750805160b360f81b9082906003908110610d4957fe5b01602001516001600160f81b031916145b15610d9e5760248101516001600160a01b0381166000908152600a602052604090205460ff16610d9c5760405162461bcd60e51b815260040161033790611770565b505b50600101610ba3565b50600198975050505050505050565b60055481565b600a6020526000908152604090205460ff1681565b60076020526000908152604090205481565b600082820183811015610e085760405162461bcd60e51b815260040161033790611700565b90505b92915050565b828054828255906000526020600020908101928215610e64579160200282015b82811115610e645781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190610e31565b50610e70929150610e74565b5090565b6102e991905b80821115610e705780546001600160a01b0319168155600101610e7a565b8035610e0b8161184c565b60008083601f840112610eb557600080fd5b50813567ffffffffffffffff811115610ecd57600080fd5b602083019150836020820283011115610ee557600080fd5b9250929050565b8035610e0b81611863565b8035610e0b8161186c565b8035610e0b81611875565b600060208284031215610f1f57600080fd5b6000610f2b8484610e98565b949350505050565b60008060008060008060008060008060e08b8d031215610f5257600080fd5b6000610f5e8d8d610e98565b9a50506020610f6f8d828e01610f02565b9950506040610f808d828e01610f02565b98505060608b013567ffffffffffffffff811115610f9d57600080fd5b610fa98d828e01610ea3565b975097505060808b013567ffffffffffffffff811115610fc857600080fd5b610fd48d828e01610ea3565b955095505060a08b013567ffffffffffffffff811115610ff357600080fd5b610fff8d828e01610ea3565b935093505060c06110128d828e01610e98565b9150509295989b9194979a5092959850565b6000806000806040858703121561103a57600080fd5b843567ffffffffffffffff81111561105157600080fd5b61105d87828801610ea3565b9450945050602085013567ffffffffffffffff81111561107c57600080fd5b61108887828801610ea3565b95989497509550505050565b60008060008060008060006080888a0312156110af57600080fd5b873567ffffffffffffffff8111156110c657600080fd5b6110d28a828b01610ea3565b9750975050602088013567ffffffffffffffff8111156110f157600080fd5b6110fd8a828b01610ea3565b9550955050604088013567ffffffffffffffff81111561111c57600080fd5b6111288a828b01610ea3565b9350935050606061113b8a828b01610ef7565b91505092959891949750929550565b60006020828403121561115c57600080fd5b6000610f2b8484610eec565b60006020828403121561117a57600080fd5b6000610f2b8484610f02565b6000806040838503121561119957600080fd5b60006111a58585610f02565b92505060206111b685828601610e98565b9150509250929050565b60006111cc83836111e0565b505060200190565b60006111cc838361131b565b6111e9816117df565b82525050565b60006111fb83856117b8565b9350611206826102e9565b8060005b8581101561123c5761121c82846117c1565b61122688826111c0565b9750611231836117ae565b92505060010161120a565b509495945050505050565b6000611252826117b4565b61125c81856117b8565b9350611267836117ae565b8060005b8381101561123c57815161127f88826111c0565b975061128a836117ae565b92505060010161126b565b60006112a183856117b8565b93506112ac826102e9565b8060005b8581101561123c576112c282846117d0565b6112cc88826111d4565b97506112d7836117ae565b9250506001016112b0565b60006112ee83856117b8565b93506001600160fb1b0383111561130457600080fd5b602083029250611315838584611806565b50500190565b6111e9816117ea565b600061132f826117b4565b61133981856117b8565b9350611349818560208601611812565b61135281611842565b9093019392505050565b6000611369601b836117b8565b7f6f6e6c792067656e65726963536368656d654d756c746943616c6c0000000000815260200192915050565b60006113a26019836117b8565b7f706572696f645370656e64696e67576569457863656564656400000000000000815260200192915050565b60006113db601b836117b8565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b60006114146022836117b8565b7f696e76616c6964206c656e677468205f746f6b656e73506572696f644c696d69815261747360f01b602082015260400192915050565b60006114586015836117b8565b7431b0b63632b91036bab9ba1031329030bb30ba30b960591b815260200192915050565b60006114896017836117b8565b7f63616e6e6f7420696e697469616c697a65207477696365000000000000000000815260200192915050565b60006114c2601c836117b8565b7f706572696f645370656e64696e67546f6b656e73457863656564656400000000815260200192915050565b60006114fb602a836117b8565b7f696e76616c6964206c656e677468205f706572696f644c696d6974546f6b656e8152697341646472657373657360b01b602082015260400192915050565b60006115476025836117b8565b7f70726572696f642073697a652073686f756c6420626520677265617465722074815264068616e20360dc1b602082015260400192915050565b600061158e6020836117b8565b7f7370656e64657220636f6e7472616374206e6f742077686974656c6973746564815260200192915050565b60006115c76025836117b8565b7f67656e65726963536368656d654d756c746943616c6c2063616e6e6f74206265815264207a65726f60d81b602082015260400192915050565b600061160e6018836117b8565b7f636f6e7472616374206e6f742077686974656c69737465640000000000000000815260200192915050565b6111e9816102e9565b60208101610e0b82846111e0565b604080825281016116638186886111ef565b90508181036020830152611678818486611295565b9695505050505050565b604080825281016116948186886111ef565b905081810360208301526116788184866112e2565b602080825281016116ba8184611247565b9392505050565b60208101610e0b828461131b565b602080825281016116ba8184611324565b60208082528101610e0b8161135c565b60208082528101610e0b81611395565b60208082528101610e0b816113ce565b60208082528101610e0b81611407565b60208082528101610e0b8161144b565b60208082528101610e0b8161147c565b60208082528101610e0b816114b5565b60208082528101610e0b816114ee565b60208082528101610e0b8161153a565b60208082528101610e0b81611581565b60208082528101610e0b816115ba565b60208082528101610e0b81611601565b60208101610e0b828461163a565b60200190565b5190565b90815260200190565b60006116ba6020840184610e98565b60006116ba6020840184610eec565b6000610e0b826117fa565b151590565b6000610e0b826117df565b6001600160a01b031690565b82818337506000910152565b60005b8381101561182d578181015183820152602001611815565b8381111561183c576000848401525b50505050565b601f01601f191690565b611855816117df565b811461186057600080fd5b50565b611855816117ea565b611855816117ef565b611855816102e956fea365627a7a72315820a74cff9df40b6eda0095c04c8c4cf984034fd9a8ef7cdbabb13bc2b2acd3ba816c6578706572696d656e74616cf564736f6c63430005110040",
  "linkReferences": {},
  "deployedLinkReferences": {}
}