88900|ref.dbase|50|1234422991|bi.idan [at] gmail.com|c29tZSBvZiB5b3UgY29udGFjdGVkIG1lIGFib3V0IG1lbW8gZmllbGRzIGFuZCBteSBzY3JpcHQsIHNvIGknbGwganVzdCBwb3N0IG15IGFuc3dlcnMgb24gdGhlIGNvbW1vbiBxdWVzdGlvbiBoZXJlLgoKKG5vdGU6IHRoaXMgaXMgbm90IGFuIGFkdiBmb3IgYW55IHByb2dyYW0sIG9ubHkgd2hhdCBpIHVzZWQgZm9yIG15c2VsZiwgYW5kIGl0J3MgZnJlZSkKCnNvLCB0aGVyZSBhcmUgMiBvcHRpb25zIGlmIHlvdSB3YW50IHRvIGNyZWF0ZS9yZWFkIG1lbW8gZmllbGRzOgoKMS4gdXNlIGEgbGlicmFyeSBmb3IgamF2YS9jKysvYyMgdG8gYnVpbGQgYSBicmlkZ2UgYmV0d2VlbiBwaHAgYW5kIGRiZiBmaWxlLiBpJ3ZlIHVzZWQgZGJmMmphdmEuIGFsdGhvdWd0aCBpdCdzIG5vdCBuZWFyIGNvbXBsZXRlIGFzIG15IG90aGVyIG9wdGlvbiwgaXQncyBhIGdvb2Qgc3RhcnQuIChodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZGJmMmphdmEtbGlicmFyeS8pCgoyLiB1c2UgYW4gZXh0ZXJuYWwgcHJvZ3JhbSB3aXRoIHBpcGVzIHRvIGdyYWIgdGhlIG91dHB1dC4gaSB1c2VkIGNkYmZsaXRlLCAoaHR0cDovL3d3dy53aGl0ZXRvd24uY29tL2NkYmZsaXRlLykuIGl0J3MgZnJlZSwgYW5kIHByZXR0eSBtdWNoIGdpdmVzIHlvdSBldmVyeXRoaW5nIHlvdSBuZWVkIHRvIGhhbmRsZSB0aG9zZSBkYmYgZmlsZXMuIGknbSBub3Qgc3VyZSBhYm91dCBiaWcgZGF0YWJhc2VzIGFuZCBpdCBzZWVtcyB5b3UgbmVlZCB0byByZWdpc3Rlci9idXkgaXQsIGJ1dCBpdCdzIGFnYWluLCBhIHN0YXJ0LgoKaG9wZSBpdCBoZWxwcyBzb21lIG9mIHlvdSB3aG8gbmVlZHMgdG8gaGFuZGxlIHRob3NlIGRhdGFiYXNlIGZpbGVzLAoKR29vZCBsdWNrLAppZGFu|4|4 74547|ref.dbase|53|1176741635|bi.idan AT gmail.com|SSBrbm93IGxvdHMgb2YgeW91IGRvc2VudCByZWFsbHkgdXNlIGRiYXNlLCBidXQgaSd2ZSBidWlsZGVkIGEgY2xhc3MgdG8gaGVscCB0aGUgb25lIGhvdyBkb3NlLgooc29ycnkgZm9yIGJhZCBlbmdsaXNoKQoKLSBkYmFzZS5waHAKCjw/cGhwCgpzZXRfdGltZV9saW1pdCAoMCk7Ci8vIHNpdGVfcGF0aCBkZWZpbmVkIGJ5IHBhcmVudApyZXF1aXJlX29uY2UgKFNJVEVfUEFUSC4gJy9zZXJ2ZXIvcGhwL2xpYnMvZGJhc2UvaGFuZGxlci5waHAnKTsgCgovKiBEQmFzZSAoZGJmKQogKgltYW5hZ2UgZGJmIGZpbGVzLCBleHBvcnRzIGFuZCBzZWFyY2ggZnVuY3Rpb25hbGl0eQogKgl3aXRoIGJ1aWxkaW4gb3B0aW1pemVycyBmb3IgZmFzdCBwZXJmb3JtYW5jZQogKi8KCmNsYXNzIERCYXNlCnsKCXByaXZhdGUgJGhhbmRsZXIgPSBmYWxzZTsKCXByaXZhdGUgJHNlYXJjaG9wdCA9IGFycmF5ICgpOyAvLyBTZWFyY2ggb3B0aW1pemVyCgkKCXByaXZhdGUgZnVuY3Rpb24gdW5sb2FkICgpCgl7CgkJaWYgKCR0aGlzLT4gaGFuZGxlciAhPT0gZmFsc2UpCgkJCXVuc2V0ICgkdGhpcy0+IGhhbmRsZXIpOwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QgKCRmaWxlID0gZmFsc2UpCgl7CgkJaWYgKCRmaWxlICE9PSBmYWxzZSkKCQkJJHRoaXMtPiBsb2FkICgkZmlsZSk7Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBfX2Rlc3RydWN0ICgpCgl7CgkJJHRoaXMtPiB1bmxvYWQgKCk7Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBsb2FkICgkZmlsZSkKCXsKCQkkcmVzb3VyY2UgPSBkYmFzZV9vcGVuICgkZmlsZSwgMCk7CgkJJHRoaXMtPiBoYW5kbGVyID0gbmV3IERCYXNlX0hhbmRsZXIgKCRyZXNvdXJjZSk7CgkJCgkJcmV0dXJuICR0aGlzLT4gaGFuZGxlcjsKCX0KCQoJLyogU2VhcmNoCgkgKglzZWFyY2ggZm9yIHN0cmluZyBpbnNpZGUgaGVhZGVyCgkgKglyZXR1cm5zIHJlY29yZCBudW1iZXIKCSAqCQlmYWxzZSByZXR1cm5lZCBpZiBub3QgZm91bmQgb3IgZXJyb3Igb2NjdXJyZWQKCSAqCWxpbWl0X3Jlc3VsdHMgZ2V0cyBpbnQgb3IgZmFsc2UsIGxpbWl0X3Jlc3VsdHMgZXF1ZWxzIG9uZSB3aWxsIGxpbWl0IHRoZQoJICoJCXNlYXJjaCByZXN1bHRzIGZvciBvbmUgcmVzdWx0IG9ubHksIGZhbHNlIGZvciBubyBsaW1pdAoJICovCglwdWJsaWMgZnVuY3Rpb24gc2VhcmNoICgkaGVhZGVyVGV4dCwgJHN0cmluZywgJGxpbWl0X3Jlc3VsdHMgPSBmYWxzZSwgJGhhbmRsZXIgPSBmYWxzZSkKCXsKCQlpZiAoJGhhbmRsZXIgPT09IGZhbHNlKQoJCQkkaGFuZGxlciA9ICR0aGlzLT4gaGFuZGxlcjsKCQkJCgkJaWYgKCR0aGlzLT4gc2VhcmNob3B0IFskaGVhZGVyVGV4dF1bJHN0cmluZ10pCgkJCXJldHVybiAkdGhpcy0+IHNlYXJjaG9wdCBbJGhlYWRlclRleHRdWyRzdHJpbmddOwoJCWVsc2UgCgkJewoJCQkkc2l6ZSA9ICRoYW5kbGVyLT4gZ2V0U2l6ZSAoKTsKCQkJaWYgKCAoICRoZWFkZXJOdW1iZXIgPSAkaGFuZGxlci0+IGdldEhlYWRlck51bWJlciAoJGhlYWRlclRleHQpICkgIT09IGZhbHNlKQoJCQl7CgkJCQkkcmVzdWx0cyA9IGFycmF5ICgpOwoJCQkJZm9yICgkaSA9IDE7ICRpIDwgJHNpemU7ICRpKyspCgkJCQl7CgkJCQkJJHJlY29yZCA9ICRoYW5kbGVyLT4gZ2V0UmVjb3JkICgkaSwgZmFsc2UpOyAvLyBEaXNhYmxlZCBvcHRpbWl6ZXIgdG8gcHJldmVudCBtZW1vcnkgb3ZlcmZsb3cKCQkJCQlpZiAodHJpbSAoJHJlY29yZCBbJGhlYWRlck51bWJlcl0pID09ICRzdHJpbmcpCgkJCQkJewoJCQkJCQkkcmVzdWx0c1tdID0gJGk7CgkJCQkJCQoJCQkJCQlpZiAoICgkbGltaXRfcmVzdWx0cyAhPT0gZmFsc2UpICYmIChzaXplb2YgKCRyZXN1bHRzKSA9PSAkbGltaXRfcmVzdWx0cykgKQoJCQkJCQkJYnJlYWs7CgkJCQkJfQoJCQkJfQoJCQkJCgkJCQlpZiAoc2l6ZW9mICgkcmVzdWx0cykgPiAwKQoJCQkJewoJCQkJCSR0aGlzLT4gc2VhcmNob3B0IFskaGVhZGVyVGV4dF1bJHN0cmluZ10gPSAkcmVzdWx0czsKCQkJCQlyZXR1cm4gJHRoaXMtPiBzZWFyY2ggKCRoZWFkZXJUZXh0LCAkc3RyaW5nLCAkaGFuZGxlcik7CgkJCQl9CgkJCQkKCQkJCXJldHVybiBmYWxzZTsKCQkJfSBlbHNlIAoJCQkJcmV0dXJuIGZhbHNlOwoJCX0KCX0KfQoKPz4KCi0gZGJhc2VfaGFuZGxlci5waHAKCjw/cGhwCgovKiBEQmFzZSBIYW5kbGVyIChkYmYpCiAqCWhhbmRsZXMgZGJhc2UgcmVzb3VyY2UKICovCgpjbGFzcyBEQmFzZV9IYW5kbGVyCnsKCXByaXZhdGUgJHJlc291cmNlOwoJcHJpdmF0ZSAkc2l6ZTsgLy8gUmVjb3JkcyBDb3VudAoJcHJpdmF0ZSAkaGVhZGVyID0gYXJyYXkgKCk7Cglwcml2YXRlICRkYXRhb3B0ID0gYXJyYXkgKCk7IC8vIERhdGEgb3B0aW1pemVyCgkKCXByaXZhdGUgZnVuY3Rpb24gc2V0SGVhZGVyICgpCgl7CgkJJHRoaXMtPiBoZWFkZXIgPSBkYmFzZV9nZXRfaGVhZGVyX2luZm8gKCR0aGlzLT4gcmVzb3VyY2UpOwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QgKCRyZXNvdXJjZSkKCXsKCQkkdGhpcy0+IHJlc291cmNlID0gJHJlc291cmNlOwoJCSR0aGlzLT4gc2V0SGVhZGVyICgpOwoJCSR0aGlzLT4gc2l6ZSA9IGRiYXNlX251bXJlY29yZHMgKCR0aGlzLT4gcmVzb3VyY2UpOwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gX19kZXN0cnVjdCAoKQoJewoJCWRiYXNlX2Nsb3NlICgkdGhpcy0+IHJlc291cmNlKTsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIGdldFJlY29yZCAoJHJlY29yZF9udW1iZXIsICRkYXRhb3B0ID0gdHJ1ZSkKCXsKCQlpZiAoJHJlY29yZF9udW1iZXIgPiAkdGhpcy0+IHNpemUpCgkJCXJldHVybiBmYWxzZTsKCQllbHNlCgkJewoJCQlpZiAoJHRoaXMtPiBkYXRhb3B0IFskcmVjb3JkX251bWJlcl0pCgkJCQlyZXR1cm4gJHRoaXMtPiBkYXRhb3B0IFskcmVjb3JkX251bWJlcl07CgkJCWVsc2UgCgkJCXsKCQkJCSRyZWNvcmQgPSBkYmFzZV9nZXRfcmVjb3JkICgkdGhpcy0+IHJlc291cmNlLCAkcmVjb3JkX251bWJlcik7CgkJCQlpZiAoJGRhdGFvcHQgPT09IHRydWUpIC8vIERhdGEgc2F2aW5nIG9wdGltaXplcgoJCQkJewoJCQkJCSR0aGlzLT4gZGF0YW9wdCBbJHJlY29yZF9udW1iZXJdID0gJHJlY29yZDsKCQkJCQlyZXR1cm4gJHRoaXMtPiBnZXRSZWNvcmQgKCRyZWNvcmRfbnVtYmVyKTsKCQkJCX0gZWxzZSAKCQkJCQlyZXR1cm4gJHJlY29yZDsKCQkJfQoJCX0KCX0KCQoJcHVibGljIGZ1bmN0aW9uIGdldEhlYWRlck51bWJlciAoJGhlYWRlclRleHQpCgl7CgkJZm9yZWFjaCAoJHRoaXMtPiBoZWFkZXIgYXMgJGluZGV4ID0+ICRoZWFkZXIpCgkJewoJCQlpZiAoJGhlYWRlciBbJ25hbWUnXSA9PSAkaGVhZGVyVGV4dCkKCQkJewoJCQkJcmV0dXJuICRpbmRleDsKCQkJCWJyZWFrOwoJCQl9CgkJfQoJCQoJCXJldHVybiBmYWxzZTsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIGdldEhlYWRlciAoJGhlYWRlck51bWJlcikKCXsKCQlpZiAoJGhlYWRlck51bWJlciA8PSBzaXplb2YgKCR0aGlzLT4gaGVhZGVyKSkKCQkJcmV0dXJuICR0aGlzLT4gaGVhZGVyIFskaGVhZGVyTnVtYmVyXTsKCQllbHNlIAoJCQlyZXR1cm4gZmFsc2U7Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBnZXRTaXplICgpCgl7CgkJcmV0dXJuICR0aGlzLT4gc2l6ZTsKCX0KfQoKPz4=|34|30