f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAADYLwAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIHJzYTsKcGtncGF0aCBjcnlwdG8vcnNhOwpwcmlvcml0eSA5OwppbXBvcnQgYnl0ZXMgYnl0ZXMgImJ5dGVzIjsKaW1wb3J0IGNyeXB0byBjcnlwdG8gImNyeXB0byI7CmltcG9ydCByYW5kIGNyeXB0by9yYW5kICJjcnlwdG8vcmFuZCI7CmltcG9ydCBzdWJ0bGUgY3J5cHRvL3N1YnRsZSAiY3J5cHRvL3N1YnRsZSI7CmltcG9ydCBlcnJvcnMgZXJyb3JzICJlcnJvcnMiOwppbXBvcnQgaGFzaCBoYXNoICJoYXNoIjsKaW1wb3J0IGlvIGlvICJpbyI7CmltcG9ydCBiaWcgbWF0aC9iaWcgIm1hdGgvYmlnIjsKaW5pdCByc2EgY3J5cHRvX3JzYS4uaW1wb3J0IDkgbWF0aCBtYXRoLi5pbXBvcnQgMSBydW50aW1lIHJ1bnRpbWUuLmltcG9ydCAxIHVuaWNvZGUgdW5pY29kZS4uaW1wb3J0IDEgc3RyY29udiBzdHJjb252Li5pbXBvcnQgMiBzeW5jIHN5bmMuLmltcG9ydCAyIGlvIGlvLi5pbXBvcnQgMyByYW5kIG1hdGhfcmFuZC4uaW1wb3J0IDMgcmVmbGVjdCByZWZsZWN0Li5pbXBvcnQgMyBzeXNjYWxsIHN5c2NhbGwuLmltcG9ydCAzIGJpbmFyeSBlbmNvZGluZ19iaW5hcnkuLmltcG9ydCA0IGJ5dGVzIGJ5dGVzLi5pbXBvcnQgNCBjaXBoZXIgY3J5cHRvX2NpcGhlci4uaW1wb3J0IDQgc3lzY2FsbCBpbnRlcm5hbF9zeXNjYWxsLi5pbXBvcnQgNCB0aW1lIHRpbWUuLmltcG9ydCA0IGJ1ZmlvIGJ1ZmlvLi5pbXBvcnQgNSBjcnlwdG8gY3J5cHRvLi5pbXBvcnQgNSBvcyBvcy4uaW1wb3J0IDUgZm10IGZtdC4uaW1wb3J0IDYgYmlnIG1hdGhfYmlnLi5pbXBvcnQgNyByYW5kIGNyeXB0b19yYW5kLi5pbXBvcnQgODsKdHlwZSA8dHlwZSAxICJDUlRWYWx1ZSIgPHR5cGUgMiBzdHJ1Y3QgeyBFeHAgPHR5cGUgMyAqPHR5cGUgNCAibWF0aC9iaWcuSW50IiA8dHlwZSA1IHN0cnVjdCB7IC5tYXRoL2JpZy5uZWcgPHR5cGUgLTE1PjsgLm1hdGgvYmlnLmFicyA8dHlwZSA2ICIubWF0aC9iaWcubmF0IiA8dHlwZSA3IFtdIDx0eXBlIDggIm1hdGgvYmlnLldvcmQiIDx0eXBlIC0xMz4+PgogZnVuYyAoeiA8dHlwZSA2PikgLm1hdGgvYmlnLm11bCAoeCA8dHlwZSA2PiwgeSA8dHlwZSA2PikgPHR5cGUgNj47CiBmdW5jICh6IDx0eXBlIDY+KSAubWF0aC9iaWcuc2NhbiAociA8dHlwZSA5ICJpby5SdW5lU2Nhbm5lciIgPHR5cGUgMTAgaW50ZXJmYWNlIHsgPyA8dHlwZSAxMSAiaW8uUnVuZVJlYWRlciIgPHR5cGUgMTIgaW50ZXJmYWNlIHsgUmVhZFJ1bmUgKCkgKHIgPHR5cGUgLTIxPiwgc2l6ZSA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PjsgVW5yZWFkUnVuZSAoKSA8dHlwZSAtMTk+OyB9Pj4sIGJhc2UgPHR5cGUgLTExPikgKD8gPHR5cGUgNj4sID8gPHR5cGUgLTExPiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHogPHR5cGUgNj4pIC5tYXRoL2JpZy5hZGQgKHggPHR5cGUgNj4sIHkgPHR5cGUgNj4pIDx0eXBlIDY+OwogZnVuYyAoeiA8dHlwZSA2PikgLm1hdGgvYmlnLmFuZE5vdCAoeCA8dHlwZSA2PiwgeSA8dHlwZSA2PikgPHR5cGUgNj47CiBmdW5jICh6IDx0eXBlIDY+KSAubWF0aC9iaWcuc2V0Qml0ICh4IDx0eXBlIDY+LCBpIDx0eXBlIC0xMj4sIGIgPHR5cGUgLTEyPikgPHR5cGUgNj47CiBmdW5jICh6IDx0eXBlIDY+KSAubWF0aC9iaWcuc3ViICh4IDx0eXBlIDY+LCB5IDx0eXBlIDY+KSA8dHlwZSA2PjsKIGZ1bmMgKHggPHR5cGUgNj4pIC5tYXRoL2JpZy5tb2RXIChkIDx0eXBlIDg+KSAociA8dHlwZSA4Pik7CiBmdW5jIChuIDx0eXBlIDY+KSAubWF0aC9iaWcucHJvYmFibHlQcmltZSAocmVwcyA8dHlwZSAtMTE+KSA8dHlwZSAtMTU+OwogZnVuYyAocSA8dHlwZSA2PikgLm1hdGgvYmlnLmNvbnZlcnRXb3JkcyAocyA8dHlwZSAxMyBbXSA8dHlwZSAtMjA+PiwgY2hhcnNldCA8dHlwZSAtMTY+LCBiIDx0eXBlIDg+LCBuZGlnaXRzIDx0eXBlIC0xMT4sIGJiIDx0eXBlIDg+LCB0YWJsZSA8dHlwZSAxNCBbXSA8dHlwZSAxNSAiLm1hdGgvYmlnLmRpdmlzb3IiIDx0eXBlIDE2IHN0cnVjdCB7IC5tYXRoL2JpZy5iYmIgPHR5cGUgNj47IC5tYXRoL2JpZy5uYml0cyA8dHlwZSAtMTE+OyAubWF0aC9iaWcubmRpZ2l0cyA8dHlwZSAtMTE+OyB9Pj4+KTsKIGZ1bmMgKHggPHR5cGUgNj4pIC5tYXRoL2JpZy5zdHJpbmcgKGNoYXJzZXQgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKIGZ1bmMgKHogPHR5cGUgNj4pIC5tYXRoL2JpZy5kaXZXICh4IDx0eXBlIDY+LCB5IDx0eXBlIDg+KSAocSA8dHlwZSA2PiwgciA8dHlwZSA4Pik7CiBmdW5jICh6IDx0eXBlIDY+KSAubWF0aC9iaWcuc2hyICh4IDx0eXBlIDY+LCBzIDx0eXBlIC0xMj4pIDx0eXBlIDY+OwogZnVuYyAoeiA8dHlwZSA2PikgLm1hdGgvYmlnLm11bFJhbmdlIChhIDx0eXBlIC04PiwgYiA8dHlwZSAtOD4pIDx0eXBlIDY+OwogZnVuYyAoeiA8dHlwZSA2PikgLm1hdGgvYmlnLm11bEFkZFdXICh4IDx0eXBlIDY+LCB5IDx0eXBlIDg+LCByIDx0eXBlIDg+KSA8dHlwZSA2PjsKIGZ1bmMgKHogPHR5cGUgNj4pIC5tYXRoL2JpZy5hbmQgKHggPHR5cGUgNj4sIHkgPHR5cGUgNj4pIDx0eXBlIDY+OwogZnVuYyAoeCA8dHlwZSA2PikgLm1hdGgvYmlnLmRlY2ltYWxTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHogPHR5cGUgNj4pIC5tYXRoL2JpZy54b3IgKHggPHR5cGUgNj4sIHkgPHR5cGUgNj4pIDx0eXBlIDY+OwogZnVuYyAoeiA8dHlwZSA2PikgLm1hdGgvYmlnLmJpdCAoaSA8dHlwZSAtMTI+KSA8dHlwZSAtMTI+OwogZnVuYyAoeiA8dHlwZSA2PikgLm1hdGgvYmlnLnNldCAoeCA8dHlwZSA2PikgPHR5cGUgNj47CiBmdW5jICh6IDx0eXBlIDY+KSAubWF0aC9iaWcucmFuZG9tIChyYW5kIDx0eXBlIDE3ICo8dHlwZSAxOCAibWF0aC9yYW5kLlJhbmQiICJyYW5kIiA8dHlwZSAxOSBzdHJ1Y3QgeyAubWF0aC9yYW5kLnNyYyA8dHlwZSAyMCAibWF0aC9yYW5kLlNvdXJjZSIgPHR5cGUgMjEgaW50ZXJmYWNlIHsgSW50NjMgKCkgPHR5cGUgLTQ+OyBTZWVkIChzZWVkIDx0eXBlIC00Pik7IH0+PjsgfT4KIGZ1bmMgKHIgPHR5cGUgMjIgKjx0eXBlIDE4Pj4pIEV4cEZsb2F0NjQgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKHIgPHR5cGUgMjI+KSBJbnQzMW4gKG4gPHR5cGUgLTM+KSA8dHlwZSAtMz47CiBmdW5jIChyIDx0eXBlIDIyPikgVWludDMyICgpIDx0eXBlIC03PjsKIGZ1bmMgKHIgPHR5cGUgMjI+KSBJbnRuIChuIDx0eXBlIC0xMT4pIDx0eXBlIC0xMT47CiBmdW5jIChyIDx0eXBlIDIyPikgUGVybSAobiA8dHlwZSAtMTE+KSA8dHlwZSAyMyBbXSA8dHlwZSAtMTE+PjsKIGZ1bmMgKHIgPHR5cGUgMjI+KSBOb3JtRmxvYXQ2NCAoKSA8dHlwZSAtMTA+OwogZnVuYyAociA8dHlwZSAyMj4pIEludDMxICgpIDx0eXBlIC0zPjsKIGZ1bmMgKHIgPHR5cGUgMjI+KSBGbG9hdDY0ICgpIDx0eXBlIC0xMD47CiBmdW5jIChyIDx0eXBlIDIyPikgU2VlZCAoc2VlZCA8dHlwZSAtND4pOwogZnVuYyAociA8dHlwZSAyMj4pIEludCAoKSA8dHlwZSAtMTE+OwogZnVuYyAociA8dHlwZSAyMj4pIEludDYzICgpIDx0eXBlIC00PjsKIGZ1bmMgKHIgPHR5cGUgMjI+KSBJbnQ2M24gKG4gPHR5cGUgLTQ+KSA8dHlwZSAtND47CiBmdW5jIChyIDx0eXBlIDIyPikgRmxvYXQzMiAoKSA8dHlwZSAtOT47Cj4+LCBsaW1pdCA8dHlwZSA2PiwgbiA8dHlwZSAtMTE+KSA8dHlwZSA2PjsKIGZ1bmMgKHogPHR5cGUgNj4pIC5tYXRoL2JpZy5vciAoeCA8dHlwZSA2PiwgeSA8dHlwZSA2PikgPHR5cGUgNj47CiBmdW5jICh4IDx0eXBlIDY+KSAubWF0aC9iaWcuY21wICh5IDx0eXBlIDY+KSAociA8dHlwZSAtMTE+KTsKIGZ1bmMgKHggPHR5cGUgNj4pIC5tYXRoL2JpZy5iaXRMZW4gKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHogPHR5cGUgNj4pIC5tYXRoL2JpZy5zZXRXb3JkICh4IDx0eXBlIDg+KSA8dHlwZSA2PjsKIGZ1bmMgKHogPHR5cGUgNj4pIC5tYXRoL2JpZy5zZXRVaW50NjQgKHggPHR5cGUgLTg+KSA8dHlwZSA2PjsKIGZ1bmMgKHogPHR5cGUgNj4pIC5tYXRoL2JpZy5kaXYgKHoyIDx0eXBlIDY+LCB1IDx0eXBlIDY+LCB2IDx0eXBlIDY+KSAocSA8dHlwZSA2PiwgciA8dHlwZSA2Pik7CiBmdW5jICh4IDx0eXBlIDY+KSAubWF0aC9iaWcudHJhaWxpbmdaZXJvQml0cyAoKSA8dHlwZSAtMTI+OwogZnVuYyAoeiA8dHlwZSA2PikgLm1hdGgvYmlnLmV4cE5OV2luZG93ZWQgKHggPHR5cGUgNj4sIHkgPHR5cGUgNj4sIG0gPHR5cGUgNj4pIDx0eXBlIDY+OwogZnVuYyAoeiA8dHlwZSA2PikgLm1hdGgvYmlnLmRpdkxhcmdlICh1IDx0eXBlIDY+LCB1SW4gPHR5cGUgNj4sIHYgPHR5cGUgNj4pIChxIDx0eXBlIDY+LCByIDx0eXBlIDY+KTsKIGZ1bmMgKHogPHR5cGUgNj4pIC5tYXRoL2JpZy5ub3JtICgpIDx0eXBlIDY+OwogZnVuYyAoeiA8dHlwZSA2PikgLm1hdGgvYmlnLnNldEJ5dGVzIChidWYgPHR5cGUgMjQgW10gPHR5cGUgLTIwPj4pIDx0eXBlIDY+OwogZnVuYyAoeiA8dHlwZSA2PikgLm1hdGgvYmlnLm1ha2UgKG4gPHR5cGUgLTExPikgPHR5cGUgNj47CiBmdW5jICh6IDx0eXBlIDY+KSAubWF0aC9iaWcuc2hsICh4IDx0eXBlIDY+LCBzIDx0eXBlIC0xMj4pIDx0eXBlIDY+OwogZnVuYyAoeiA8dHlwZSA2PikgLm1hdGgvYmlnLmJ5dGVzIChidWYgPHR5cGUgMjUgW10gPHR5cGUgLTIwPj4pIChpIDx0eXBlIC0xMT4pOwogZnVuYyAoeiA8dHlwZSA2PikgLm1hdGgvYmlnLmNsZWFyICgpOwogZnVuYyAoeiA8dHlwZSA2PikgLm1hdGgvYmlnLmV4cFdXICh4IDx0eXBlIDg+LCB5IDx0eXBlIDg+KSA8dHlwZSA2PjsKIGZ1bmMgKHogPHR5cGUgNj4pIC5tYXRoL2JpZy5leHBOTiAoeCA8dHlwZSA2PiwgeSA8dHlwZSA2PiwgbSA8dHlwZSA2PikgPHR5cGUgNj47Cj47IH0+CiBmdW5jICh6IDx0eXBlIDI2ICo8dHlwZSA0Pj4pIE5lZyAoeCA8dHlwZSAyNj4pIDx0eXBlIDI2PjsKIGZ1bmMgKHogPHR5cGUgMjY+KSBRdW9SZW0gKHggPHR5cGUgMjY+LCB5IDx0eXBlIDI2PiwgciA8dHlwZSAyNj4pICg/IDx0eXBlIDI2PiwgPyA8dHlwZSAyNj4pOwogZnVuYyAoeCA8dHlwZSAyNj4pIEJ5dGVzICgpIDx0eXBlIDI3IFtdIDx0eXBlIC0yMD4+OwogZnVuYyAoeiA8dHlwZSAyNj4pIFNldEJpdHMgKGFicyA8dHlwZSAyOCBbXSA8dHlwZSA4Pj4pIDx0eXBlIDI2PjsKIGZ1bmMgKHogPHR5cGUgMjY+KSBTZXRCaXQgKHggPHR5cGUgMjY+LCBpIDx0eXBlIC0xMT4sIGIgPHR5cGUgLTEyPikgPHR5cGUgMjY+OwogZnVuYyAoeiA8dHlwZSAyNj4pIFhvciAoeCA8dHlwZSAyNj4sIHkgPHR5cGUgMjY+KSA8dHlwZSAyNj47CiBmdW5jICh6IDx0eXBlIDI2PikgU2V0SW50NjQgKHggPHR5cGUgLTQ+KSA8dHlwZSAyNj47CiBmdW5jICh6IDx0eXBlIDI2PikgTm90ICh4IDx0eXBlIDI2PikgPHR5cGUgMjY+OwogZnVuYyAoeiA8dHlwZSAyNj4pIFVubWFyc2hhbEpTT04gKHRleHQgPHR5cGUgMjkgW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xOT47CiBmdW5jICh6IDx0eXBlIDI2PikgT3IgKHggPHR5cGUgMjY+LCB5IDx0eXBlIDI2PikgPHR5cGUgMjY+OwogZnVuYyAoeiA8dHlwZSAyNj4pIFNldFVpbnQ2NCAoeCA8dHlwZSAtOD4pIDx0eXBlIDI2PjsKIGZ1bmMgKHggPHR5cGUgMjY+KSBJbnQ2NCAoKSA8dHlwZSAtND47CiBmdW5jICh6IDx0eXBlIDI2PikgLm1hdGgvYmlnLnNjYW4gKHIgPHR5cGUgOT4sIGJhc2UgPHR5cGUgLTExPikgKD8gPHR5cGUgMjY+LCA/IDx0eXBlIC0xMT4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh6IDx0eXBlIDI2PikgR0NEICh4IDx0eXBlIDI2PiwgeSA8dHlwZSAyNj4sIGEgPHR5cGUgMjY+LCBiIDx0eXBlIDI2PikgPHR5cGUgMjY+OwogZnVuYyAoeiA8dHlwZSAyNj4pIFJlbSAoeCA8dHlwZSAyNj4sIHkgPHR5cGUgMjY+KSA8dHlwZSAyNj47CiBmdW5jICh4IDx0eXBlIDI2PikgQml0IChpIDx0eXBlIC0xMT4pIDx0eXBlIC0xMj47CiBmdW5jICh4IDx0eXBlIDI2PikgQml0cyAoKSA8dHlwZSAzMCBbXSA8dHlwZSA4Pj47CiBmdW5jICh6IDx0eXBlIDI2PikgU2V0Qnl0ZXMgKGJ1ZiA8dHlwZSAzMSBbXSA8dHlwZSAtMjA+PikgPHR5cGUgMjY+OwogZnVuYyAoeiA8dHlwZSAyNj4pIERpdk1vZCAoeCA8dHlwZSAyNj4sIHkgPHR5cGUgMjY+LCBtIDx0eXBlIDI2PikgKD8gPHR5cGUgMjY+LCA/IDx0eXBlIDI2Pik7CiBmdW5jICh6IDx0eXBlIDI2PikgUnNoICh4IDx0eXBlIDI2PiwgbiA8dHlwZSAtMTI+KSA8dHlwZSAyNj47CiBmdW5jICh4IDx0eXBlIDI2PikgQ21wICh5IDx0eXBlIDI2PikgKHIgPHR5cGUgLTExPik7CiBmdW5jICh6IDx0eXBlIDI2PikgU2NhbiAocyA8dHlwZSAzMiAiZm10LlNjYW5TdGF0ZSIgImZtdCIgPHR5cGUgMzMgaW50ZXJmYWNlIHsgUmVhZFJ1bmUgKCkgKHIgPHR5cGUgLTIxPiwgc2l6ZSA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IFVucmVhZFJ1bmUgKCkgPHR5cGUgLTE5PjsgU2tpcFNwYWNlICgpOyBUb2tlbiAoc2tpcFNwYWNlIDx0eXBlIC0xNT4sIGYgPHR5cGUgMzQgKD8gPHR5cGUgLTIxPikgPHR5cGUgLTE1Pj4pICh0b2tlbiA8dHlwZSAzNSBbXSA8dHlwZSAtMjA+PiwgZXJyIDx0eXBlIC0xOT4pOyBXaWR0aCAoKSAod2lkIDx0eXBlIC0xMT4sIG9rIDx0eXBlIC0xNT4pOyBSZWFkIChidWYgPHR5cGUgMzYgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+LCBjaCA8dHlwZSAtMjE+KSA8dHlwZSAtMTk+OwogZnVuYyAoeCA8dHlwZSAyNj4pIEdvYkVuY29kZSAoKSAoPyA8dHlwZSAzNyBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHggPHR5cGUgMjY+KSBQcm9iYWJseVByaW1lIChuIDx0eXBlIC0xMT4pIDx0eXBlIC0xNT47CiBmdW5jICh4IDx0eXBlIDI2PikgU2lnbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAoeiA8dHlwZSAyNj4pIE1vZCAoeCA8dHlwZSAyNj4sIHkgPHR5cGUgMjY+KSA8dHlwZSAyNj47CiBmdW5jICh6IDx0eXBlIDI2PikgRXhwICh4IDx0eXBlIDI2PiwgeSA8dHlwZSAyNj4sIG0gPHR5cGUgMjY+KSA8dHlwZSAyNj47CiBmdW5jICh4IDx0eXBlIDI2PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh6IDx0eXBlIDI2PikgQWJzICh4IDx0eXBlIDI2PikgPHR5cGUgMjY+OwogZnVuYyAoeiA8dHlwZSAyNj4pIFVubWFyc2hhbFRleHQgKHRleHQgPHR5cGUgMzggW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xOT47CiBmdW5jICh6IDx0eXBlIDI2PikgUmFuZCAocm5kIDx0eXBlIDE3PiwgbiA8dHlwZSAyNj4pIDx0eXBlIDI2PjsKIGZ1bmMgKHogPHR5cGUgMjY+KSBBbmQgKHggPHR5cGUgMjY+LCB5IDx0eXBlIDI2PikgPHR5cGUgMjY+OwogZnVuYyAoeiA8dHlwZSAyNj4pIE1vZEludmVyc2UgKGcgPHR5cGUgMjY+LCBuIDx0eXBlIDI2PikgPHR5cGUgMjY+OwogZnVuYyAoeiA8dHlwZSAyNj4pIFF1byAoeCA8dHlwZSAyNj4sIHkgPHR5cGUgMjY+KSA8dHlwZSAyNj47CiBmdW5jICh6IDx0eXBlIDI2PikgQWRkICh4IDx0eXBlIDI2PiwgeSA8dHlwZSAyNj4pIDx0eXBlIDI2PjsKIGZ1bmMgKHogPHR5cGUgMjY+KSBMc2ggKHggPHR5cGUgMjY+LCBuIDx0eXBlIC0xMj4pIDx0eXBlIDI2PjsKIGZ1bmMgKHogPHR5cGUgMjY+KSBBbmROb3QgKHggPHR5cGUgMjY+LCB5IDx0eXBlIDI2PikgPHR5cGUgMjY+OwogZnVuYyAoeiA8dHlwZSAyNj4pIFNldCAoeCA8dHlwZSAyNj4pIDx0eXBlIDI2PjsKIGZ1bmMgKHogPHR5cGUgMjY+KSBNYXJzaGFsVGV4dCAoKSAodGV4dCA8dHlwZSAzOSBbXSA8dHlwZSAtMjA+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoeiA8dHlwZSAyNj4pIE11bCAoeCA8dHlwZSAyNj4sIHkgPHR5cGUgMjY+KSA8dHlwZSAyNj47CiBmdW5jICh6IDx0eXBlIDI2PikgRGl2ICh4IDx0eXBlIDI2PiwgeSA8dHlwZSAyNj4pIDx0eXBlIDI2PjsKIGZ1bmMgKHogPHR5cGUgMjY+KSBCaW5vbWlhbCAobiA8dHlwZSAtND4sIGsgPHR5cGUgLTQ+KSA8dHlwZSAyNj47CiBmdW5jICh4IDx0eXBlIDI2PikgRm9ybWF0IChzIDx0eXBlIDQwICJmbXQuU3RhdGUiIDx0eXBlIDQxIGludGVyZmFjZSB7IFdyaXRlIChiIDx0eXBlIDQyIFtdIDx0eXBlIC0yMD4+KSAocmV0IDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgV2lkdGggKCkgKHdpZCA8dHlwZSAtMTE+LCBvayA8dHlwZSAtMTU+KTsgUHJlY2lzaW9uICgpIChwcmVjIDx0eXBlIC0xMT4sIG9rIDx0eXBlIC0xNT4pOyBGbGFnIChjIDx0eXBlIC0xMT4pIDx0eXBlIC0xNT47IH0+PiwgY2ggPHR5cGUgLTIxPik7CiBmdW5jICh6IDx0eXBlIDI2PikgTXVsUmFuZ2UgKGEgPHR5cGUgLTQ+LCBiIDx0eXBlIC00PikgPHR5cGUgMjY+OwogZnVuYyAoeiA8dHlwZSAyNj4pIFNldFN0cmluZyAocyA8dHlwZSAtMTY+LCBiYXNlIDx0eXBlIC0xMT4pICg/IDx0eXBlIDI2PiwgPyA8dHlwZSAtMTU+KTsKIGZ1bmMgKHggPHR5cGUgMjY+KSBVaW50NjQgKCkgPHR5cGUgLTg+OwogZnVuYyAoeiA8dHlwZSAyNj4pIE1hcnNoYWxKU09OICgpICg/IDx0eXBlIDQzIFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoeCA8dHlwZSAyNj4pIEJpdExlbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAoeiA8dHlwZSAyNj4pIEdvYkRlY29kZSAoYnVmIDx0eXBlIDQ0IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+OwogZnVuYyAoeiA8dHlwZSAyNj4pIC5tYXRoL2JpZy5iaW5hcnlHQ0QgKGEgPHR5cGUgMjY+LCBiIDx0eXBlIDI2PikgPHR5cGUgMjY+OwogZnVuYyAoeiA8dHlwZSAyNj4pIFN1YiAoeCA8dHlwZSAyNj4sIHkgPHR5cGUgMjY+KSA8dHlwZSAyNj47Cj4+OyBDb2VmZiA8dHlwZSAzPjsgUiA8dHlwZSAzPjsgfT4+OwpmdW5jIERlY3J5cHRPQUVQIChoYXNoIDx0eXBlIDQ1ICJoYXNoLkhhc2giIDx0eXBlIDQ2IGludGVyZmFjZSB7ID8gPHR5cGUgNDcgImlvLldyaXRlciIgPHR5cGUgNDggaW50ZXJmYWNlIHsgV3JpdGUgKHAgPHR5cGUgNDkgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+OyBTdW0gKGIgPHR5cGUgNTAgW10gPHR5cGUgLTIwPj4pIDx0eXBlIDUxIFtdIDx0eXBlIC0yMD4+OyBSZXNldCAoKTsgU2l6ZSAoKSA8dHlwZSAtMTE+OyBCbG9ja1NpemUgKCkgPHR5cGUgLTExPjsgfT4+LCByYW5kb20gPHR5cGUgNTIgImlvLlJlYWRlciIgPHR5cGUgNTMgaW50ZXJmYWNlIHsgUmVhZCAocCA8dHlwZSA1NCBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj4sIHByaXYgPHR5cGUgNTUgKjx0eXBlIDU2ICJQcml2YXRlS2V5IiA8dHlwZSA1NyBzdHJ1Y3QgeyA/IDx0eXBlIDU4ICJQdWJsaWNLZXkiIDx0eXBlIDU5IHN0cnVjdCB7IE4gPHR5cGUgMz47IEUgPHR5cGUgLTExPjsgfT4+OyBEIDx0eXBlIDM+OyBQcmltZXMgPHR5cGUgNjAgW10gPHR5cGUgMz4+OyBQcmVjb21wdXRlZCA8dHlwZSA2MSAiUHJlY29tcHV0ZWRWYWx1ZXMiIDx0eXBlIDYyIHN0cnVjdCB7IERwIDx0eXBlIDM+OyBEcSA8dHlwZSAzPjsgUWludiA8dHlwZSAzPjsgQ1JUVmFsdWVzIDx0eXBlIDYzIFtdIDx0eXBlIDE+PjsgfT4+OyB9PgogZnVuYyAocHJpdiA8dHlwZSA2NCAqPHR5cGUgNTY+PikgUHVibGljICgpIDx0eXBlIDY1ICJjcnlwdG8uUHVibGljS2V5IiA8dHlwZSA2NiBpbnRlcmZhY2UgeyB9Pj47CiBmdW5jIChwcml2IDx0eXBlIDY0PikgU2lnbiAocmFuZCA8dHlwZSA1Mj4sIG1zZyA8dHlwZSA2NyBbXSA8dHlwZSAtMjA+Piwgb3B0cyA8dHlwZSA2OCAiY3J5cHRvLlNpZ25lck9wdHMiIDx0eXBlIDY5IGludGVyZmFjZSB7IEhhc2hGdW5jICgpIDx0eXBlIDcwICJjcnlwdG8uSGFzaCIgPHR5cGUgLTEyPgogZnVuYyAoaCA8dHlwZSA3MD4pIEhhc2hGdW5jICgpIDx0eXBlIDcwPjsKIGZ1bmMgKGggPHR5cGUgNzA+KSBBdmFpbGFibGUgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGggPHR5cGUgNzA+KSBOZXcgKCkgPHR5cGUgNDU+OwogZnVuYyAoaCA8dHlwZSA3MD4pIFNpemUgKCkgPHR5cGUgLTExPjsKPjsgfT4+KSAoPyA8dHlwZSA3MSBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHByaXYgPHR5cGUgNjQ+KSBWYWxpZGF0ZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAocHJpdiA8dHlwZSA2ND4pIFByZWNvbXB1dGUgKCk7Cj4+LCBjaXBoZXJ0ZXh0IDx0eXBlIDcyIFtdIDx0eXBlIC0yMD4+LCBsYWJlbCA8dHlwZSA3MyBbXSA8dHlwZSAtMjA+PikgKG1zZyA8dHlwZSA3NCBbXSA8dHlwZSAtMjA+PiwgZXJyIDx0eXBlIC0xOT4pOwpmdW5jIERlY3J5cHRQS0NTMXYxNSAocmFuZCA8dHlwZSA1Mj4sIHByaXYgPHR5cGUgNzUgKjx0eXBlIDU2Pj4sIGNpcGhlcnRleHQgPHR5cGUgNzYgW10gPHR5cGUgLTIwPj4pIChvdXQgPHR5cGUgNzcgW10gPHR5cGUgLTIwPj4sIGVyciA8dHlwZSAtMTk+KTsKZnVuYyBEZWNyeXB0UEtDUzF2MTVTZXNzaW9uS2V5IChyYW5kIDx0eXBlIDUyPiwgcHJpdiA8dHlwZSA3OCAqPHR5cGUgNTY+PiwgY2lwaGVydGV4dCA8dHlwZSA3OSBbXSA8dHlwZSAtMjA+Piwga2V5IDx0eXBlIDgwIFtdIDx0eXBlIC0yMD4+KSAoZXJyIDx0eXBlIC0xOT4pOwpmdW5jIEVuY3J5cHRPQUVQIChoYXNoIDx0eXBlIDQ1PiwgcmFuZG9tIDx0eXBlIDUyPiwgcHViIDx0eXBlIDgxICo8dHlwZSA1OD4+LCBtc2cgPHR5cGUgODIgW10gPHR5cGUgLTIwPj4sIGxhYmVsIDx0eXBlIDgzIFtdIDx0eXBlIC0yMD4+KSAob3V0IDx0eXBlIDg0IFtdIDx0eXBlIC0yMD4+LCBlcnIgPHR5cGUgLTE5Pik7CmZ1bmMgRW5jcnlwdFBLQ1MxdjE1IChyYW5kIDx0eXBlIDUyPiwgcHViIDx0eXBlIDg1ICo8dHlwZSA1OD4+LCBtc2cgPHR5cGUgODYgW10gPHR5cGUgLTIwPj4pIChvdXQgPHR5cGUgODcgW10gPHR5cGUgLTIwPj4sIGVyciA8dHlwZSAtMTk+KTsKdmFyIEVyckRlY3J5cHRpb24gPHR5cGUgLTE5PjsKdmFyIEVyck1lc3NhZ2VUb29Mb25nIDx0eXBlIC0xOT47CnZhciBFcnJWZXJpZmljYXRpb24gPHR5cGUgLTE5PjsKZnVuYyBHZW5lcmF0ZUtleSAocmFuZG9tIDx0eXBlIDUyPiwgYml0cyA8dHlwZSAtMTE+KSAocHJpdiA8dHlwZSA1NT4sIGVyciA8dHlwZSAtMTk+KTsKZnVuYyBHZW5lcmF0ZU11bHRpUHJpbWVLZXkgKHJhbmRvbSA8dHlwZSA1Mj4sIG5wcmltZXMgPHR5cGUgLTExPiwgYml0cyA8dHlwZSAtMTE+KSAocHJpdiA8dHlwZSA1NT4sIGVyciA8dHlwZSAtMTk+KTsKdHlwZSA8dHlwZSA4OCAiUFNTT3B0aW9ucyIgPHR5cGUgODkgc3RydWN0IHsgU2FsdExlbmd0aCA8dHlwZSAtMTE+OyBIYXNoIDx0eXBlIDcwPjsgfT4KIGZ1bmMgKHBzc09wdHMgPHR5cGUgOTAgKjx0eXBlIDg4Pj4pIEhhc2hGdW5jICgpIDx0eXBlIDcwPjsKIGZ1bmMgKG9wdHMgPHR5cGUgOTA+KSAuY3J5cHRvL3JzYS5zYWx0TGVuZ3RoICgpIDx0eXBlIC0xMT47Cj47CmNvbnN0IFBTU1NhbHRMZW5ndGhBdXRvID0gMCA7CmNvbnN0IFBTU1NhbHRMZW5ndGhFcXVhbHNIYXNoID0gLTEgOwp0eXBlIDx0eXBlIDYxPjsKdHlwZSA8dHlwZSA1Nj47CnR5cGUgPHR5cGUgNTg+OwpmdW5jIFNpZ25QS0NTMXYxNSAocmFuZCA8dHlwZSA1Mj4sIHByaXYgPHR5cGUgOTEgKjx0eXBlIDU2Pj4sIGhhc2ggPHR5cGUgNzA+LCBoYXNoZWQgPHR5cGUgOTIgW10gPHR5cGUgLTIwPj4pIChzIDx0eXBlIDkzIFtdIDx0eXBlIC0yMD4+LCBlcnIgPHR5cGUgLTE5Pik7CmZ1bmMgU2lnblBTUyAocmFuZCA8dHlwZSA1Mj4sIHByaXYgPHR5cGUgOTQgKjx0eXBlIDU2Pj4sIGhhc2ggPHR5cGUgNzA+LCBoYXNoZWQgPHR5cGUgOTUgW10gPHR5cGUgLTIwPj4sIG9wdHMgPHR5cGUgOTA+KSAocyA8dHlwZSA5NiBbXSA8dHlwZSAtMjA+PiwgZXJyIDx0eXBlIC0xOT4pOwpmdW5jIFZlcmlmeVBLQ1MxdjE1IChwdWIgPHR5cGUgOTcgKjx0eXBlIDU4Pj4sIGhhc2ggPHR5cGUgNzA+LCBoYXNoZWQgPHR5cGUgOTggW10gPHR5cGUgLTIwPj4sIHNpZyA8dHlwZSA5OSBbXSA8dHlwZSAtMjA+PikgKGVyciA8dHlwZSAtMTk+KTsKZnVuYyBWZXJpZnlQU1MgKHB1YiA8dHlwZSAxMDAgKjx0eXBlIDU4Pj4sIGhhc2ggPHR5cGUgNzA+LCBoYXNoZWQgPHR5cGUgMTAxIFtdIDx0eXBlIC0yMD4+LCBzaWcgPHR5cGUgMTAyIFtdIDx0eXBlIC0yMD4+LCBvcHRzIDx0eXBlIDkwPikgPHR5cGUgLTE5PjsKY2hlY2tzdW0gNjU0NjAxRUQ4QUM3NzhFQTlBRjBFMDAyMDUzQzU0MDJBRUZCMTMzMzsKAC5zeW10YWIALnN0cnRhYgAuc2hzdHJ0YWIALmdvX2V4cG9ydAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAEAAAAAAAAAAAAAADQAAABaLwAAAAAAAAAAAAABAAAAAAAAABEAAAADAAAAAAAAAAAAAACOLwAAJgAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAAAAAAAAAAAtC8AACAAAAAEAAAAAgAAAAQAAAAQAAAACQAAAAMAAAAAAAAAAAAAANQvAAABAAAAAAAAAAAAAAABAAAAAAAAAA==