85 txs
129 calls
constructor
constructor(address[] propietariosIniciales)
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
aprobacionesPropuestas
viewfunction aprobacionesPropuestas(uint256, address) view returns (bool)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
conteoPropietarios
viewfunction conteoPropietarios() view returns (uint256)
conteoPropuestas
viewfunction conteoPropuestas() view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
DOMAIN_SEPARATOR
viewfunction DOMAIN_SEPARATOR() view returns (bytes32)
emergencia
viewfunction emergencia(address) view returns (bool)
esPropietario
viewfunction esPropietario(address) view returns (bool)
gestores
viewfunction gestores(address) view returns (bool)
listaBlanca
viewfunction listaBlanca(address) view returns (bool)
listaBlancaActiva
viewfunction listaBlancaActiva() view returns (bool)
listaNegra
viewfunction listaNegra(address) view returns (bool)
listaNegraActiva
viewfunction listaNegraActiva() view returns (bool)
name
viewfunction name() view returns (string)
nonces
viewfunction nonces(address) view returns (uint256)
paused
viewfunction paused() view returns (bool)
PERMIT_TYPEHASH
viewfunction PERMIT_TYPEHASH() view returns (bytes32)
propietarios
viewfunction propietarios(uint256) view returns (address)
propuestas
viewfunction propuestas(uint256) view returns (uint8 tipoOperacion, address destino, uint256 cantidad, bool nuevoEstado, uint256 timestamp, uint256 aprobaciones, bool ejecutada, bool cancelada)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
agregarAListaBlanca
nonpayablefunction agregarAListaBlanca(address cuenta)
agregarAListaNegra
nonpayablefunction agregarAListaNegra(address cuenta)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
cancelarPropuestaExpirada
nonpayablefunction cancelarPropuestaExpirada(uint256 idPropuesta)
confirmarPropuesta
nonpayablefunction confirmarPropuesta(uint256 idPropuesta)
ejecutarPropuesta
nonpayablefunction ejecutarPropuesta(uint256 idPropuesta)
pause
nonpayablefunction pause()
permit
nonpayablefunction permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
proponerAgregarEmergencia
nonpayablefunction proponerAgregarEmergencia(address cuenta) returns (uint256)
proponerAgregarGestor
nonpayablefunction proponerAgregarGestor(address gestor) returns (uint256)
proponerAgregarPropietario
nonpayablefunction proponerAgregarPropietario(address nuevoPropietario) returns (uint256)
proponerAlternarListaBlanca
nonpayablefunction proponerAlternarListaBlanca(bool nuevoEstado) returns (uint256)
proponerAlternarListaNegra
nonpayablefunction proponerAlternarListaNegra(bool nuevoEstado) returns (uint256)
proponerMintear
nonpayablefunction proponerMintear(address destino, uint256 cantidad) returns (uint256)
proponerPausarToken
nonpayablefunction proponerPausarToken() returns (uint256)
proponerQuemar
nonpayablefunction proponerQuemar(address destino, uint256 cantidad) returns (uint256)
proponerReanudarToken
nonpayablefunction proponerReanudarToken() returns (uint256)
proponerRemoverEmergencia
nonpayablefunction proponerRemoverEmergencia(address cuenta) returns (uint256)
proponerRemoverGestor
nonpayablefunction proponerRemoverGestor(address gestor) returns (uint256)
proponerRemoverPropietario
nonpayablefunction proponerRemoverPropietario(address propietarioAddr) returns (uint256)
removerDeListaBlanca
nonpayablefunction removerDeListaBlanca(address cuenta)
removerDeListaNegra
nonpayablefunction removerDeListaNegra(address cuenta)
transfer
nonpayablefunction transfer(address recipient, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address sender, address recipient, uint256 amount) returns (bool)
unpause
nonpayablefunction unpause()
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
Paused
event Paused(address account)
PropuestaCancelada
event PropuestaCancelada(uint256 indexed id)
PropuestaConfirmada
event PropuestaConfirmada(uint256 indexed id, address propietario, uint256 aprobaciones)
PropuestaCreada
event PropuestaCreada(uint256 indexed id, uint8 tipo, address destino, uint256 cantidad, bool nuevoEstado, uint256 timestamp)
PropuestaEjecutada
event PropuestaEjecutada(uint256 indexed id, uint8 tipo)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Unpaused
event Unpaused(address account)
errors
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
creation bytecode
0x60a060405234801561000f575f5ffd5b5060405161664738038061664783398181016040528101906100319190610643565b600381511015610076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161006d9061070a565b60405180910390fd5b5f5f90505b8151811015610269575f82828151811061009857610097610728565b5b602002602001015190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610110576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101079061079f565b60405180910390fd5b60035f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661025b57600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060048054905060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600481908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50808060010191505061007b565b506004805490506006819055506012600a610284919061092e565b60016102909190610978565b5f819055505f5460015f60045f815481106102ae576102ad610728565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060045f8154811061032757610326610728565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f546040516103ac91906109c8565b60405180910390a37f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280601481526020017f41637469766f2052656e7461204761696e6f766f000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001610465959493929190610a08565b604051602081830303815290604052805190602001206080818152505050610a59565b5f604051905090565b5f5ffd5b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6104e38261049d565b810181811067ffffffffffffffff82111715610502576105016104ad565b5b80604052505050565b5f610514610488565b905061052082826104da565b919050565b5f67ffffffffffffffff82111561053f5761053e6104ad565b5b602082029050602081019050919050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61057d82610554565b9050919050565b61058d81610573565b8114610597575f5ffd5b50565b5f815190506105a881610584565b92915050565b5f6105c06105bb84610525565b61050b565b905080838252602082019050602084028301858111156105e3576105e2610550565b5b835b8181101561060c57806105f8888261059a565b8452602084019350506020810190506105e5565b5050509392505050565b5f82601f83011261062a57610629610499565b5b815161063a8482602086016105ae565b91505092915050565b5f6020828403121561065857610657610491565b5b5f82015167ffffffffffffffff81111561067557610674610495565b5b61068184828501610616565b91505092915050565b5f82825260208201905092915050565b7f53652072657175696572656e20616c206d656e6f7320332070726f70696574615f8201527f72696f7300000000000000000000000000000000000000000000000000000000602082015250565b5f6106f460248361068a565b91506106ff8261069a565b604082019050919050565b5f6020820190508181035f830152610721816106e8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f50726f706965746172696f20696e76616c69646f0000000000000000000000005f82015250565b5f61078960148361068a565b915061079482610755565b602082019050919050565b5f6020820190508181035f8301526107b68161077d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b600185111561083f5780860481111561081b5761081a6107bd565b5b600185161561082a5780820291505b8081029050610838856107ea565b94506107ff565b94509492505050565b5f826108575760019050610912565b81610864575f9050610912565b816001811461087a5760028114610884576108b3565b6001915050610912565b60ff841115610896576108956107bd565b5b8360020a9150848211156108ad576108ac6107bd565b5b50610912565b5060208310610133831016604e8410600b84101617156108e85782820a9050838111156108e3576108e26107bd565b5b610912565b6108f584848460016107f6565b9250905081840481111561090c5761090b6107bd565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f61093882610919565b915061094383610922565b92506109707fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610848565b905092915050565b5f61098282610919565b915061098d83610919565b925082820261099b81610919565b915082820484148315176109b2576109b16107bd565b5b5092915050565b6109c281610919565b82525050565b5f6020820190506109db5f8301846109b9565b92915050565b5f819050919050565b6109f3816109e1565b82525050565b610a0281610573565b82525050565b5f60a082019050610a1b5f8301886109ea565b610a2860208301876109ea565b610a3560408301866109ea565b610a4260608301856109b9565b610a4f60808301846109f9565b9695505050505050565b608051615bcf610a785f395f8181610fb801526123dc0152615bcf5ff3fe608060405234801561000f575f5ffd5b5060043610610293575f3560e01c80637cf080b211610165578063b5349464116100cc578063d505accf11610085578063d505accf146108d8578063d92e8b4f146108f4578063dd62ed3e14610910578063e610085014610940578063e89bfe691461095c578063ef32b8e51461097a57610293565b8063b5349464146107de578063be8df5b6146107fa578063c07068a81461082a578063c5e89c771461085a578063cca320001461088a578063cd24ca3f146108ba57610293565b80638e1c5c241161011e5780638e1c5c24146106f457806391a8a9bb1461072457806395d89b41146107545780639c38017f14610772578063a306027e14610790578063a9059cbb146107ae57610293565b80637cf080b21461060c5780637dad96e81461063c5780637ecebe001461066c5780638456cb591461069c57806384b2b3b2146106a657806389614a68146106d657610293565b80633644e515116102095780636097e216116101c25780636097e216146104f95780636c80b94e146105305780636d3a07f21461056057806370a082311461059057806374cd269d146105c0578063799a830a146105f057610293565b80633644e5151461044b5780633f4ba83a146104695780634f6950451461047357806354b2638c1461048f5780635c903636146104ab5780635c975abb146104db57610293565b80631da0c69b1161025b5780631da0c69b1461036357806323b872dd1461037f57806326d14a38146103af57806328c3726c146103df57806330adf81f1461040f578063313ce5671461042d57610293565b806306fdde0314610297578063077d3b51146102b5578063095ea7b3146102e55780630c2a463a1461031557806318160ddd14610345575b5f5ffd5b61029f610998565b6040516102ac9190614681565b60405180910390f35b6102cf60048036038101906102ca91906146ff565b6109d1565b6040516102dc9190614742565b60405180910390f35b6102ff60048036038101906102fa9190614785565b610a6f565b60405161030c91906147dd565b60405180910390f35b61032f600480360381019061032a91906146ff565b610ad4565b60405161033c9190614742565b60405180910390f35b61034d610b72565b60405161035a9190614742565b60405180910390f35b61037d600480360381019061037891906146ff565b610b7a565b005b610399600480360381019061039491906147f6565b610d53565b6040516103a691906147dd565b60405180910390f35b6103c960048036038101906103c491906146ff565b610dc4565b6040516103d69190614742565b60405180910390f35b6103f960048036038101906103f49190614785565b610eec565b6040516104069190614742565b60405180910390f35b610417610f8b565b604051610424919061485e565b60405180910390f35b610435610fb1565b6040516104429190614892565b60405180910390f35b610453610fb6565b604051610460919061485e565b60405180910390f35b610471610fda565b005b61048d600480360381019061048891906146ff565b611103565b005b6104a960048036038101906104a491906148ab565b611251565b005b6104c560048036038101906104c09190614900565b61148b565b6040516104d29190614742565b60405180910390f35b6104e3611529565b6040516104f091906147dd565b60405180910390f35b610513600480360381019061050e91906148ab565b61153b565b6040516105279897969594939291906149ad565b60405180910390f35b61054a600480360381019061054591906146ff565b6115cf565b6040516105579190614742565b60405180910390f35b61057a600480360381019061057591906146ff565b61166d565b6040516105879190614742565b60405180910390f35b6105aa60048036038101906105a591906146ff565b6117d9565b6040516105b79190614742565b60405180910390f35b6105da60048036038101906105d591906146ff565b61181f565b6040516105e791906147dd565b60405180910390f35b61060a600480360381019061060591906148ab565b61183c565b005b61062660048036038101906106219190614900565b611b79565b6040516106339190614742565b60405180910390f35b61065660048036038101906106519190614785565b611c17565b6040516106639190614742565b60405180910390f35b610686600480360381019061068191906146ff565b611cb5565b6040516106939190614742565b60405180910390f35b6106a4611cca565b005b6106c060048036038101906106bb91906146ff565b611df5565b6040516106cd91906147dd565b60405180910390f35b6106de611e12565b6040516106eb91906147dd565b60405180910390f35b61070e60048036038101906107099190614a29565b611e24565b60405161071b91906147dd565b60405180910390f35b61073e600480360381019061073991906146ff565b611e4e565b60405161074b91906147dd565b60405180910390f35b61075c611e6b565b6040516107699190614681565b60405180910390f35b61077a611ea4565b6040516107879190614742565b60405180910390f35b610798611eaa565b6040516107a591906147dd565b60405180910390f35b6107c860048036038101906107c39190614785565b611ebd565b6040516107d591906147dd565b60405180910390f35b6107f860048036038101906107f391906148ab565b611f22565b005b610814600480360381019061080f91906146ff565b612154565b60405161082191906147dd565b60405180910390f35b610844600480360381019061083f91906146ff565b612171565b6040516108519190614742565b60405180910390f35b610874600480360381019061086f91906148ab565b61220f565b6040516108819190614a67565b60405180910390f35b6108a4600480360381019061089f91906146ff565b61224a565b6040516108b191906147dd565b60405180910390f35b6108c2612267565b6040516108cf9190614742565b60405180910390f35b6108f260048036038101906108ed9190614ad4565b612303565b005b61090e600480360381019061090991906146ff565b61254e565b005b61092a60048036038101906109259190614b71565b61269c565b6040516109379190614742565b60405180910390f35b61095a600480360381019061095591906146ff565b61271e565b005b61096461286d565b6040516109719190614742565b60405180910390f35b610982612909565b60405161098f9190614742565b60405180910390f35b6040518060400160405280601481526020017f41637469766f2052656e7461204761696e6f766f00000000000000000000000081525081565b5f60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610a5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5290614bf9565b60405180910390fd5b610a686009835f5f61290f565b9050919050565b5f60095f9054906101000a900460ff1615610abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab690614c61565b60405180910390fd5b610aca338484612d39565b6001905092915050565b5f60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5590614bf9565b60405180910390fd5b610b6b6005835f5f61290f565b9050919050565b5f5f54905090565b60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610c03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfa90614cc9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6890614d31565b60405180910390fd5b60035f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610cfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf290614dbf565b60405180910390fd5b6001600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f60095f9054906101000a900460ff1615610da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9a90614c61565b60405180910390fd5b610dae843384612e8e565b610db9848484612ffa565b600190509392505050565b5f60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610e4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4590614bf9565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610ed8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecf90614e27565b60405180910390fd5b610ee56006835f5f61290f565b9050919050565b5f60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6d90614bf9565b60405180910390fd5b610f83600184845f61290f565b905092915050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c95f1b81565b601281565b7f000000000000000000000000000000000000000000000000000000000000000081565b60085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105a90614e8f565b60405180910390fd5b60095f9054906101000a900460ff166110b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a890614ef7565b60405180910390fd5b5f60095f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336040516110f99190614a67565b60405180910390a1565b60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661118c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118390614cc9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f190614d31565b60405180910390fd5b5f600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166112da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d190614bf9565b60405180910390fd5b5f811180156112eb5750600a548111155b61132a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132190614f5f565b60405180910390fd5b5f600b5f8381526020019081526020015f209050806005015f9054906101000a900460ff161561138f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138690614fc7565b60405180910390fd5b8060050160019054906101000a900460ff16156113e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d89061502f565b60405180910390fd5b6201518081600301546113f4919061507a565b421115611436576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142d906150f7565b60405180910390fd5b61143f82613401565b61147e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114759061515f565b60405180910390fd5b6114878261344c565b5050565b5f60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150c90614bf9565b60405180910390fd5b61152260025f5f8561290f565b9050919050565b60095f9054906101000a900460ff1681565b600b602052805f5260405f205f91509050805f015f9054906101000a900460ff1690805f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002015f9054906101000a900460ff1690806003015490806004015490806005015f9054906101000a900460ff16908060050160019054906101000a900460ff16905088565b5f60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165090614bf9565b60405180910390fd5b6116666008835f5f61290f565b9050919050565b5f60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166116f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ee90614bf9565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611780576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611777906151c7565b60405180910390fd5b6003600654116117c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bc90615255565b60405180910390fd5b6117d26007835f5f61290f565b9050919050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6008602052805f5260405f205f915054906101000a900460ff1681565b60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166118c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bc90614bf9565b60405180910390fd5b5f811180156118d65750600a548111155b611915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190c90614f5f565b60405180910390fd5b5f600b5f8381526020019081526020015f209050806005015f9054906101000a900460ff161561197a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197190614fc7565b60405180910390fd5b8060050160019054906101000a900460ff16156119cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c39061502f565b60405180910390fd5b6201518081600301546119df919061507a565b421115611a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a18906150f7565b60405180910390fd5b600c5f8381526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab1906152bd565b60405180910390fd5b6001600c5f8481526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550806004015f815480929190611b32906152db565b9190505550817f182db298ac329f14b001e9886f5c6689f49303a6b3eabf343678c8624983bec7338360040154604051611b6d929190615322565b60405180910390a25050565b5f60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611c03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfa90614bf9565b60405180910390fd5b611c1060035f5f8561290f565b9050919050565b5f60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9890614bf9565b60405180910390fd5b611cad5f84845f61290f565b905092915050565b6010602052805f5260405f205f915090505481565b60085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611d53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4a90614e8f565b60405180910390fd5b60095f9054906101000a900460ff1615611da2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9990615393565b60405180910390fd5b600160095f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051611deb9190614a67565b60405180910390a1565b6007602052805f5260405f205f915054906101000a900460ff1681565b600d5f9054906101000a900460ff1681565b600c602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b600e602052805f5260405f205f915054906101000a900460ff1681565b6040518060400160405280600381526020017f415247000000000000000000000000000000000000000000000000000000000081525081565b600a5481565b600d60019054906101000a900460ff1681565b5f60095f9054906101000a900460ff1615611f0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0490614c61565b60405180910390fd5b611f18338484612ffa565b6001905092915050565b60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611fab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa290614bf9565b60405180910390fd5b5f81118015611fbc5750600a548111155b611ffb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff290614f5f565b60405180910390fd5b5f600b5f8381526020019081526020015f209050806005015f9054906101000a900460ff1615612060576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612057906153fb565b60405180910390fd5b8060050160019054906101000a900460ff16156120b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a990615463565b60405180910390fd5b6201518081600301546120c5919061507a565b4211612106576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fd906154cb565b60405180910390fd5b60018160050160016101000a81548160ff021916908315150217905550817f502fb3f2b3feb506cff6cdd9b279f00a8e78d3c49c554e340b2092533e24a3e760405160405180910390a25050565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166121fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f290614bf9565b60405180910390fd5b6122086004835f5f61290f565b9050919050565b6004818154811061221e575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f602052805f5260405f205f915054906101000a900460ff1681565b5f60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166122f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e890614bf9565b60405180910390fd5b6122fe600a5f5f5f61290f565b905090565b83421115612346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233d90615533565b60405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c95f1b88888860105f8d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054896040516020016123c196959493929190615551565b6040516020818303038152906040528051906020012090505f7f00000000000000000000000000000000000000000000000000000000000000008260405160200161240d929190615624565b6040516020818303038152906040528051906020012090505f61243d86868685614098909392919063ffffffff16565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156124a657508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6124e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124dc906156a4565b60405180910390fd5b60105f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190612532906152db565b91905055506125428a8a8a612d39565b50505050505050505050565b60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166125d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ce90614cc9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263c90614d31565b60405180910390fd5b5f600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166127a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279e90614cc9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280c90614d31565b60405180910390fd5b6001600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166128f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ee90614bf9565b60405180910390fd5b612904600b5f5f5f61290f565b905090565b60065481565b5f5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580612ac657505f600b8111156129595761295861492b565b5b85600b81111561296c5761296b61492b565b5b1415801561299f57506001600b8111156129895761298861492b565b5b85600b81111561299c5761299b61492b565b5b14155b80156129d057506004600b8111156129ba576129b961492b565b5b85600b8111156129cd576129cc61492b565b5b14155b8015612a0157506005600b8111156129eb576129ea61492b565b5b85600b8111156129fe576129fd61492b565b5b14155b8015612a3257506006600b811115612a1c57612a1b61492b565b5b85600b811115612a2f57612a2e61492b565b5b14155b8015612a6357506007600b811115612a4d57612a4c61492b565b5b85600b811115612a6057612a5f61492b565b5b14155b8015612a9457506008600b811115612a7e57612a7d61492b565b5b85600b811115612a9157612a9061492b565b5b14155b8015612ac557506009600b811115612aaf57612aae61492b565b5b85600b811115612ac257612ac161492b565b5b14155b5b612b05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afc90614d31565b60405180910390fd5b600a5f815480929190612b17906152db565b9190505550600a54905060405180610100016040528086600b811115612b4057612b3f61492b565b5b81526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018315158152602001428152602001600181526020015f151581526020015f1515815250600b5f8381526020019081526020015f205f820151815f015f6101000a81548160ff0219169083600b811115612bc357612bc261492b565b5b02179055506020820151815f0160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600101556060820151816002015f6101000a81548160ff0219169083151502179055506080820151816003015560a0820151816004015560c0820151816005015f6101000a81548160ff02191690831515021790555060e08201518160050160016101000a81548160ff0219169083151502179055509050506001600c5f8381526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550807f79e4f5e5175951df73c0d7f0e7d956eb97df5236788a7d415b9a93ba1af5d7cd8686868642604051612d299594939291906156c2565b60405180910390a2949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612da7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9e90614d31565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612e819190614742565b60405180910390a3505050565b5f60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612ff45781811015612f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6b9061575d565b60405180910390fd5b81810360025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561306257505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6130a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309890614d31565b60405180910390fd5b600d5f9054906101000a900460ff161561319157600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156131515750600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b613190576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613187906157c5565b60405180910390fd5b5b600d60019054906101000a900460ff161561328457600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156132445750600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b613283576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161327a9061582d565b60405180910390fd5b5b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613308576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ff90615895565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133f39190614742565b60405180910390a350505050565b5f5f60036001600654600261341691906158b3565b613420919061507a565b61342a9190615921565b905080600b5f8581526020019081526020015f20600401541015915050919050565b5f600b5f8381526020019081526020015f209050806005015f9054906101000a900460ff16156134b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134a8906153fb565b60405180910390fd5b8060050160019054906101000a900460ff1615613503576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134fa9061502f565b60405180910390fd5b5f600b8111156135165761351561492b565b5b815f015f9054906101000a900460ff16600b8111156135385761353761492b565b5b036135735761356e815f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682600101546140c6565b614031565b6001600b8111156135875761358661492b565b5b815f015f9054906101000a900460ff16600b8111156135a9576135a861492b565b5b036135e4576135df815f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168260010154614207565b614030565b6002600b8111156135f8576135f761492b565b5b815f015f9054906101000a900460ff16600b81111561361a5761361961492b565b5b0361364d57806002015f9054906101000a900460ff16600d5f6101000a81548160ff02191690831515021790555061402f565b6003600b8111156136615761366061492b565b5b815f015f9054906101000a900460ff16600b8111156136835761368261492b565b5b036136b757806002015f9054906101000a900460ff16600d60016101000a81548160ff02191690831515021790555061402e565b6004600b8111156136cb576136ca61492b565b5b815f015f9054906101000a900460ff16600b8111156136ed576136ec61492b565b5b0361376f57600160075f835f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061402d565b6005600b8111156137835761378261492b565b5b815f015f9054906101000a900460ff16600b8111156137a5576137a461492b565b5b03613826575f60075f835f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061402c565b6006600b81111561383a5761383961492b565b5b815f015f9054906101000a900460ff16600b81111561385c5761385b61492b565b5b03613a8f5760035f825f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561390e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161390590614e27565b60405180910390fd5b600160035f835f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060048054905060055f835f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506004815f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060065f815480929190613a85906152db565b919050555061402b565b6007600b811115613aa357613aa261492b565b5b815f015f9054906101000a900460ff16600b811115613ac557613ac461492b565b5b03613d9b57600360065411613b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b0690615255565b60405180910390fd5b5f60035f835f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60055f835f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60046001600480549050613bff9190615951565b81548110613c1057613c0f615984565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508060048381548110613c4f57613c4e615984565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506004805480613ce857613ce76159b1565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905560055f845f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f905560065f815480929190613d8f906159de565b9190505550505061402a565b6008600b811115613daf57613dae61492b565b5b815f015f9054906101000a900460ff16600b811115613dd157613dd061492b565b5b03613e5357600160085f835f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550614029565b6009600b811115613e6757613e6661492b565b5b815f015f9054906101000a900460ff16600b811115613e8957613e8861492b565b5b03613f0a575f60085f835f0160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550614028565b600a600b811115613f1e57613f1d61492b565b5b815f015f9054906101000a900460ff16600b811115613f4057613f3f61492b565b5b03613f9b57600160095f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051613f8e9190614a67565b60405180910390a1614027565b600b80811115613fae57613fad61492b565b5b815f015f9054906101000a900460ff16600b811115613fd057613fcf61492b565b5b03614026575f60095f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa3360405161401d9190614a67565b60405180910390a15b5b5b5b5b5b5b5b5b5b5b5b6001816005015f6101000a81548160ff021916908315150217905550817fdb3a7947c8b5d5687ae9eb7335d1ff922daf975d4a7c08f70f3243e0a4da8a01825f015f9054906101000a900460ff1660405161408c9190615a05565b60405180910390a25050565b5f5f5f5f6140a8888888886143c8565b9250925092506140b882826144af565b829350505050949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603614134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161412b90615a68565b60405180910390fd5b805f5f828254614144919061507a565b925050819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254614197919061507a565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516141fb9190614742565b60405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603614275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161426c90615ad0565b60405180910390fd5b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156142f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142ec90615b38565b60405180910390fd5b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546143419190615951565b92505081905550805f5f8282546143589190615951565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516143bc9190614742565b60405180910390a35050565b5f5f5f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c1115614404575f6003859250925092506144a5565b5f6001888888886040515f81526020016040526040516144279493929190615b56565b6020604051602081039080840390855afa158015614447573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603614498575f60015f5f1b935093509350506144a5565b805f5f5f1b935093509350505b9450945094915050565b5f60038111156144c2576144c161492b565b5b8260038111156144d5576144d461492b565b5b031561460d57600160038111156144ef576144ee61492b565b5b8260038111156145025761450161492b565b5b03614539576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600381111561454d5761454c61492b565b5b8260038111156145605761455f61492b565b5b036145a457805f1c6040517ffce698f700000000000000000000000000000000000000000000000000000000815260040161459b9190614742565b60405180910390fd5b6003808111156145b7576145b661492b565b5b8260038111156145ca576145c961492b565b5b0361460c57806040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600401614603919061485e565b60405180910390fd5b5b5050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61465382614611565b61465d818561461b565b935061466d81856020860161462b565b61467681614639565b840191505092915050565b5f6020820190508181035f8301526146998184614649565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6146ce826146a5565b9050919050565b6146de816146c4565b81146146e8575f5ffd5b50565b5f813590506146f9816146d5565b92915050565b5f60208284031215614714576147136146a1565b5b5f614721848285016146eb565b91505092915050565b5f819050919050565b61473c8161472a565b82525050565b5f6020820190506147555f830184614733565b92915050565b6147648161472a565b811461476e575f5ffd5b50565b5f8135905061477f8161475b565b92915050565b5f5f6040838503121561479b5761479a6146a1565b5b5f6147a8858286016146eb565b92505060206147b985828601614771565b9150509250929050565b5f8115159050919050565b6147d7816147c3565b82525050565b5f6020820190506147f05f8301846147ce565b92915050565b5f5f5f6060848603121561480d5761480c6146a1565b5b5f61481a868287016146eb565b935050602061482b868287016146eb565b925050604061483c86828701614771565b9150509250925092565b5f819050919050565b61485881614846565b82525050565b5f6020820190506148715f83018461484f565b92915050565b5f60ff82169050919050565b61488c81614877565b82525050565b5f6020820190506148a55f830184614883565b92915050565b5f602082840312156148c0576148bf6146a1565b5b5f6148cd84828501614771565b91505092915050565b6148df816147c3565b81146148e9575f5ffd5b50565b5f813590506148fa816148d6565b92915050565b5f60208284031215614915576149146146a1565b5b5f614922848285016148ec565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600c81106149695761496861492b565b5b50565b5f81905061497982614958565b919050565b5f6149888261496c565b9050919050565b6149988161497e565b82525050565b6149a7816146c4565b82525050565b5f610100820190506149c15f83018b61498f565b6149ce602083018a61499e565b6149db6040830189614733565b6149e860608301886147ce565b6149f56080830187614733565b614a0260a0830186614733565b614a0f60c08301856147ce565b614a1c60e08301846147ce565b9998505050505050505050565b5f5f60408385031215614a3f57614a3e6146a1565b5b5f614a4c85828601614771565b9250506020614a5d858286016146eb565b9150509250929050565b5f602082019050614a7a5f83018461499e565b92915050565b614a8981614877565b8114614a93575f5ffd5b50565b5f81359050614aa481614a80565b92915050565b614ab381614846565b8114614abd575f5ffd5b50565b5f81359050614ace81614aaa565b92915050565b5f5f5f5f5f5f5f60e0888a031215614aef57614aee6146a1565b5b5f614afc8a828b016146eb565b9750506020614b0d8a828b016146eb565b9650506040614b1e8a828b01614771565b9550506060614b2f8a828b01614771565b9450506080614b408a828b01614a96565b93505060a0614b518a828b01614ac0565b92505060c0614b628a828b01614ac0565b91505092959891949750929550565b5f5f60408385031215614b8757614b866146a1565b5b5f614b94858286016146eb565b9250506020614ba5858286016146eb565b9150509250929050565b7f536f6c6f2070726f706965746172696f730000000000000000000000000000005f82015250565b5f614be360118361461b565b9150614bee82614baf565b602082019050919050565b5f6020820190508181035f830152614c1081614bd7565b9050919050565b7f546f6b656e207061757361646f000000000000000000000000000000000000005f82015250565b5f614c4b600d8361461b565b9150614c5682614c17565b602082019050919050565b5f6020820190508181035f830152614c7881614c3f565b9050919050565b7f536f6c6f20676573746f726573000000000000000000000000000000000000005f82015250565b5f614cb3600d8361461b565b9150614cbe82614c7f565b602082019050919050565b5f6020820190508181035f830152614ce081614ca7565b9050919050565b7f446972656363696f6e20696e76616c69646100000000000000000000000000005f82015250565b5f614d1b60128361461b565b9150614d2682614ce7565b602082019050919050565b5f6020820190508181035f830152614d4881614d0f565b9050919050565b7f4e6f2073652070756564656e20626c6f71756561722070726f706965746172695f8201527f6f73000000000000000000000000000000000000000000000000000000000000602082015250565b5f614da960228361461b565b9150614db482614d4f565b604082019050919050565b5f6020820190508181035f830152614dd681614d9d565b9050919050565b7f59612065732070726f706965746172696f0000000000000000000000000000005f82015250565b5f614e1160118361461b565b9150614e1c82614ddd565b602082019050919050565b5f6020820190508181035f830152614e3e81614e05565b9050919050565b7f536f6c6f20726f6c20646520656d657267656e636961000000000000000000005f82015250565b5f614e7960168361461b565b9150614e8482614e45565b602082019050919050565b5f6020820190508181035f830152614ea681614e6d565b9050919050565b7f4e6f2065737461207061757361646f00000000000000000000000000000000005f82015250565b5f614ee1600f8361461b565b9150614eec82614ead565b602082019050919050565b5f6020820190508181035f830152614f0e81614ed5565b9050919050565b7f50726f707565737461206e6f20657869737465000000000000000000000000005f82015250565b5f614f4960138361461b565b9150614f5482614f15565b602082019050919050565b5f6020820190508181035f830152614f7681614f3d565b9050919050565b7f50726f70756573746120796120656a65637574616461000000000000000000005f82015250565b5f614fb160168361461b565b9150614fbc82614f7d565b602082019050919050565b5f6020820190508181035f830152614fde81614fa5565b9050919050565b7f50726f7075657374612063616e63656c616461000000000000000000000000005f82015250565b5f61501960138361461b565b915061502482614fe5565b602082019050919050565b5f6020820190508181035f8301526150468161500d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6150848261472a565b915061508f8361472a565b92508282019050808211156150a7576150a661504d565b5b92915050565b7f50726f70756573746120657870697261646100000000000000000000000000005f82015250565b5f6150e160128361461b565b91506150ec826150ad565b602082019050919050565b5f6020820190508181035f83015261510e816150d5565b9050919050565b7f4170726f626163696f6e657320696e737566696369656e7465730000000000005f82015250565b5f615149601a8361461b565b915061515482615115565b602082019050919050565b5f6020820190508181035f8301526151768161513d565b9050919050565b7f4e6f2065732070726f706965746172696f0000000000000000000000000000005f82015250565b5f6151b160118361461b565b91506151bc8261517d565b602082019050919050565b5f6020820190508181035f8301526151de816151a5565b9050919050565b7f4e6f2073652070756564652074656e6572206d656e6f7320646520332070726f5f8201527f706965746172696f730000000000000000000000000000000000000000000000602082015250565b5f61523f60298361461b565b915061524a826151e5565b604082019050919050565b5f6020820190508181035f83015261526c81615233565b9050919050565b7f5961206170726f626173746500000000000000000000000000000000000000005f82015250565b5f6152a7600c8361461b565b91506152b282615273565b602082019050919050565b5f6020820190508181035f8301526152d48161529b565b9050919050565b5f6152e58261472a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036153175761531661504d565b5b600182019050919050565b5f6040820190506153355f83018561499e565b6153426020830184614733565b9392505050565b7f5961207061757361646f000000000000000000000000000000000000000000005f82015250565b5f61537d600a8361461b565b915061538882615349565b602082019050919050565b5f6020820190508181035f8301526153aa81615371565b9050919050565b7f596120656a6563757461646100000000000000000000000000000000000000005f82015250565b5f6153e5600c8361461b565b91506153f0826153b1565b602082019050919050565b5f6020820190508181035f830152615412816153d9565b9050919050565b7f59612063616e63656c61646100000000000000000000000000000000000000005f82015250565b5f61544d600c8361461b565b915061545882615419565b602082019050919050565b5f6020820190508181035f83015261547a81615441565b9050919050565b7f50726f7075657374612061756e206163746976610000000000000000000000005f82015250565b5f6154b560148361461b565b91506154c082615481565b602082019050919050565b5f6020820190508181035f8301526154e2816154a9565b9050919050565b7f5065726d69736f20657870697261646f000000000000000000000000000000005f82015250565b5f61551d60108361461b565b9150615528826154e9565b602082019050919050565b5f6020820190508181035f83015261554a81615511565b9050919050565b5f60c0820190506155645f83018961484f565b615571602083018861499e565b61557e604083018761499e565b61558b6060830186614733565b6155986080830185614733565b6155a560a0830184614733565b979650505050505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f6155ee6002836155b0565b91506155f9826155ba565b600282019050919050565b5f819050919050565b61561e61561982614846565b615604565b82525050565b5f61562e826155e2565b915061563a828561560d565b60208201915061564a828461560d565b6020820191508190509392505050565b7f4669726d6120696e76616c6964610000000000000000000000000000000000005f82015250565b5f61568e600e8361461b565b91506156998261565a565b602082019050919050565b5f6020820190508181035f8301526156bb81615682565b9050919050565b5f60a0820190506156d55f83018861498f565b6156e2602083018761499e565b6156ef6040830186614733565b6156fc60608301856147ce565b6157096080830184614733565b9695505050505050565b7f416c6c6f77616e636520657863656469646f00000000000000000000000000005f82015250565b5f61574760128361461b565b915061575282615713565b602082019050919050565b5f6020820190508181035f8301526157748161573b565b9050919050565b7f446972656363696f6e206e6f20656e206c6973746120626c616e6361000000005f82015250565b5f6157af601c8361461b565b91506157ba8261577b565b602082019050919050565b5f6020820190508181035f8301526157dc816157a3565b9050919050565b7f446972656363696f6e20656e206c69737461206e6567726100000000000000005f82015250565b5f61581760188361461b565b9150615822826157e3565b602082019050919050565b5f6020820190508181035f8301526158448161580b565b9050919050565b7f53616c646f20696e737566696369656e746500000000000000000000000000005f82015250565b5f61587f60128361461b565b915061588a8261584b565b602082019050919050565b5f6020820190508181035f8301526158ac81615873565b9050919050565b5f6158bd8261472a565b91506158c88361472a565b92508282026158d68161472a565b915082820484148315176158ed576158ec61504d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61592b8261472a565b91506159368361472a565b925082615946576159456158f4565b5b828204905092915050565b5f61595b8261472a565b91506159668361472a565b925082820390508181111561597e5761597d61504d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f6159e88261472a565b91505f82036159fa576159f961504d565b5b600182039050919050565b5f602082019050615a185f83018461498f565b92915050565b7f4e6f207365207075656465206d696e74656172206120300000000000000000005f82015250565b5f615a5260178361461b565b9150615a5d82615a1e565b602082019050919050565b5f6020820190508181035f830152615a7f81615a46565b9050919050565b7f4e6f207365207075656465207175656d617220646520300000000000000000005f82015250565b5f615aba60178361461b565b9150615ac582615a86565b602082019050919050565b5f6020820190508181035f830152615ae781615aae565b9050919050565b7f43616e74696461642061207175656d6172206d61796f7220616c2073616c646f5f82015250565b5f615b2260208361461b565b9150615b2d82615aee565b602082019050919050565b5f6020820190508181035f830152615b4f81615b16565b9050919050565b5f608082019050615b695f83018761484f565b615b766020830186614883565b615b83604083018561484f565b615b90606083018461484f565b9594505050505056fea264697066735822122023121fe434cfbb69395047ecb16c7ef69c2d760bd6283cd4b149ca7d59d877f564736f6c634300081e0033000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000030000000000000000000000004dd0780061c28be55b7f9b422c85d4079093d7c2000000000000000000000000f91739210a88dacc2ed6156f728eeeabb8488c5d00000000000000000000000079584e0fe04a36faa2dc85cf6e0fadd411fb856b