0x6080604052736a000f20005980200259b80c5102003040001068600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060146101000a81548160ff0219169083151502179055503480156200008057600080fd5b506040516200516f3803806200516f8339818101604052810190620000a69190620004d0565b33600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200011c5760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040162000113919062000532565b60405180910390fd5b6200012d816200021e60201b60201c565b506001600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060005b81518110156200021657600160026000848481518110620001af57620001ae6200054f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808060010191505062000189565b50506200057e565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200034682620002fb565b810181811067ffffffffffffffff821117156200036857620003676200030c565b5b80604052505050565b60006200037d620002e2565b90506200038b82826200033b565b919050565b600067ffffffffffffffff821115620003ae57620003ad6200030c565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620003f182620003c4565b9050919050565b6200040381620003e4565b81146200040f57600080fd5b50565b6000815190506200042381620003f8565b92915050565b6000620004406200043a8462000390565b62000371565b90508083825260208201905060208402830185811115620004665762000465620003bf565b5b835b818110156200049357806200047e888262000412565b84526020840193505060208101905062000468565b5050509392505050565b600082601f830112620004b557620004b4620002f6565b5b8151620004c784826020860162000429565b91505092915050565b600060208284031215620004e957620004e8620002ec565b5b600082015167ffffffffffffffff8111156200050a5762000509620002f1565b5b62000518848285016200049d565b91505092915050565b6200052c81620003e4565b82525050565b600060208201905062000549600083018462000521565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b614be1806200058e6000396000f3fe6080604052600436106101025760003560e01c80639e281a9811610095578063cac9ac9b11610064578063cac9ac9b1461039f578063da5b4ffd146103c8578063e43252d714610405578063f04f27071461042e578063f2fde38b14610457576101c1565b80639e281a9814610318578063a0ef91df14610341578063a26fe09e14610358578063a765cfb914610374576101c1565b80638ab1d681116100d15780638ab1d6811461025e5780638da5cb5b146102875780639632e03c146102b25780639b19251a146102db576101c1565b806310957d3c146101c357806312065fe0146101f357806362fcc29c1461021e578063715018a614610247576101c1565b366101c1576000610111610480565b905060008173ffffffffffffffffffffffffffffffffffffffff163460405161013990612fdc565b60006040518083038185875af1925050503d8060008114610176576040519150601f19603f3d011682016040523d82523d6000602084013e61017b565b606091505b50509050806101bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101b69061304e565b60405180910390fd5b005b005b6101dd60048036038101906101d891906132ae565b6104a9565b6040516101ea9190613438565b60405180910390f35b3480156101ff57600080fd5b50610208610686565b6040516102159190613473565b60405180910390f35b34801561022a57600080fd5b5061024560048036038101906102409190613515565b61068e565b005b34801561025357600080fd5b5061025c610a08565b005b34801561026a57600080fd5b506102856004803603810190610280919061360d565b610a1c565b005b34801561029357600080fd5b5061029c610480565b6040516102a99190613649565b60405180910390f35b3480156102be57600080fd5b506102d960048036038101906102d49190613664565b610a7f565b005b3480156102e757600080fd5b5061030260048036038101906102fd919061360d565b611205565b60405161030f919061372e565b60405180910390f35b34801561032457600080fd5b5061033f600480360381019061033a9190613749565b611225565b005b34801561034d57600080fd5b50610356611243565b005b610372600480360381019061036d91906137c7565b6112a1565b005b34801561038057600080fd5b5061038961187a565b6040516103969190613649565b60405180910390f35b3480156103ab57600080fd5b506103c660048036038101906103c19190613861565b6118a0565b005b3480156103d457600080fd5b506103ef60048036038101906103ea91906139bc565b611c39565b6040516103fc9190613438565b60405180910390f35b34801561041157600080fd5b5061042c6004803603810190610427919061360d565b611ea6565b005b34801561043a57600080fd5b5061045560048036038101906104509190613c01565b611f09565b005b34801561046357600080fd5b5061047e6004803603810190610479919061360d565b61210e565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052e90613d29565b60405180910390fd5b815167ffffffffffffffff81111561055257610551613098565b5b60405190808252806020026020018201604052801561058557816020015b60608152602001906001900390816105705790505b50905060005b8251811015610680576000803073ffffffffffffffffffffffffffffffffffffffff168584815181106105c1576105c0613d49565b5b60200260200101516040516105d69190613da9565b600060405180830381855af49150503d8060008114610611576040519150601f19603f3d011682016040523d82523d6000602084013e610616565b606091505b509150915081610652576040517f835e98fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8084848151811061066657610665613d49565b5b60200260200101819052505050808060010191505061058b565b50919050565b600047905090565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661071a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071190613d29565b60405180910390fd5b60003390506000732dded6da1bf5dbdf597c45fcfaa3194e53ecfeaf73ffffffffffffffffffffffffffffffffffffffff1663b9947eb0896040518263ffffffff1660e01b815260040161076e9190613473565b602060405180830381865afa15801561078b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107af9190613dd5565b90506060828989898989896040516024016107d09796959493929190613e40565b6040516020818303038152906040527fcac9ac9b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090506000600167ffffffffffffffff81111561086c5761086b613098565b5b60405190808252806020026020018201604052801561089a5781602001602082028036833780820191505090505b50905082816000815181106108b2576108b1613d49565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600167ffffffffffffffff81111561090957610908613098565b5b6040519080825280602002602001820160405280156109375781602001602082028036833780820191505090505b509050888160008151811061094f5761094e613d49565b5b6020026020010181815250506000600160146101000a81548160ff02191690831515021790555073ba12222222228d8ba445958a75a0704d566bf2c873ffffffffffffffffffffffffffffffffffffffff16635c38449e308484876040518563ffffffff1660e01b81526004016109c994939291906140d0565b600060405180830381600087803b1580156109e357600080fd5b505af11580156109f7573d6000803e3d6000fd5b505050505050505050505050505050565b610a10612194565b610a1a600061221b565b565b610a24612194565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae490614176565b60405180910390fd5b6001151573ab1c342c7bf5ec5f02adea1c2270670bca144cbb73ffffffffffffffffffffffffffffffffffffffff16633d98a1e5886040518263ffffffff1660e01b8152600401610b3e9190613649565b602060405180830381865afa158015610b5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7f91906141c2565b151514610bc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb89061423b565b60405180910390fd5b6001151573ab1c342c7bf5ec5f02adea1c2270670bca144cbb73ffffffffffffffffffffffffffffffffffffffff16633d98a1e5876040518263ffffffff1660e01b8152600401610c129190613649565b602060405180830381865afa158015610c2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5391906141c2565b151514610c95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8c906142a7565b60405180910390fd5b6000610dc48773ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ce5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d099190613dd5565b8773ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d789190613dd5565b878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506122df565b9050610e408673ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e389190613dd5565b8760006126f2565b610eb98673ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb29190613dd5565b87866126f2565b8573ffffffffffffffffffffffffffffffffffffffff16632608f81889866040518363ffffffff1660e01b8152600401610ef49291906142c7565b6020604051808303816000875af1158015610f13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f379190614305565b5060008773ffffffffffffffffffffffffffffffffffffffff1663ae9d70b06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa99190614305565b905060008873ffffffffffffffffffffffffffffffffffffffff1663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ff8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101c9190614305565b90506000670de0b6b3a76400008a73ffffffffffffffffffffffffffffffffffffffff16636c540baf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611074573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110989190614305565b436110a39190614361565b84846110af9190614395565b6110b99190614395565b6110c39190614406565b826110ce9190614437565b670de0b6b3a76400006001866110e49190614437565b6110ee9190614395565b6110f89190614406565b90508973ffffffffffffffffffffffffffffffffffffffff166323b872dd8c30846040518463ffffffff1660e01b81526004016111379392919061446b565b6020604051808303816000875af1158015611156573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117a91906141c2565b508973ffffffffffffffffffffffffffffffffffffffff1663db006a75826040518263ffffffff1660e01b81526004016111b49190613473565b6020604051808303816000875af11580156111d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f79190614305565b505050505050505050505050565b60026020528060005260406000206000915054906101000a900460ff1681565b61122d612194565b61123f82611239610480565b83612847565b5050565b61124b612194565b60003390508073ffffffffffffffffffffffffffffffffffffffff166108fc611272610686565b9081150290604051600060405180830381858888f1935050505015801561129d573d6000803e3d6000fd5b5050565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661132d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132490613d29565b60405180910390fd5b60003390508461133d828961299c565b101561137e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611375906144ee565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84036115b657670de0b6b3a76400008673ffffffffffffffffffffffffffffffffffffffff1663f8f9da286040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141d9190614305565b8773ffffffffffffffffffffffffffffffffffffffff16636c540baf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611468573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148c9190614305565b436114979190614361565b6114a19190614395565b8773ffffffffffffffffffffffffffffffffffffffff166395dd9193846040518263ffffffff1660e01b81526004016114da9190613649565b602060405180830381865afa1580156114f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151b9190614305565b6115259190614395565b61152f9190614406565b8673ffffffffffffffffffffffffffffffffffffffff166395dd9193836040518263ffffffff1660e01b81526004016115689190613649565b602060405180830381865afa158015611585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a99190614305565b6115b39190614437565b93505b6060818888888888886040516024016115d5979695949392919061452f565b6040516020818303038152906040527f9632e03c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090506000600167ffffffffffffffff81111561167157611670613098565b5b60405190808252806020026020018201604052801561169f5781602001602082028036833780820191505090505b5090508873ffffffffffffffffffffffffffffffffffffffff16636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117119190613dd5565b8160008151811061172557611724613d49565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600167ffffffffffffffff81111561177c5761177b613098565b5b6040519080825280602002602001820160405280156117aa5781602001602082028036833780820191505090505b50905087816000815181106117c2576117c1613d49565b5b6020026020010181815250506000600160146101000a81548160ff02191690831515021790555073ba12222222228d8ba445958a75a0704d566bf2c873ffffffffffffffffffffffffffffffffffffffff16635c38449e308484876040518563ffffffff1660e01b815260040161183c94939291906140d0565b600060405180830381600087803b15801561185657600080fd5b505af115801561186a573d6000803e3d6000fd5b5050505050505050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461190e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190590614176565b60405180910390fd5b6000732dded6da1bf5dbdf597c45fcfaa3194e53ecfeaf73ffffffffffffffffffffffffffffffffffffffff1663b9947eb0886040518263ffffffff1660e01b815260040161195d9190613473565b602060405180830381865afa15801561197a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061199e9190613dd5565b90506000732dded6da1bf5dbdf597c45fcfaa3194e53ecfeaf73ffffffffffffffffffffffffffffffffffffffff1663b9947eb0886040518263ffffffff1660e01b81526004016119ef9190613473565b602060405180830381865afa158015611a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a309190613dd5565b9050611a5282732dded6da1bf5dbdf597c45fcfaa3194e53ecfeaf60006126f2565b611a7182732dded6da1bf5dbdf597c45fcfaa3194e53ecfeaf886126f2565b611a7d818a3088612c4b565b6000611b3f898989620f4240732dded6da1bf5dbdf597c45fcfaa3194e53ecfeaf73ffffffffffffffffffffffffffffffffffffffff166307211ef78f8f8f6040518463ffffffff1660e01b8152600401611ada939291906145b5565b602060405180830381865afa158015611af7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1b9190614305565b611b259190614361565b732dded6da1bf5dbdf597c45fcfaa3194e53ecfeaf612da3565b90506000611ba083858985611b549190614437565b60008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506122df565b905060008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611bdd9190613649565b602060405180830381865afa158015611bfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1e9190614305565b9050611c2b848d83612847565b505050505050505050505050565b6060600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbe90613d29565b60405180910390fd5b828290508585905014611d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0690614638565b60405180910390fd5b60008383905067ffffffffffffffff811115611d2e57611d2d613098565b5b604051908082528060200260200182016040528015611d6157816020015b6060815260200190600190039081611d4c5790505b50905060005b86869050811015611e9957600080888884818110611d8857611d87613d49565b5b9050602002016020810190611d9d919061360d565b73ffffffffffffffffffffffffffffffffffffffff16878785818110611dc657611dc5613d49565b5b9050602002810190611dd89190614667565b604051611de69291906146ef565b600060405180830381855afa9150503d8060008114611e21576040519150601f19603f3d011682016040523d82523d6000602084013e611e26565b606091505b509150915081611e6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6290614754565b60405180910390fd5b80848481518110611e7f57611e7e613d49565b5b602002602001018190525050508080600101915050611d67565b5080915050949350505050565b611eae612194565b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b73ba12222222228d8ba445958a75a0704d566bf2c873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f5557600080fd5b60001515600160149054906101000a900460ff16151514611fab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa2906147e6565b60405180910390fd5b60003073ffffffffffffffffffffffffffffffffffffffff168383604051611fd49291906146ef565b6000604051808303816000865af19150503d8060008114612011576040519150601f19603f3d011682016040523d82523d6000602084013e612016565b606091505b505090508061205a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205190614852565b60405180910390fd5b60005b86518110156120eb576120de87828151811061207c5761207b613d49565b5b602002602001015173ba12222222228d8ba445958a75a0704d566bf2c88784815181106120ac576120ab613d49565b5b60200260200101518985815181106120c7576120c6613d49565b5b60200260200101516120d99190614437565b612847565b808060010191505061205d565b5060018060146101000a81548160ff021916908315150217905550505050505050565b612116612194565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121885760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161217f9190613649565b60405180910390fd5b6121918161221b565b50565b61219c612fa3565b73ffffffffffffffffffffffffffffffffffffffff166121ba610480565b73ffffffffffffffffffffffffffffffffffffffff1614612219576121dd612fa3565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016122109190613649565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161231b9190613649565b602060405180830381865afa158015612338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235c9190614305565b9050848110156123a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612398906148be565b60405180910390fd5b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016123dc9190613649565b602060405180830381865afa1580156123f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241d9190614305565b905061244d88600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660006126f2565b61247a88600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16886126f2565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16856040516124c39190613da9565b6000604051808303816000865af19150503d8060008114612500576040519150601f19603f3d011682016040523d82523d6000602084013e612505565b606091505b5050905080612549576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125409061492a565b60405180910390fd5b60008973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016125849190613649565b602060405180830381865afa1580156125a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125c59190614305565b905080846125d39190614361565b945087851115612618576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260f90614996565b60405180910390fd5b6000838a73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126549190613649565b602060405180830381865afa158015612671573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126959190614305565b61269f9190614361565b9050878110156126e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126db90614a02565b60405180910390fd5b505050505095945050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b85856040516024016127279291906142c7565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516127919190613da9565b6000604051808303816000865af19150503d80600081146127ce576040519150601f19603f3d011682016040523d82523d6000602084013e6127d3565b606091505b509150915081801561280157506000815114806128005750808060200190518101906127ff91906141c2565b5b5b612840576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283790614a6e565b60405180910390fd5b5050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b858560405160240161287c9291906142c7565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516128e69190613da9565b6000604051808303816000865af19150503d8060008114612923576040519150601f19603f3d011682016040523d82523d6000602084013e612928565b606091505b5091509150818015612956575060008151148061295557508080602001905181019061295491906141c2565b5b5b612995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298c90614ada565b60405180910390fd5b5050505050565b6000806000839050670de0b6b3a76400008173ffffffffffffffffffffffffffffffffffffffff1663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a1c9190614305565b670de0b6b3a76400008373ffffffffffffffffffffffffffffffffffffffff1663ae9d70b06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a949190614305565b8473ffffffffffffffffffffffffffffffffffffffff16636c540baf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612adf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b039190614305565b43612b0e9190614361565b612b189190614395565b8473ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401612b519190613649565b602060405180830381865afa158015612b6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b929190614305565b612b9c9190614395565b612ba69190614406565b8373ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401612bdf9190613649565b602060405180830381865afa158015612bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c209190614305565b612c2a9190614437565b612c349190614395565b612c3e9190614406565b9150819250505092915050565b6000808573ffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b868686604051602401612c829392919061446b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051612cec9190613da9565b6000604051808303816000865af19150503d8060008114612d29576040519150601f19603f3d011682016040523d82523d6000602084013e612d2e565b606091505b5091509150818015612d5c5750600081511480612d5b575080806020019051810190612d5a91906141c2565b5b5b612d9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9290614b46565b60405180910390fd5b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff1663b9947eb0876040518263ffffffff1660e01b8152600401612ddf9190613473565b602060405180830381865afa158015612dfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e209190613dd5565b905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612e5d9190613649565b602060405180830381865afa158015612e7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e9e9190614305565b90508373ffffffffffffffffffffffffffffffffffffffff1663a6417ed6898989896040518563ffffffff1660e01b8152600401612edf9493929190614b66565b600060405180830381600087803b158015612ef957600080fd5b505af1158015612f0d573d6000803e3d6000fd5b50505050808273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612f4b9190613649565b602060405180830381865afa158015612f68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f8c9190614305565b612f969190614361565b9250505095945050505050565b600033905090565b600081905092915050565b50565b6000612fc6600083612fab565b9150612fd182612fb6565b600082019050919050565b6000612fe782612fb9565b9150819050919050565b600082825260208201905092915050565b7f6661696c6c7572652120455468206e6f742073656e7421000000000000000000600082015250565b6000613038601783612ff1565b915061304382613002565b602082019050919050565b600060208201905081810360008301526130678161302b565b9050919050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6130d082613087565b810181811067ffffffffffffffff821117156130ef576130ee613098565b5b80604052505050565b600061310261306e565b905061310e82826130c7565b919050565b600067ffffffffffffffff82111561312e5761312d613098565b5b602082029050602081019050919050565b600080fd5b600080fd5b600067ffffffffffffffff82111561316457613163613098565b5b61316d82613087565b9050602081019050919050565b82818337600083830152505050565b600061319c61319784613149565b6130f8565b9050828152602081018484840111156131b8576131b7613144565b5b6131c384828561317a565b509392505050565b600082601f8301126131e0576131df613082565b5b81356131f0848260208601613189565b91505092915050565b600061320c61320784613113565b6130f8565b9050808382526020820190506020840283018581111561322f5761322e61313f565b5b835b8181101561327657803567ffffffffffffffff81111561325457613253613082565b5b80860161326189826131cb565b85526020850194505050602081019050613231565b5050509392505050565b600082601f83011261329557613294613082565b5b81356132a58482602086016131f9565b91505092915050565b6000602082840312156132c4576132c3613078565b5b600082013567ffffffffffffffff8111156132e2576132e161307d565b5b6132ee84828501613280565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561335d578082015181840152602081019050613342565b60008484015250505050565b600061337482613323565b61337e818561332e565b935061338e81856020860161333f565b61339781613087565b840191505092915050565b60006133ae8383613369565b905092915050565b6000602082019050919050565b60006133ce826132f7565b6133d88185613302565b9350836020820285016133ea85613313565b8060005b85811015613426578484038952815161340785826133a2565b9450613412836133b6565b925060208a019950506001810190506133ee565b50829750879550505050505092915050565b6000602082019050818103600083015261345281846133c3565b905092915050565b6000819050919050565b61346d8161345a565b82525050565b60006020820190506134886000830184613464565b92915050565b6134978161345a565b81146134a257600080fd5b50565b6000813590506134b48161348e565b92915050565b600080fd5b60008083601f8401126134d5576134d4613082565b5b8235905067ffffffffffffffff8111156134f2576134f16134ba565b5b60208301915083600182028301111561350e5761350d61313f565b5b9250929050565b60008060008060008060a0878903121561353257613531613078565b5b600061354089828a016134a5565b965050602061355189828a016134a5565b955050604061356289828a016134a5565b945050606061357389828a016134a5565b935050608087013567ffffffffffffffff8111156135945761359361307d565b5b6135a089828a016134bf565b92509250509295509295509295565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006135da826135af565b9050919050565b6135ea816135cf565b81146135f557600080fd5b50565b600081359050613607816135e1565b92915050565b60006020828403121561362357613622613078565b5b6000613631848285016135f8565b91505092915050565b613643816135cf565b82525050565b600060208201905061365e600083018461363a565b92915050565b600080600080600080600060c0888a03121561368357613682613078565b5b60006136918a828b016135f8565b97505060206136a28a828b016135f8565b96505060406136b38a828b016135f8565b95505060606136c48a828b016134a5565b94505060806136d58a828b016134a5565b93505060a088013567ffffffffffffffff8111156136f6576136f561307d565b5b6137028a828b016134bf565b925092505092959891949750929550565b60008115159050919050565b61372881613713565b82525050565b6000602082019050613743600083018461371f565b92915050565b600080604083850312156137605761375f613078565b5b600061376e858286016135f8565b925050602061377f858286016134a5565b9150509250929050565b6000613794826135cf565b9050919050565b6137a481613789565b81146137af57600080fd5b50565b6000813590506137c18161379b565b92915050565b60008060008060008060a087890312156137e4576137e3613078565b5b60006137f289828a016137b2565b965050602061380389828a016137b2565b955050604061381489828a016134a5565b945050606061382589828a016134a5565b935050608087013567ffffffffffffffff8111156138465761384561307d565b5b61385289828a016134bf565b92509250509295509295509295565b600080600080600080600060c0888a0312156138805761387f613078565b5b600061388e8a828b016135f8565b975050602061389f8a828b016134a5565b96505060406138b08a828b016134a5565b95505060606138c18a828b016134a5565b94505060806138d28a828b016134a5565b93505060a088013567ffffffffffffffff8111156138f3576138f261307d565b5b6138ff8a828b016134bf565b925092505092959891949750929550565b60008083601f84011261392657613925613082565b5b8235905067ffffffffffffffff811115613943576139426134ba565b5b60208301915083602082028301111561395f5761395e61313f565b5b9250929050565b60008083601f84011261397c5761397b613082565b5b8235905067ffffffffffffffff811115613999576139986134ba565b5b6020830191508360208202830111156139b5576139b461313f565b5b9250929050565b600080600080604085870312156139d6576139d5613078565b5b600085013567ffffffffffffffff8111156139f4576139f361307d565b5b613a0087828801613910565b9450945050602085013567ffffffffffffffff811115613a2357613a2261307d565b5b613a2f87828801613966565b925092505092959194509250565b600067ffffffffffffffff821115613a5857613a57613098565b5b602082029050602081019050919050565b6000613a74826135cf565b9050919050565b613a8481613a69565b8114613a8f57600080fd5b50565b600081359050613aa181613a7b565b92915050565b6000613aba613ab584613a3d565b6130f8565b90508083825260208201905060208402830185811115613add57613adc61313f565b5b835b81811015613b065780613af28882613a92565b845260208401935050602081019050613adf565b5050509392505050565b600082601f830112613b2557613b24613082565b5b8135613b35848260208601613aa7565b91505092915050565b600067ffffffffffffffff821115613b5957613b58613098565b5b602082029050602081019050919050565b6000613b7d613b7884613b3e565b6130f8565b90508083825260208201905060208402830185811115613ba057613b9f61313f565b5b835b81811015613bc95780613bb588826134a5565b845260208401935050602081019050613ba2565b5050509392505050565b600082601f830112613be857613be7613082565b5b8135613bf8848260208601613b6a565b91505092915050565b600080600080600060808688031215613c1d57613c1c613078565b5b600086013567ffffffffffffffff811115613c3b57613c3a61307d565b5b613c4788828901613b10565b955050602086013567ffffffffffffffff811115613c6857613c6761307d565b5b613c7488828901613bd3565b945050604086013567ffffffffffffffff811115613c9557613c9461307d565b5b613ca188828901613bd3565b935050606086013567ffffffffffffffff811115613cc257613cc161307d565b5b613cce888289016134bf565b92509250509295509295909350565b7f4e6f742077686974656c69737465640000000000000000000000000000000000600082015250565b6000613d13600f83612ff1565b9150613d1e82613cdd565b602082019050919050565b60006020820190508181036000830152613d4281613d06565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613d8382613323565b613d8d8185612fab565b9350613d9d81856020860161333f565b80840191505092915050565b6000613db58284613d78565b915081905092915050565b600081519050613dcf816135e1565b92915050565b600060208284031215613deb57613dea613078565b5b6000613df984828501613dc0565b91505092915050565b600082825260208201905092915050565b6000613e1f8385613e02565b9350613e2c83858461317a565b613e3583613087565b840190509392505050565b600060c082019050613e55600083018a61363a565b613e626020830189613464565b613e6f6040830188613464565b613e7c6060830187613464565b613e896080830186613464565b81810360a0830152613e9c818486613e13565b905098975050505050505050565b6000819050919050565b6000613ecf613eca613ec5846135af565b613eaa565b6135af565b9050919050565b6000613ee182613eb4565b9050919050565b6000613ef382613ed6565b9050919050565b613f0381613ee8565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000613f4082613ed6565b9050919050565b613f5081613f35565b82525050565b6000613f628383613f47565b60208301905092915050565b6000602082019050919050565b6000613f8682613f09565b613f908185613f14565b9350613f9b83613f25565b8060005b83811015613fcc578151613fb38882613f56565b9750613fbe83613f6e565b925050600181019050613f9f565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61400e8161345a565b82525050565b60006140208383614005565b60208301905092915050565b6000602082019050919050565b600061404482613fd9565b61404e8185613fe4565b935061405983613ff5565b8060005b8381101561408a5781516140718882614014565b975061407c8361402c565b92505060018101905061405d565b5085935050505092915050565b60006140a282613323565b6140ac8185613e02565b93506140bc81856020860161333f565b6140c581613087565b840191505092915050565b60006080820190506140e56000830187613efa565b81810360208301526140f78186613f7b565b9050818103604083015261410b8185614039565b9050818103606083015261411f8184614097565b905095945050505050565b7f77726f6e672063616c6c65720000000000000000000000000000000000000000600082015250565b6000614160600c83612ff1565b915061416b8261412a565b602082019050919050565b6000602082019050818103600083015261418f81614153565b9050919050565b61419f81613713565b81146141aa57600080fd5b50565b6000815190506141bc81614196565b92915050565b6000602082840312156141d8576141d7613078565b5b60006141e6848285016141ad565b91505092915050565b7f636f6c6c61746572616c4173736574206e6f74206c6973746564000000000000600082015250565b6000614225601a83612ff1565b9150614230826141ef565b602082019050919050565b6000602082019050818103600083015261425481614218565b9050919050565b7f646562744173736574206e6f74206c6973746564000000000000000000000000600082015250565b6000614291601483612ff1565b915061429c8261425b565b602082019050919050565b600060208201905081810360008301526142c081614284565b9050919050565b60006040820190506142dc600083018561363a565b6142e96020830184613464565b9392505050565b6000815190506142ff8161348e565b92915050565b60006020828403121561431b5761431a613078565b5b6000614329848285016142f0565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061436c8261345a565b91506143778361345a565b925082820390508181111561438f5761438e614332565b5b92915050565b60006143a08261345a565b91506143ab8361345a565b92508282026143b98161345a565b915082820484148315176143d0576143cf614332565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006144118261345a565b915061441c8361345a565b92508261442c5761442b6143d7565b5b828204905092915050565b60006144428261345a565b915061444d8361345a565b925082820190508082111561446557614464614332565b5b92915050565b6000606082019050614480600083018661363a565b61448d602083018561363a565b61449a6040830184613464565b949350505050565b7f4e4f20656e6f7567687420636f6c6c61746572616c2100000000000000000000600082015250565b60006144d8601683612ff1565b91506144e3826144a2565b602082019050919050565b60006020820190508181036000830152614507816144cb565b9050919050565b600061451982613ed6565b9050919050565b6145298161450e565b82525050565b600060c082019050614544600083018a61363a565b6145516020830189614520565b61455e6040830188614520565b61456b6060830187613464565b6145786080830186613464565b81810360a083015261458b818486613e13565b905098975050505050505050565b600081600f0b9050919050565b6145af81614599565b82525050565b60006060820190506145ca60008301866145a6565b6145d760208301856145a6565b6145e46040830184613464565b949350505050565b7f746172676574206c656e67746820213d2064617461206c656e67746800000000600082015250565b6000614622601c83612ff1565b915061462d826145ec565b602082019050919050565b6000602082019050818103600083015261465181614615565b9050919050565b600080fd5b600080fd5b600080fd5b6000808335600160200384360303811261468457614683614658565b5b80840192508235915067ffffffffffffffff8211156146a6576146a561465d565b5b6020830192506001820236038313156146c2576146c1614662565b5b509250929050565b60006146d68385612fab565b93506146e383858461317a565b82840190509392505050565b60006146fc8284866146ca565b91508190509392505050565b7f63616c6c206661696c6564000000000000000000000000000000000000000000600082015250565b600061473e600b83612ff1565b915061474982614708565b602082019050919050565b6000602082019050818103600083015261476d81614731565b9050919050565b7f466c6173686c6f616e206e6f7420696e697469616c697a6520627920736d617260008201527f7420636f6e747261637420726563656976657200000000000000000000000000602082015250565b60006147d0603383612ff1565b91506147db82614774565b604082019050919050565b600060208201905081810360008301526147ff816147c3565b9050919050565b7f7265706179206661696c65642100000000000000000000000000000000000000600082015250565b600061483c600d83612ff1565b915061484782614806565b602082019050919050565b6000602082019050818103600083015261486b8161482f565b9050919050565b7f494e53554646494349454e545f42414c414e43455f4245464f52455f53574150600082015250565b60006148a8602083612ff1565b91506148b382614872565b602082019050919050565b600060208201905081810360008301526148d78161489b565b9050919050565b7f73776170204641494c4544210000000000000000000000000000000000000000600082015250565b6000614914600c83612ff1565b915061491f826148de565b602082019050919050565b6000602082019050818103600083015261494381614907565b9050919050565b7f57524f4e475f42414c414e43455f41465445525f535741500000000000000000600082015250565b6000614980601883612ff1565b915061498b8261494a565b602082019050919050565b600060208201905081810360008301526149af81614973565b9050919050565b7f494e53554646494349454e545f414d4f554e545f524543454956454400000000600082015250565b60006149ec601c83612ff1565b91506149f7826149b6565b602082019050919050565b60006020820190508181036000830152614a1b816149df565b9050919050565b7f5341000000000000000000000000000000000000000000000000000000000000600082015250565b6000614a58600283612ff1565b9150614a6382614a22565b602082019050919050565b60006020820190508181036000830152614a8781614a4b565b9050919050565b7f5354000000000000000000000000000000000000000000000000000000000000600082015250565b6000614ac4600283612ff1565b9150614acf82614a8e565b602082019050919050565b60006020820190508181036000830152614af381614ab7565b9050919050565b7f5354460000000000000000000000000000000000000000000000000000000000600082015250565b6000614b30600383612ff1565b9150614b3b82614afa565b602082019050919050565b60006020820190508181036000830152614b5f81614b23565b9050919050565b6000608082019050614b7b60008301876145a6565b614b8860208301866145a6565b614b956040830185613464565b614ba26060830184613464565b9594505050505056fea264697066735822122036463a19809f5172f28071892056cf84387c9c30b364705189c5eb940acb59f164736f6c634300081800330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000016f75aa4bcab8a8fda2bcab023ca1ae581453ac5000000000000000000000000c58a7a5ef1f0f4cf5295e2bb318d29327ad35f6e