6080604052670de0b6b3a76400006000196200001c919062000ad0565b6000196200002b919062000b37565b60075560006009556019600a556000600b556028600c55600b54600d55600c54600e55600d54600f55600e54601055738d9a3c6fbccdc62c8dbecce5646d249d054dc4f6601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f4e4f992e4b0be7c767db3f90ad8b96ed2d2729b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601660156101000a81548160ff02191690831515021790555060016016806101000a81548160ff021916908315150217905550620001766064620001626064670de0b6b3a76400006200092860201b6200157e1790919060201c565b620009ac60201b620015f91790919060201c565b601755620001b66064620001a26003670de0b6b3a76400006200092860201b6200157e1790919060201c565b620009ac60201b620015f91790919060201c565b601855620001f76103e8620001e36001670de0b6b3a76400006200092860201b6200157e1790919060201c565b620009ac60201b620015f91790919060201c565b6019553480156200020757600080fd5b5060006200021a620009fe60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060075460026000620002cf620009fe60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620003ae57600080fd5b505afa158015620003c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e9919062000bdc565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200044c57600080fd5b505afa15801562000461573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000487919062000bdc565b6040518363ffffffff1660e01b8152600401620004a692919062000c1f565b602060405180830381600087803b158015620004c157600080fd5b505af1158015620004d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004fc919062000bdc565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560006200055262000a0660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660006200070562000a0660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620008b2620009fe60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a764000060405162000919919062000c5d565b60405180910390a35062000e73565b6000808314156200093d5760009050620009a6565b600082846200094d919062000c7a565b90508284826200095e919062000cdb565b14620009a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009989062000d9a565b60405180910390fd5b809150505b92915050565b6000620009f683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000a2f60201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808311829062000a79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a70919062000e4f565b60405180910390fd5b506000838562000a8a919062000cdb565b9050809150509392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000add8262000a97565b915062000aea8362000a97565b92508262000afd5762000afc62000aa1565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000b448262000a97565b915062000b518362000a97565b92508282101562000b675762000b6662000b08565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ba48262000b77565b9050919050565b62000bb68162000b97565b811462000bc257600080fd5b50565b60008151905062000bd68162000bab565b92915050565b60006020828403121562000bf55762000bf462000b72565b5b600062000c058482850162000bc5565b91505092915050565b62000c198162000b97565b82525050565b600060408201905062000c36600083018562000c0e565b62000c45602083018462000c0e565b9392505050565b62000c578162000a97565b82525050565b600060208201905062000c74600083018462000c4c565b92915050565b600062000c878262000a97565b915062000c948362000a97565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000cd05762000ccf62000b08565b5b828202905092915050565b600062000ce88262000a97565b915062000cf58362000a97565b92508262000d085762000d0762000aa1565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600062000d8260218362000d13565b915062000d8f8262000d24565b604082019050919050565b6000602082019050818103600083015262000db58162000d73565b9050919050565b600081519050919050565b60005b8381101562000de757808201518184015260208101905062000dca565b8381111562000df7576000848401525b50505050565b6000601f19601f8301169050919050565b600062000e1b8262000dbc565b62000e27818562000d13565b935062000e3981856020860162000dc7565b62000e448162000dfd565b840191505092915050565b6000602082019050818103600083015262000e6b818462000e0e565b905092915050565b613fee8062000e836000396000f3fe6080604052600436106101ba5760003560e01c80637d1db4a5116100ec578063a2a957bb1161008a578063c3c8cd8011610064578063c3c8cd80146105f4578063dd62ed3e1461060b578063ea1644d514610648578063f2fde38b14610671576101c1565b8063a2a957bb14610551578063a9059cbb1461057a578063bfd79284146105b7576101c1565b80638f70ccf7116100c65780638f70ccf7146104a95780638f9a55c0146104d257806395d89b41146104fd57806398a5c31514610528576101c1565b80637d1db4a5146104165780637f2feddc146104415780638da5cb5b1461047e576101c1565b8063313ce567116101595780636fc3eaec116101335780636fc3eaec1461039457806370a08231146103ab578063715018a6146103e8578063751039fc146103ff576101c1565b8063313ce5671461031557806349bd5a5e146103405780636b9990531461036b576101c1565b80631694505e116101955780631694505e1461025757806318160ddd1461028257806323b872dd146102ad5780632fd689e3146102ea576101c1565b8062b8cf2a146101c657806306fdde03146101ef578063095ea7b31461021a576101c1565b366101c157005b600080fd5b3480156101d257600080fd5b506101ed60048036038101906101e89190612ded565b61069a565b005b3480156101fb57600080fd5b506102046107c4565b6040516102119190612ebe565b60405180910390f35b34801561022657600080fd5b50610241600480360381019061023c9190612f16565b610801565b60405161024e9190612f71565b60405180910390f35b34801561026357600080fd5b5061026c61081f565b6040516102799190612feb565b60405180910390f35b34801561028e57600080fd5b50610297610845565b6040516102a49190613015565b60405180910390f35b3480156102b957600080fd5b506102d460048036038101906102cf9190613030565b610855565b6040516102e19190612f71565b60405180910390f35b3480156102f657600080fd5b506102ff61092e565b60405161030c9190613015565b60405180910390f35b34801561032157600080fd5b5061032a610934565b604051610337919061309f565b60405180910390f35b34801561034c57600080fd5b5061035561093d565b60405161036291906130c9565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d91906130e4565b610963565b005b3480156103a057600080fd5b506103a9610a53565b005b3480156103b757600080fd5b506103d260048036038101906103cd91906130e4565b610b24565b6040516103df9190613015565b60405180910390f35b3480156103f457600080fd5b506103fd610b75565b005b34801561040b57600080fd5b50610414610cc8565b005b34801561042257600080fd5b5061042b610d7d565b6040516104389190613015565b60405180910390f35b34801561044d57600080fd5b50610468600480360381019061046391906130e4565b610d83565b6040516104759190613015565b60405180910390f35b34801561048a57600080fd5b50610493610d9b565b6040516104a091906130c9565b60405180910390f35b3480156104b557600080fd5b506104d060048036038101906104cb919061313d565b610dc4565b005b3480156104de57600080fd5b506104e7610e76565b6040516104f49190613015565b60405180910390f35b34801561050957600080fd5b50610512610e7c565b60405161051f9190612ebe565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a919061316a565b610eb9565b005b34801561055d57600080fd5b5061057860048036038101906105739190613197565b610f58565b005b34801561058657600080fd5b506105a1600480360381019061059c9190612f16565b611153565b6040516105ae9190612f71565b60405180910390f35b3480156105c357600080fd5b506105de60048036038101906105d991906130e4565b611171565b6040516105eb9190612f71565b60405180910390f35b34801561060057600080fd5b50610609611191565b005b34801561061757600080fd5b50610632600480360381019061062d91906131fe565b61126a565b60405161063f9190613015565b60405180910390f35b34801561065457600080fd5b5061066f600480360381019061066a919061316a565b6112f1565b005b34801561067d57600080fd5b50610698600480360381019061069391906130e4565b6113bc565b005b6106a2611643565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461072f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107269061328a565b60405180910390fd5b60005b81518110156107c057600160116000848481518110610754576107536132aa565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107b890613308565b915050610732565b5050565b60606040518060400160405280600981526020017f476f6f642047616d650000000000000000000000000000000000000000000000815250905090565b600061081561080e611643565b848461164b565b6001905092915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b6000610862848484611816565b6109238461086e611643565b61091e85604051806060016040528060288152602001613f9160289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108d4611643565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121459092919063ffffffff16565b61164b565b600190509392505050565b60195481565b60006009905090565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61096b611643565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ef9061328a565b60405180910390fd5b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a94611643565b73ffffffffffffffffffffffffffffffffffffffff161480610b0a5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610af2611643565b73ffffffffffffffffffffffffffffffffffffffff16145b610b1357600080fd5b6000479050610b21816121a9565b50565b6000610b6e600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122ca565b9050919050565b610b7d611643565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c019061328a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610cd0611643565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d549061328a565b60405180910390fd5b670de0b6b3a7640000601781905550670de0b6b3a7640000601881905550565b60175481565b60126020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610dcc611643565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e509061328a565b60405180910390fd5b80601660146101000a81548160ff02191690831515021790555050565b60185481565b60606040518060400160405280600281526020017f4747000000000000000000000000000000000000000000000000000000000000815250905090565b610ec1611643565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f459061328a565b60405180910390fd5b8060198190555050565b610f60611643565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe49061328a565b60405180910390fd5b60008410158015610fff575060008411155b61103e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611035906133c3565b60405180910390fd5b60008210158015611050575060638211155b61108f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108690613455565b60405180910390fd5b600083101580156110a1575060008311155b6110e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d7906134e7565b60405180910390fd5b600081101580156110f2575060638111155b611131576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112890613579565b60405180910390fd5b8360098190555082600b8190555081600a8190555080600c8190555050505050565b6000611167611160611643565b8484611816565b6001905092915050565b60116020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111d2611643565b73ffffffffffffffffffffffffffffffffffffffff1614806112485750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611230611643565b73ffffffffffffffffffffffffffffffffffffffff16145b61125157600080fd5b600061125c30610b24565b905061126781612338565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112f9611643565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137d9061328a565b60405180910390fd5b6000811161139357600080fd5b606481670de0b6b3a76400006113a99190613599565b6113b39190613622565b60188190555050565b6113c4611643565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611451576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114489061328a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b8906136c5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083141561159157600090506115f3565b6000828461159f9190613599565b90508284826115ae9190613622565b146115ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e590613757565b60405180910390fd5b809150505b92915050565b600061163b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125c0565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b2906137e9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561172b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117229061387b565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118099190613015565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187d9061390d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ed9061399f565b60405180910390fd5b60008111611939576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193090613a31565b60405180910390fd5b611941610d9b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119af575061197f610d9b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e4457601660149054906101000a900460ff16611a3e576119d0610d9b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3490613ac3565b60405180910390fd5b5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ad557601754811115611ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acb90613b2f565b60405180910390fd5b5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b795750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baf90613bc1565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611c605750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611cbd5760185481611c7284610b24565b611c7c9190613be1565b10611cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb390613ca9565b60405180910390fd5b5b6000611cc830610b24565b9050600060195482101590506017548210611ce35760175491505b808015611cfd5750601660159054906101000a900460ff16155b8015611d575750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d6d575060168054906101000a900460ff165b8015611dc35750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e195750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e4157611e2782612338565b60004790506000811115611e3f57611e3e476121a9565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611eeb5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611f9e5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f9d5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611fac5760009050612133565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120575750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561206f57600954600d81905550600a54600e819055505b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561211a5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561213257600b54600d81905550600c54600e819055505b5b61213f84848484612623565b50505050565b600083831115829061218d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121849190612ebe565b60405180910390fd5b506000838561219c9190613cc9565b9050809150509392505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61220c60056121fe60048661157e90919063ffffffff16565b6115f990919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612237573d6000803e3d6000fd5b50601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61229b600561228d60018661157e90919063ffffffff16565b6115f990919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156122c6573d6000803e3d6000fd5b5050565b6000600754821115612311576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230890613d6f565b60405180910390fd5b600061231b612650565b905061233081846115f990919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156123705761236f612c4c565b5b60405190808252806020026020018201604052801561239e5781602001602082028036833780820191505090505b50905030816000815181106123b6576123b56132aa565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561245857600080fd5b505afa15801561246c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124909190613da4565b816001815181106124a4576124a36132aa565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061250b30601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461164b565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161256f959493929190613eca565b600060405180830381600087803b15801561258957600080fd5b505af115801561259d573d6000803e3d6000fd5b50505050506000601660156101000a81548160ff02191690831515021790555050565b60008083118290612607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fe9190612ebe565b60405180910390fd5b50600083856126169190613622565b9050809150509392505050565b806126315761263061267b565b5b61263c8484846126be565b8061264a57612649612889565b5b50505050565b600080600061265d61289d565b9150915061267481836115f990919063ffffffff16565b9250505090565b6000600d5414801561268f57506000600e54145b15612699576126bc565b600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b6000806000806000806126d0876128fc565b95509550955095509550955061272e86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461296490919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127c385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129ae90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061280f81612a0c565b6128198483612ac9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128769190613015565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b600080600060075490506000670de0b6b3a764000090506128d1670de0b6b3a76400006007546115f990919063ffffffff16565b8210156128ef57600754670de0b6b3a76400009350935050506128f8565b81819350935050505b9091565b60008060008060008060008060006129198a600d54600e54612b03565b9250925092506000612929612650565b9050600080600061293c8e878787612b99565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006129a683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612145565b905092915050565b60008082846129bd9190613be1565b905083811015612a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f990613f70565b60405180910390fd5b8091505092915050565b6000612a16612650565b90506000612a2d828461157e90919063ffffffff16565b9050612a8181600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129ae90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612ade8260075461296490919063ffffffff16565b600781905550612af9816008546129ae90919063ffffffff16565b6008819055505050565b600080600080612b2f6064612b21888a61157e90919063ffffffff16565b6115f990919063ffffffff16565b90506000612b596064612b4b888b61157e90919063ffffffff16565b6115f990919063ffffffff16565b90506000612b8282612b74858c61296490919063ffffffff16565b61296490919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612bb2858961157e90919063ffffffff16565b90506000612bc9868961157e90919063ffffffff16565b90506000612be0878961157e90919063ffffffff16565b90506000612c0982612bfb858761296490919063ffffffff16565b61296490919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612c8482612c3b565b810181811067ffffffffffffffff82111715612ca357612ca2612c4c565b5b80604052505050565b6000612cb6612c22565b9050612cc28282612c7b565b919050565b600067ffffffffffffffff821115612ce257612ce1612c4c565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d2382612cf8565b9050919050565b612d3381612d18565b8114612d3e57600080fd5b50565b600081359050612d5081612d2a565b92915050565b6000612d69612d6484612cc7565b612cac565b90508083825260208201905060208402830185811115612d8c57612d8b612cf3565b5b835b81811015612db55780612da18882612d41565b845260208401935050602081019050612d8e565b5050509392505050565b600082601f830112612dd457612dd3612c36565b5b8135612de4848260208601612d56565b91505092915050565b600060208284031215612e0357612e02612c2c565b5b600082013567ffffffffffffffff811115612e2157612e20612c31565b5b612e2d84828501612dbf565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e70578082015181840152602081019050612e55565b83811115612e7f576000848401525b50505050565b6000612e9082612e36565b612e9a8185612e41565b9350612eaa818560208601612e52565b612eb381612c3b565b840191505092915050565b60006020820190508181036000830152612ed88184612e85565b905092915050565b6000819050919050565b612ef381612ee0565b8114612efe57600080fd5b50565b600081359050612f1081612eea565b92915050565b60008060408385031215612f2d57612f2c612c2c565b5b6000612f3b85828601612d41565b9250506020612f4c85828601612f01565b9150509250929050565b60008115159050919050565b612f6b81612f56565b82525050565b6000602082019050612f866000830184612f62565b92915050565b6000819050919050565b6000612fb1612fac612fa784612cf8565b612f8c565b612cf8565b9050919050565b6000612fc382612f96565b9050919050565b6000612fd582612fb8565b9050919050565b612fe581612fca565b82525050565b60006020820190506130006000830184612fdc565b92915050565b61300f81612ee0565b82525050565b600060208201905061302a6000830184613006565b92915050565b60008060006060848603121561304957613048612c2c565b5b600061305786828701612d41565b935050602061306886828701612d41565b925050604061307986828701612f01565b9150509250925092565b600060ff82169050919050565b61309981613083565b82525050565b60006020820190506130b46000830184613090565b92915050565b6130c381612d18565b82525050565b60006020820190506130de60008301846130ba565b92915050565b6000602082840312156130fa576130f9612c2c565b5b600061310884828501612d41565b91505092915050565b61311a81612f56565b811461312557600080fd5b50565b60008135905061313781613111565b92915050565b60006020828403121561315357613152612c2c565b5b600061316184828501613128565b91505092915050565b6000602082840312156131805761317f612c2c565b5b600061318e84828501612f01565b91505092915050565b600080600080608085870312156131b1576131b0612c2c565b5b60006131bf87828801612f01565b94505060206131d087828801612f01565b93505060406131e187828801612f01565b92505060606131f287828801612f01565b91505092959194509250565b6000806040838503121561321557613214612c2c565b5b600061322385828601612d41565b925050602061323485828601612d41565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613274602083612e41565b915061327f8261323e565b602082019050919050565b600060208201905081810360008301526132a381613267565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061331382612ee0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613346576133456132d9565b5b600182019050919050565b7f4275792072657761726473206d757374206265206265747765656e203025206160008201527f6e64203025000000000000000000000000000000000000000000000000000000602082015250565b60006133ad602583612e41565b91506133b882613351565b604082019050919050565b600060208201905081810360008301526133dc816133a0565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e64203960008201527f3925000000000000000000000000000000000000000000000000000000000000602082015250565b600061343f602283612e41565b915061344a826133e3565b604082019050919050565b6000602082019050818103600083015261346e81613432565b9050919050565b7f53656c6c2072657761726473206d757374206265206265747765656e2030252060008201527f616e642030250000000000000000000000000000000000000000000000000000602082015250565b60006134d1602683612e41565b91506134dc82613475565b604082019050919050565b60006020820190508181036000830152613500816134c4565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e642060008201527f3939250000000000000000000000000000000000000000000000000000000000602082015250565b6000613563602383612e41565b915061356e82613507565b604082019050919050565b6000602082019050818103600083015261359281613556565b9050919050565b60006135a482612ee0565b91506135af83612ee0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156135e8576135e76132d9565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061362d82612ee0565b915061363883612ee0565b925082613648576136476135f3565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006136af602683612e41565b91506136ba82613653565b604082019050919050565b600060208201905081810360008301526136de816136a2565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613741602183612e41565b915061374c826136e5565b604082019050919050565b6000602082019050818103600083015261377081613734565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006137d3602483612e41565b91506137de82613777565b604082019050919050565b60006020820190508181036000830152613802816137c6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613865602283612e41565b915061387082613809565b604082019050919050565b6000602082019050818103600083015261389481613858565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006138f7602583612e41565b91506139028261389b565b604082019050919050565b60006020820190508181036000830152613926816138ea565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613989602383612e41565b91506139948261392d565b604082019050919050565b600060208201905081810360008301526139b88161397c565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613a1b602983612e41565b9150613a26826139bf565b604082019050919050565b60006020820190508181036000830152613a4a81613a0e565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613aad603f83612e41565b9150613ab882613a51565b604082019050919050565b60006020820190508181036000830152613adc81613aa0565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613b19601c83612e41565b9150613b2482613ae3565b602082019050919050565b60006020820190508181036000830152613b4881613b0c565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613bab602383612e41565b9150613bb682613b4f565b604082019050919050565b60006020820190508181036000830152613bda81613b9e565b9050919050565b6000613bec82612ee0565b9150613bf783612ee0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c2c57613c2b6132d9565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613c93602383612e41565b9150613c9e82613c37565b604082019050919050565b60006020820190508181036000830152613cc281613c86565b9050919050565b6000613cd482612ee0565b9150613cdf83612ee0565b925082821015613cf257613cf16132d9565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613d59602a83612e41565b9150613d6482613cfd565b604082019050919050565b60006020820190508181036000830152613d8881613d4c565b9050919050565b600081519050613d9e81612d2a565b92915050565b600060208284031215613dba57613db9612c2c565b5b6000613dc884828501613d8f565b91505092915050565b6000819050919050565b6000613df6613df1613dec84613dd1565b612f8c565b612ee0565b9050919050565b613e0681613ddb565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613e4181612d18565b82525050565b6000613e538383613e38565b60208301905092915050565b6000602082019050919050565b6000613e7782613e0c565b613e818185613e17565b9350613e8c83613e28565b8060005b83811015613ebd578151613ea48882613e47565b9750613eaf83613e5f565b925050600181019050613e90565b5085935050505092915050565b600060a082019050613edf6000830188613006565b613eec6020830187613dfd565b8181036040830152613efe8186613e6c565b9050613f0d60608301856130ba565b613f1a6080830184613006565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613f5a601b83612e41565b9150613f6582613f24565b602082019050919050565b60006020820190508181036000830152613f8981613f4d565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220bc63957a6b9dd52ecc690222237d9afc3bd1dbc8efdb42d460be1071e3b17e3964736f6c63430008090033