60806040526103e76007553480156200001757600080fd5b50620000386200002c6200012060201b60201c565b6200012860201b60201c565b6040518060400160405280600d81526020017f204675656c204e6574776f726b00000000000000000000000000000000000000815250600490805190602001906200008592919062000443565b506040518060400160405280600481526020017f4655454c0000000000000000000000000000000000000000000000000000000081525060059080519060200190620000d392919062000443565b506000633b9aca0090506200011933620000f2620001ec60201b60201c565b600a6200010091906200068d565b836200010d9190620006de565b620001f560201b60201c565b5062000924565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006008905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000268576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200025f90620007a0565b60405180910390fd5b80600360008282546200027c9190620007c2565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000330919062000830565b60405180910390a36200034c600083836200036060201b60201c565b6200035c6200036560201b60201c565b5050565b505050565b620003756200038960201b60201c565b6200038760006200012860201b60201c565b565b620003996200012060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620003bf6200041a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000418576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200040f906200089d565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8280546200045190620008ee565b90600052602060002090601f016020900481019282620004755760008555620004c1565b82601f106200049057805160ff1916838001178555620004c1565b82800160010185558215620004c1579182015b82811115620004c0578251825591602001919060010190620004a3565b5b509050620004d09190620004d4565b5090565b5b80821115620004ef576000816000905550600101620004d5565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200058157808604811115620005595762000558620004f3565b5b6001851615620005695780820291505b8081029050620005798562000522565b945062000539565b94509492505050565b6000826200059c57600190506200066f565b81620005ac57600090506200066f565b8160018114620005c55760028114620005d05762000606565b60019150506200066f565b60ff841115620005e557620005e4620004f3565b5b8360020a915084821115620005ff57620005fe620004f3565b5b506200066f565b5060208310610133831016604e8410600b8410161715620006405782820a9050838111156200063a5762000639620004f3565b5b6200066f565b6200064f84848460016200052f565b92509050818404811115620006695762000668620004f3565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200069a8262000676565b9150620006a78362000680565b9250620006d67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200058a565b905092915050565b6000620006eb8262000676565b9150620006f88362000676565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007345762000733620004f3565b5b828202905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000788601f836200073f565b9150620007958262000750565b602082019050919050565b60006020820190508181036000830152620007bb8162000779565b9050919050565b6000620007cf8262000676565b9150620007dc8362000676565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620008145762000813620004f3565b5b828201905092915050565b6200082a8162000676565b82525050565b60006020820190506200084760008301846200081f565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620008856020836200073f565b915062000892826200084d565b602082019050919050565b60006020820190508181036000830152620008b88162000876565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200090757607f821691505b602082108114156200091e576200091d620008bf565b5b50919050565b611dc480620009346000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c8063715018a6116100a2578063aafe62d111610071578063aafe62d1146102a8578063beabacc8146102c4578063dd62ed3e146102e0578063e7b8174914610310578063f2fde38b146103405761010b565b8063715018a6146102325780638da5cb5b1461023c57806395d89b411461025a578063a9059cbb146102785761010b565b806323b872dd116100de57806323b872dd1461019857806326ededb8146101c8578063313ce567146101e457806370a08231146102025761010b565b806302f4dae31461011057806306fdde031461012c578063095ea7b31461014a57806318160ddd1461017a575b600080fd5b61012a60048036038101906101259190611412565b61035c565b005b6101346104c5565b604051610141919061151f565b60405180910390f35b610164600480360381019061015f9190611541565b610557565b604051610171919061159c565b60405180910390f35b61018261057a565b60405161018f91906115c6565b60405180910390f35b6101b260048036038101906101ad91906115e1565b610584565b6040516101bf919061159c565b60405180910390f35b6101e260048036038101906101dd9190611634565b6105b3565b005b6101ec610688565b6040516101f991906116b0565b60405180910390f35b61021c600480360381019061021791906116cb565b610691565b60405161022991906115c6565b60405180910390f35b61023a6106da565b005b6102446106ee565b6040516102519190611707565b60405180910390f35b610262610717565b60405161026f919061151f565b60405180910390f35b610292600480360381019061028d9190611541565b6107a9565b60405161029f919061159c565b60405180910390f35b6102c260048036038101906102bd9190611412565b6107cc565b005b6102de60048036038101906102d991906115e1565b610935565b005b6102fa60048036038101906102f59190611722565b61099f565b60405161030791906115c6565b60405180910390f35b61032a600480360381019061032591906116cb565b610a26565b604051610337919061159c565b60405180910390f35b61035a600480360381019061035591906116cb565b610ac2565b005b60005b848490508110156104be5784848281811061037d5761037c611762565b5b905060200201602081019061039291906116cb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82285600080886040516103f594939291906117d6565b60405180910390a38484828181106104105761040f611762565b5b905060200201602081019061042591906116cb565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516104a391906115c6565b60405180910390a380806104b69061184a565b91505061035f565b5050505050565b6060600480546104d4906118c2565b80601f0160208091040260200160405190810160405280929190818152602001828054610500906118c2565b801561054d5780601f106105225761010080835404028352916020019161054d565b820191906000526020600020905b81548152906001019060200180831161053057829003601f168201915b5050505050905090565b600080610562610b46565b905061056f818585610b4e565b600191505092915050565b6000600354905090565b60008061058f610b46565b905061059c858285610d19565b6105a7858585610da5565b60019150509392505050565b60005b83839050811015610682578383828181106105d4576105d3611762565b5b90506020020160208101906105e991906116cb565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161066791906115c6565b60405180910390a3808061067a9061184a565b9150506105b6565b50505050565b60006008905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106e26111c8565b6106ec6000611246565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054610726906118c2565b80601f0160208091040260200160405190810160405280929190818152602001828054610752906118c2565b801561079f5780601f106107745761010080835404028352916020019161079f565b820191906000526020600020905b81548152906001019060200180831161078257829003601f168201915b5050505050905090565b6000806107b4610b46565b90506107c1818585610da5565b600191505092915050565b60005b8484905081101561092e578484828181106107ed576107ec611762565b5b905060200201602081019061080291906116cb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822856000808860405161086594939291906117d6565b60405180910390a38484828181106108805761087f611762565b5b905060200201602081019061089591906116cb565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161091391906115c6565b60405180910390a380806109269061184a565b9150506107cf565b5050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161099291906115c6565b60405180910390a3505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000736786e7117a0e817bec86f6a03acb9e348293841073ffffffffffffffffffffffffffffffffffffffff16610a5b610b46565b73ffffffffffffffffffffffffffffffffffffffff161415610ab95781600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60019050919050565b610aca6111c8565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3190611966565b60405180910390fd5b610b4381611246565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb5906119f8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2590611a8a565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d0c91906115c6565b60405180910390a3505050565b6000610d25848461099f565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610d9f5781811015610d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8890611af6565b60405180910390fd5b610d9e8484848403610b4e565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0c90611b88565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7c90611c1a565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610f225750736b75d8af000000e20b7a7ddf000ba900b4009a8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8061101257508173ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015610fc55750736b75d8af000000e20b7a7ddf000ba900b4009a8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156110115750736786e7117a0e817bec86f6a03acb9e348293841073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156110385760006001826110269190611c3a565b9050600754811061103657600080fd5b505b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156110bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b690611d02565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111af91906115c6565b60405180910390a36111c284848461130a565b50505050565b6111d0610b46565b73ffffffffffffffffffffffffffffffffffffffff166111ee6106ee565b73ffffffffffffffffffffffffffffffffffffffff1614611244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123b90611d6e565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f84011261133e5761133d611319565b5b8235905067ffffffffffffffff81111561135b5761135a61131e565b5b60208301915083602082028301111561137757611376611323565b5b9250929050565b6000819050919050565b6113918161137e565b811461139c57600080fd5b50565b6000813590506113ae81611388565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006113df826113b4565b9050919050565b6113ef816113d4565b81146113fa57600080fd5b50565b60008135905061140c816113e6565b92915050565b6000806000806060858703121561142c5761142b61130f565b5b600085013567ffffffffffffffff81111561144a57611449611314565b5b61145687828801611328565b945094505060206114698782880161139f565b925050604061147a878288016113fd565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b60005b838110156114c05780820151818401526020810190506114a5565b838111156114cf576000848401525b50505050565b6000601f19601f8301169050919050565b60006114f182611486565b6114fb8185611491565b935061150b8185602086016114a2565b611514816114d5565b840191505092915050565b6000602082019050818103600083015261153981846114e6565b905092915050565b600080604083850312156115585761155761130f565b5b6000611566858286016113fd565b92505060206115778582860161139f565b9150509250929050565b60008115159050919050565b61159681611581565b82525050565b60006020820190506115b1600083018461158d565b92915050565b6115c08161137e565b82525050565b60006020820190506115db60008301846115b7565b92915050565b6000806000606084860312156115fa576115f961130f565b5b6000611608868287016113fd565b9350506020611619868287016113fd565b925050604061162a8682870161139f565b9150509250925092565b60008060006040848603121561164d5761164c61130f565b5b600084013567ffffffffffffffff81111561166b5761166a611314565b5b61167786828701611328565b9350935050602061168a8682870161139f565b9150509250925092565b600060ff82169050919050565b6116aa81611694565b82525050565b60006020820190506116c560008301846116a1565b92915050565b6000602082840312156116e1576116e061130f565b5b60006116ef848285016113fd565b91505092915050565b611701816113d4565b82525050565b600060208201905061171c60008301846116f8565b92915050565b600080604083850312156117395761173861130f565b5b6000611747858286016113fd565b9250506020611758858286016113fd565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000819050919050565b60006117c06117bb6117b684611791565b61179b565b61137e565b9050919050565b6117d0816117a5565b82525050565b60006080820190506117eb60008301876115b7565b6117f860208301866117c7565b61180560408301856117c7565b61181260608301846115b7565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006118558261137e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156118885761188761181b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806118da57607f821691505b602082108114156118ee576118ed611893565b5b50919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611950602683611491565b915061195b826118f4565b604082019050919050565b6000602082019050818103600083015261197f81611943565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006119e2602483611491565b91506119ed82611986565b604082019050919050565b60006020820190508181036000830152611a11816119d5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611a74602283611491565b9150611a7f82611a18565b604082019050919050565b60006020820190508181036000830152611aa381611a67565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611ae0601d83611491565b9150611aeb82611aaa565b602082019050919050565b60006020820190508181036000830152611b0f81611ad3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611b72602583611491565b9150611b7d82611b16565b604082019050919050565b60006020820190508181036000830152611ba181611b65565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611c04602383611491565b9150611c0f82611ba8565b604082019050919050565b60006020820190508181036000830152611c3381611bf7565b9050919050565b6000611c458261137e565b9150611c508361137e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611c8557611c8461181b565b5b828201905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611cec602683611491565b9150611cf782611c90565b604082019050919050565b60006020820190508181036000830152611d1b81611cdf565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611d58602083611491565b9150611d6382611d22565b602082019050919050565b60006020820190508181036000830152611d8781611d4b565b905091905056fea2646970667358221220d92c134d655a7bd52efc3e1dc102b0815546cb39225f470b78598ef12f552eed64736f6c63430008090033