<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>107163</bug_id>
          
          <creation_ts>2013-01-17 13:01:31 -0800</creation_ts>
          <short_desc>Objective-C API: Clean up JSValue.mm</short_desc>
          <delta_ts>2013-01-17 18:35:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>809671</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-01-17 13:01:31 -0800</bug_when>
    <thetext>m_context is no longer weak, so there is now a lot of dead code in in JSValue.mm, and a wasted message send on every API call.  In the head of just about every method in JSValue.mm we&apos;re doing:
    JSContext *context = [self context];
    if (!context)
        return nil;
This is getting a retained copy of the context, which is no longer necessary now m_context is no longer weak.  We can just delete all these lines from all functions doing this, and where they were referring to the local variable &apos;context&apos;, instead we can just access m_context directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809681</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-01-17 13:12:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/13035927&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809683</commentid>
    <comment_count>2</comment_count>
      <attachid>183254</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-01-17 13:14:27 -0800</bug_when>
    <thetext>Created attachment 183254
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809690</commentid>
    <comment_count>3</comment_count>
      <attachid>183254</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-01-17 13:16:47 -0800</bug_when>
    <thetext>Comment on attachment 183254
Patch

Need to make some modifications.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809697</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-01-17 13:25:18 -0800</bug_when>
    <thetext>Since we&apos;re already going to be modifying most of JSValue.mm, we&apos;ll also do the following:

(1) context @property is no longer weak – the context property is declared as:

    @property(readonly, weak) JSContext *context;

This is really only informative (since we&apos;re not presently synthesizing the ivar), but it is now misleading. We should change it to:

    @property(readonly, retain) JSContext *context;

(2) the JSContext ivar and accessor can be automatically generated.  Since we&apos;re no longer doing anything special with m_context, we can just let the compiler handle the ivar for us.  We&apos;ll delete:

    JSContext *m_context;

and:

    - (JSContext *)context
    {
        return m_context;

    }
and find&amp;replace &quot;m_context&quot; to &quot;_context&quot; in JSValue.mm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809702</commentid>
    <comment_count>5</comment_count>
      <attachid>183259</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-01-17 13:29:33 -0800</bug_when>
    <thetext>Created attachment 183259
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809707</commentid>
    <comment_count>6</comment_count>
      <attachid>183259</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-01-17 13:32:35 -0800</bug_when>
    <thetext>Comment on attachment 183259
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=183259&amp;action=review

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        m_context is no longer weak, so there is now a lot of dead code in in JSValue.mm, and a wasted message send 

in in</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810072</commentid>
    <comment_count>7</comment_count>
      <attachid>183259</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-17 18:35:11 -0800</bug_when>
    <thetext>Comment on attachment 183259
Patch

Clearing flags on attachment: 183259

Committed r140086: &lt;http://trac.webkit.org/changeset/140086&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810073</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-17 18:35:14 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183254</attachid>
            <date>2013-01-17 13:14:27 -0800</date>
            <delta_ts>2013-01-17 13:29:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107163-20130117131127.patch</filename>
            <type>text/plain</type>
            <size>22953</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQwMDMzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBA
CisyMDEzLTAxLTE3ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgT2JqZWN0aXZlLUMgQVBJOiBDbGVhbiB1cCBKU1ZhbHVlLm1tCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcxNjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBtX2NvbnRleHQgaXMgbm8gbG9u
Z2VyIHdlYWssIHNvIHRoZXJlIGlzIG5vdyBhIGxvdCBvZiBkZWFkIGNvZGUgaW4gaW4gSlNWYWx1
ZS5tbSwgYW5kIGEgd2FzdGVkIG1lc3NhZ2Ugc2VuZCAKKyAgICAgICAgb24gZXZlcnkgQVBJIGNh
bGwuICBJbiB0aGUgaGVhZCBvZiBqdXN0IGFib3V0IGV2ZXJ5IG1ldGhvZCBpbiBKU1ZhbHVlLm1t
IHdlJ3JlIGRvaW5nOgorCisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtzZWxmIGNvbnRl
eHRdOworICAgICAgICBpZiAoIWNvbnRleHQpCisgICAgICAgICAgICByZXR1cm4gbmlsOworCisg
ICAgICAgIFRoaXMgaXMgZ2V0dGluZyBhIHJldGFpbmVkIGNvcHkgb2YgdGhlIGNvbnRleHQsIHdo
aWNoIGlzIG5vIGxvbmdlciBuZWNlc3Nhcnkgbm93IG1fY29udGV4dCBpcyBubyBsb25nZXIgd2Vh
ay4gIAorICAgICAgICBXZSBjYW4ganVzdCBkZWxldGUgYWxsIHRoZXNlIGxpbmVzIGZyb20gYWxs
IGZ1bmN0aW9ucyBkb2luZyB0aGlzLCBhbmQgd2hlcmUgdGhleSB3ZXJlIHJlZmVycmluZyB0byB0
aGUgbG9jYWwgCisgICAgICAgIHZhcmlhYmxlICdjb250ZXh0JywgaW5zdGVhZCB3ZSBjYW4ganVz
dCBhY2Nlc3MgbV9jb250ZXh0IGRpcmVjdGx5LgorCisgICAgICAgICogQVBJL0pTVmFsdWUubW06
CisgICAgICAgICgtW0pTVmFsdWUgdG9PYmplY3RdKToKKyAgICAgICAgKC1bSlNWYWx1ZSB0b0Jv
b2xdKToKKyAgICAgICAgKC1bSlNWYWx1ZSB0b0RvdWJsZV0pOgorICAgICAgICAoLVtKU1ZhbHVl
IHRvTnVtYmVyXSk6CisgICAgICAgICgtW0pTVmFsdWUgdG9TdHJpbmddKToKKyAgICAgICAgKC1b
SlNWYWx1ZSB0b0RhdGVdKToKKyAgICAgICAgKC1bSlNWYWx1ZSB0b0FycmF5XSk6CisgICAgICAg
ICgtW0pTVmFsdWUgdG9EaWN0aW9uYXJ5XSk6CisgICAgICAgICgtW0pTVmFsdWUgdmFsdWVGb3JQ
cm9wZXJ0eTpdKToKKyAgICAgICAgKC1bSlNWYWx1ZSBzZXRWYWx1ZTpmb3JQcm9wZXJ0eTpdKToK
KyAgICAgICAgKC1bSlNWYWx1ZSBkZWxldGVQcm9wZXJ0eTpdKToKKyAgICAgICAgKC1bSlNWYWx1
ZSBoYXNQcm9wZXJ0eTpdKToKKyAgICAgICAgKC1bSlNWYWx1ZSBkZWZpbmVQcm9wZXJ0eTpkZXNj
cmlwdG9yOl0pOgorICAgICAgICAoLVtKU1ZhbHVlIHZhbHVlQXRJbmRleDpdKToKKyAgICAgICAg
KC1bSlNWYWx1ZSBzZXRWYWx1ZTphdEluZGV4Ol0pOgorICAgICAgICAoLVtKU1ZhbHVlIGlzVW5k
ZWZpbmVkXSk6CisgICAgICAgICgtW0pTVmFsdWUgaXNOdWxsXSk6CisgICAgICAgICgtW0pTVmFs
dWUgaXNCb29sZWFuXSk6CisgICAgICAgICgtW0pTVmFsdWUgaXNOdW1iZXJdKToKKyAgICAgICAg
KC1bSlNWYWx1ZSBpc1N0cmluZ10pOgorICAgICAgICAoLVtKU1ZhbHVlIGlzT2JqZWN0XSk6Cisg
ICAgICAgICgtW0pTVmFsdWUgaXNFcXVhbFRvT2JqZWN0Ol0pOgorICAgICAgICAoLVtKU1ZhbHVl
IGlzRXF1YWxXaXRoVHlwZUNvZXJjaW9uVG9PYmplY3Q6XSk6CisgICAgICAgICgtW0pTVmFsdWUg
aXNJbnN0YW5jZU9mOl0pOgorICAgICAgICAoLVtKU1ZhbHVlIGNhbGxXaXRoQXJndW1lbnRzOl0p
OgorICAgICAgICAoLVtKU1ZhbHVlIGNvbnN0cnVjdFdpdGhBcmd1bWVudHM6XSk6CisgICAgICAg
ICgtW0pTVmFsdWUgaW52b2tlTWV0aG9kOndpdGhBcmd1bWVudHM6XSk6CisgICAgICAgICgtW0pT
VmFsdWUgb2JqZWN0Rm9yS2V5ZWRTdWJzY3JpcHQ6XSk6CisgICAgICAgICgtW0pTVmFsdWUgc2V0
T2JqZWN0OmZvcktleWVkU3Vic2NyaXB0Ol0pOgorICAgICAgICAoLVtKU1ZhbHVlIGRlYWxsb2Nd
KToKKyAgICAgICAgKC1bSlNWYWx1ZSBkZXNjcmlwdGlvbl0pOgorCiAyMDEzLTAxLTE3ICBNYXJr
IEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgT2JqZWN0aXZl
LUMgQVBJOiBDbGVhbiB1cCBKU1ZhbHVlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTVmFsdWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Zh
bHVlLm1tCShyZXZpc2lvbiAxNDAwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VmFsdWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyNCwxMCArMTI0LDcgQEAgKyAoSlNWYWx1ZSAq
KXZhbHVlV2l0aFVuZGVmaW5lZEluQ29udGV4dAogCiAtIChpZCl0b09iamVjdAogewotICAgIEpT
Q29udGV4dCAqY29udGV4dCA9IFtzZWxmIGNvbnRleHRdOwotICAgIGlmICghY29udGV4dCkKLSAg
ICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gdmFsdWVUb09iamVjdChjb250ZXh0LCBtX3Zh
bHVlKTsKKyAgICByZXR1cm4gdmFsdWVUb09iamVjdChtX2NvbnRleHQsIG1fdmFsdWUpOwogfQog
CiAtIChpZCl0b09iamVjdE9mQ2xhc3M6KENsYXNzKWV4cGVjdGVkQ2xhc3MKQEAgLTEzOCwyMCAr
MTM1LDE1IEBAIC0gKGlkKXRvT2JqZWN0T2ZDbGFzczooQ2xhc3MpZXhwZWN0ZWRDbGEKIAogLSAo
Qk9PTCl0b0Jvb2wKIHsKLSAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbc2VsZiBjb250ZXh0XTsK
LSAgICByZXR1cm4gKGNvbnRleHQgJiYgSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0SW50ZXJuYWxD
b250ZXh0KGNvbnRleHQpLCBtX3ZhbHVlKSk7CisgICAgcmV0dXJuIEpTVmFsdWVUb0Jvb2xlYW4o
Y29udGV4dEludGVybmFsQ29udGV4dChtX2NvbnRleHQpLCBtX3ZhbHVlKTsKIH0KIAogLSAoZG91
YmxlKXRvRG91YmxlCiB7Ci0gICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW3NlbGYgY29udGV4dF07
Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxk
b3VibGU+OjpxdWlldF9OYU4oKTsKLQogICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKLSAg
ICBkb3VibGUgcmVzdWx0ID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHRJbnRlcm5hbENvbnRleHQo
Y29udGV4dCksIG1fdmFsdWUsICZleGNlcHRpb24pOworICAgIGRvdWJsZSByZXN1bHQgPSBKU1Zh
bHVlVG9OdW1iZXIoY29udGV4dEludGVybmFsQ29udGV4dChtX2NvbnRleHQpLCBtX3ZhbHVlLCAm
ZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgIFtjb250ZXh0IG5vdGlm
eUV4Y2VwdGlvbjpleGNlcHRpb25dOworICAgICAgICBbbV9jb250ZXh0IG5vdGlmeUV4Y2VwdGlv
bjpleGNlcHRpb25dOwogICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjpxdWlldF9OYU4oKTsKICAgICB9CiAKQEAgLTE3MCwzNTQgKzE2MiwyNzcgQEAgLSAodWludDMy
X3QpdG9VSW50MzIKIAogLSAoTlNOdW1iZXIgKil0b051bWJlcgogewotICAgIEpTQ29udGV4dCAq
Y29udGV4dCA9IFtzZWxmIGNvbnRleHRdOwotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0
dXJuIG5pbDsKLQogICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKLSAgICBpZCByZXN1bHQg
PSB2YWx1ZVRvTnVtYmVyKGNvbnRleHRJbnRlcm5hbENvbnRleHQoY29udGV4dCksIG1fdmFsdWUs
ICZleGNlcHRpb24pOworICAgIGlkIHJlc3VsdCA9IHZhbHVlVG9OdW1iZXIoY29udGV4dEludGVy
bmFsQ29udGV4dChtX2NvbnRleHQpLCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsKICAgICBpZiAoZXhj
ZXB0aW9uKQotICAgICAgICBbY29udGV4dCBub3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKKyAg
ICAgICAgW21fY29udGV4dCBub3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCiAtIChOU1N0cmluZyAqKXRvU3RyaW5nCiB7Ci0gICAgSlNDb250ZXh0ICpj
b250ZXh0ID0gW3NlbGYgY29udGV4dF07Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1
cm4gbmlsOwotCiAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwotICAgIGlkIHJlc3VsdCA9
IHZhbHVlVG9TdHJpbmcoY29udGV4dEludGVybmFsQ29udGV4dChjb250ZXh0KSwgbV92YWx1ZSwg
JmV4Y2VwdGlvbik7CisgICAgaWQgcmVzdWx0ID0gdmFsdWVUb1N0cmluZyhjb250ZXh0SW50ZXJu
YWxDb250ZXh0KG1fY29udGV4dCksIG1fdmFsdWUsICZleGNlcHRpb24pOwogICAgIGlmIChleGNl
cHRpb24pCi0gICAgICAgIFtjb250ZXh0IG5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOworICAg
ICAgICBbbV9jb250ZXh0IG5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKIC0gKE5TRGF0ZSAqKXRvRGF0ZQogewotICAgIEpTQ29udGV4dCAqY29udGV4
dCA9IFtzZWxmIGNvbnRleHRdOwotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuIG5p
bDsKLQogICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKLSAgICBpZCByZXN1bHQgPSB2YWx1
ZVRvRGF0ZShjb250ZXh0SW50ZXJuYWxDb250ZXh0KGNvbnRleHQpLCBtX3ZhbHVlLCAmZXhjZXB0
aW9uKTsKKyAgICBpZCByZXN1bHQgPSB2YWx1ZVRvRGF0ZShjb250ZXh0SW50ZXJuYWxDb250ZXh0
KG1fY29udGV4dCksIG1fdmFsdWUsICZleGNlcHRpb24pOwogICAgIGlmIChleGNlcHRpb24pCi0g
ICAgICAgIFtjb250ZXh0IG5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOworICAgICAgICBbbV9j
b250ZXh0IG5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKIC0gKE5TQXJyYXkgKil0b0FycmF5CiB7Ci0gICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW3Nl
bGYgY29udGV4dF07Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gbmlsOwotCiAg
ICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwotICAgIGlkIHJlc3VsdCA9IHZhbHVlVG9BcnJh
eShjb250ZXh0SW50ZXJuYWxDb250ZXh0KGNvbnRleHQpLCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsK
KyAgICBpZCByZXN1bHQgPSB2YWx1ZVRvQXJyYXkoY29udGV4dEludGVybmFsQ29udGV4dChtX2Nv
bnRleHQpLCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAg
ICBbY29udGV4dCBub3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKKyAgICAgICAgW21fY29udGV4
dCBub3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiAt
IChOU0RpY3Rpb25hcnkgKil0b0RpY3Rpb25hcnkKIHsKLSAgICBKU0NvbnRleHQgKmNvbnRleHQg
PSBbc2VsZiBjb250ZXh0XTsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiBuaWw7
Ci0KICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgaWQgcmVzdWx0ID0gdmFsdWVU
b0RpY3Rpb25hcnkoY29udGV4dEludGVybmFsQ29udGV4dChjb250ZXh0KSwgbV92YWx1ZSwgJmV4
Y2VwdGlvbik7CisgICAgaWQgcmVzdWx0ID0gdmFsdWVUb0RpY3Rpb25hcnkoY29udGV4dEludGVy
bmFsQ29udGV4dChtX2NvbnRleHQpLCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsKICAgICBpZiAoZXhj
ZXB0aW9uKQotICAgICAgICBbY29udGV4dCBub3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKKyAg
ICAgICAgW21fY29udGV4dCBub3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCiAtIChKU1ZhbHVlICopdmFsdWVGb3JQcm9wZXJ0eTooTlNTdHJpbmcgKilw
cm9wZXJ0eU5hbWUKIHsKLSAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbc2VsZiBjb250ZXh0XTsK
LSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KICAgICBKU1ZhbHVlUmVm
IGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0
KGNvbnRleHRJbnRlcm5hbENvbnRleHQoY29udGV4dCksIG1fdmFsdWUsICZleGNlcHRpb24pOwor
ICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0SW50ZXJuYWxD
b250ZXh0KG1fY29udGV4dCksIG1fdmFsdWUsICZleGNlcHRpb24pOwogICAgIGlmIChleGNlcHRp
b24pCi0gICAgICAgIHJldHVybiBbY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNlcHRpb246ZXhj
ZXB0aW9uXTsKKyAgICAgICAgcmV0dXJuIFttX2NvbnRleHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0
aW9uOmV4Y2VwdGlvbl07CiAKICAgICBKU1N0cmluZ1JlZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVX
aXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKXByb3BlcnR5TmFtZSk7Ci0gICAgSlNWYWx1ZVJlZiBy
ZXN1bHQgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHRJbnRlcm5hbENvbnRleHQoY29udGV4
dCksIG9iamVjdCwgbmFtZSwgJmV4Y2VwdGlvbik7CisgICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBK
U09iamVjdEdldFByb3BlcnR5KGNvbnRleHRJbnRlcm5hbENvbnRleHQobV9jb250ZXh0KSwgb2Jq
ZWN0LCBuYW1lLCAmZXhjZXB0aW9uKTsKICAgICBKU1N0cmluZ1JlbGVhc2UobmFtZSk7CiAgICAg
aWYgKGV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIFtjb250ZXh0IHZhbHVlRnJvbU5vdGlmeUV4
Y2VwdGlvbjpleGNlcHRpb25dOworICAgICAgICByZXR1cm4gW21fY29udGV4dCB2YWx1ZUZyb21O
b3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKIAotICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdp
dGhWYWx1ZTpyZXN1bHQgaW5Db250ZXh0OmNvbnRleHRdOworICAgIHJldHVybiBbSlNWYWx1ZSB2
YWx1ZVdpdGhWYWx1ZTpyZXN1bHQgaW5Db250ZXh0Om1fY29udGV4dF07CiB9CiAKIC0gKHZvaWQp
c2V0VmFsdWU6KGlkKXZhbHVlIGZvclByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5TmFtZQog
ewotICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtzZWxmIGNvbnRleHRdOwotICAgIGlmICghY29u
dGV4dCkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwot
ICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0SW50ZXJuYWxD
b250ZXh0KGNvbnRleHQpLCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsKKyAgICBKU09iamVjdFJlZiBv
YmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dEludGVybmFsQ29udGV4dChtX2NvbnRleHQp
LCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgIFtj
b250ZXh0IG5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOworICAgICAgICBbbV9jb250ZXh0IG5v
dGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
SlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1Jl
Zilwcm9wZXJ0eU5hbWUpOwotICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoY29udGV4dEludGVybmFs
Q29udGV4dChjb250ZXh0KSwgb2JqZWN0LCBuYW1lLCBvYmplY3RUb1ZhbHVlKGNvbnRleHQsIHZh
bHVlKSwgMCwgJmV4Y2VwdGlvbik7CisgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0SW50
ZXJuYWxDb250ZXh0KG1fY29udGV4dCksIG9iamVjdCwgbmFtZSwgb2JqZWN0VG9WYWx1ZShtX2Nv
bnRleHQsIHZhbHVlKSwgMCwgJmV4Y2VwdGlvbik7CiAgICAgSlNTdHJpbmdSZWxlYXNlKG5hbWUp
OwogICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgW2NvbnRleHQgbm90aWZ5RXhjZXB0aW9u
OmV4Y2VwdGlvbl07CisgICAgICAgIFttX2NvbnRleHQgbm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlv
bl07CiAgICAgICAgIHJldHVybjsKICAgICB9CiB9CiAKIC0gKEJPT0wpZGVsZXRlUHJvcGVydHk6
KE5TU3RyaW5nICopcHJvcGVydHlOYW1lCiB7Ci0gICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW3Nl
bGYgY29udGV4dF07Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gTk87Ci0KICAg
ICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNW
YWx1ZVRvT2JqZWN0KGNvbnRleHRJbnRlcm5hbENvbnRleHQoY29udGV4dCksIG1fdmFsdWUsICZl
eGNlcHRpb24pOworICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChjb250
ZXh0SW50ZXJuYWxDb250ZXh0KG1fY29udGV4dCksIG1fdmFsdWUsICZleGNlcHRpb24pOwogICAg
IGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbY29udGV4dCBib29sRnJvbU5vdGlmeUV4
Y2VwdGlvbjpleGNlcHRpb25dOworICAgICAgICByZXR1cm4gW21fY29udGV4dCBib29sRnJvbU5v
dGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwogCiAgICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTU3Ry
aW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZilwcm9wZXJ0eU5hbWUpOwotICAgIEJP
T0wgcmVzdWx0ID0gSlNPYmplY3REZWxldGVQcm9wZXJ0eShjb250ZXh0SW50ZXJuYWxDb250ZXh0
KGNvbnRleHQpLCBvYmplY3QsIG5hbWUsICZleGNlcHRpb24pOworICAgIEJPT0wgcmVzdWx0ID0g
SlNPYmplY3REZWxldGVQcm9wZXJ0eShjb250ZXh0SW50ZXJuYWxDb250ZXh0KG1fY29udGV4dCks
IG9iamVjdCwgbmFtZSwgJmV4Y2VwdGlvbik7CiAgICAgSlNTdHJpbmdSZWxlYXNlKG5hbWUpOwog
ICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbY29udGV4dCBib29sRnJvbU5vdGlm
eUV4Y2VwdGlvbjpleGNlcHRpb25dOworICAgICAgICByZXR1cm4gW21fY29udGV4dCBib29sRnJv
bU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAog
LSAoQk9PTCloYXNQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eU5hbWUKIHsKLSAgICBKU0Nv
bnRleHQgKmNvbnRleHQgPSBbc2VsZiBjb250ZXh0XTsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAg
ICAgIHJldHVybiBOTzsKLQogICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKLSAgICBKU09i
amVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dEludGVybmFsQ29udGV4dChj
b250ZXh0KSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7CisgICAgSlNPYmplY3RSZWYgb2JqZWN0ID0g
SlNWYWx1ZVRvT2JqZWN0KGNvbnRleHRJbnRlcm5hbENvbnRleHQobV9jb250ZXh0KSwgbV92YWx1
ZSwgJmV4Y2VwdGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIFtjb250
ZXh0IGJvb2xGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CisgICAgICAgIHJldHVybiBb
bV9jb250ZXh0IGJvb2xGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CiAKICAgICBKU1N0
cmluZ1JlZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKXBy
b3BlcnR5TmFtZSk7Ci0gICAgQk9PTCByZXN1bHQgPSBKU09iamVjdEhhc1Byb3BlcnR5KGNvbnRl
eHRJbnRlcm5hbENvbnRleHQoY29udGV4dCksIG9iamVjdCwgbmFtZSk7CisgICAgQk9PTCByZXN1
bHQgPSBKU09iamVjdEhhc1Byb3BlcnR5KGNvbnRleHRJbnRlcm5hbENvbnRleHQobV9jb250ZXh0
KSwgb2JqZWN0LCBuYW1lKTsKICAgICBKU1N0cmluZ1JlbGVhc2UobmFtZSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAogLSAodm9pZClkZWZpbmVQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0
eSBkZXNjcmlwdG9yOihpZClkZXNjcmlwdG9yCiB7Ci0gICAgSlNDb250ZXh0ICpjb250ZXh0ID0g
W3NlbGYgY29udGV4dF07Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm47Ci0gICAg
W1tjb250ZXh0IGdsb2JhbE9iamVjdF1bQCJPYmplY3QiXSBpbnZva2VNZXRob2Q6QCJkZWZpbmVQ
cm9wZXJ0eSIgd2l0aEFyZ3VtZW50czpAWyBzZWxmLCBwcm9wZXJ0eSwgZGVzY3JpcHRvciBdXTsK
KyAgICBbW21fY29udGV4dCBnbG9iYWxPYmplY3RdW0AiT2JqZWN0Il0gaW52b2tlTWV0aG9kOkAi
ZGVmaW5lUHJvcGVydHkiIHdpdGhBcmd1bWVudHM6QFsgc2VsZiwgcHJvcGVydHksIGRlc2NyaXB0
b3IgXV07CiB9CiAKIC0gKEpTVmFsdWUgKil2YWx1ZUF0SW5kZXg6KE5TVUludGVnZXIpaW5kZXgK
IHsKLSAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbc2VsZiBjb250ZXh0XTsKLSAgICBpZiAoIWNv
bnRleHQpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KICAgICBpZiAoaW5kZXggIT0gKHVuc2lnbmVk
KWluZGV4KQotICAgICAgICBbc2VsZiB2YWx1ZUZvclByb3BlcnR5OltbSlNWYWx1ZSB2YWx1ZVdp
dGhEb3VibGU6aW5kZXggaW5Db250ZXh0OmNvbnRleHRdIHRvU3RyaW5nXV07CisgICAgICAgIFtz
ZWxmIHZhbHVlRm9yUHJvcGVydHk6W1tKU1ZhbHVlIHZhbHVlV2l0aERvdWJsZTppbmRleCBpbkNv
bnRleHQ6bV9jb250ZXh0XSB0b1N0cmluZ11dOwogCiAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24g
PSAwOwotICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0SW50
ZXJuYWxDb250ZXh0KGNvbnRleHQpLCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsKKyAgICBKU09iamVj
dFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dEludGVybmFsQ29udGV4dChtX2Nv
bnRleHQpLCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAg
ICByZXR1cm4gW2NvbnRleHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07Cisg
ICAgICAgIHJldHVybiBbbV9jb250ZXh0IHZhbHVlRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRp
b25dOwogCi0gICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBKU09iamVjdEdldFByb3BlcnR5QXRJbmRl
eChjb250ZXh0SW50ZXJuYWxDb250ZXh0KGNvbnRleHQpLCBvYmplY3QsICh1bnNpZ25lZClpbmRl
eCwgJmV4Y2VwdGlvbik7CisgICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBKU09iamVjdEdldFByb3Bl
cnR5QXRJbmRleChjb250ZXh0SW50ZXJuYWxDb250ZXh0KG1fY29udGV4dCksIG9iamVjdCwgKHVu
c2lnbmVkKWluZGV4LCAmZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICBy
ZXR1cm4gW2NvbnRleHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CisgICAg
ICAgIHJldHVybiBbbV9jb250ZXh0IHZhbHVlRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25d
OwogCi0gICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aFZhbHVlOnJlc3VsdCBpbkNvbnRleHQ6
Y29udGV4dF07CisgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aFZhbHVlOnJlc3VsdCBpbkNv
bnRleHQ6bV9jb250ZXh0XTsKIH0KIAogLSAodm9pZClzZXRWYWx1ZTooaWQpdmFsdWUgYXRJbmRl
eDooTlNVSW50ZWdlcilpbmRleAogewotICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtzZWxmIGNv
bnRleHRdOwotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKGlu
ZGV4ICE9ICh1bnNpZ25lZClpbmRleCkKLSAgICAgICAgcmV0dXJuIFtzZWxmIHNldFZhbHVlOnZh
bHVlIGZvclByb3BlcnR5OltbSlNWYWx1ZSB2YWx1ZVdpdGhEb3VibGU6aW5kZXggaW5Db250ZXh0
OmNvbnRleHRdIHRvU3RyaW5nXV07CisgICAgICAgIHJldHVybiBbc2VsZiBzZXRWYWx1ZTp2YWx1
ZSBmb3JQcm9wZXJ0eTpbW0pTVmFsdWUgdmFsdWVXaXRoRG91YmxlOmluZGV4IGluQ29udGV4dDpt
X2NvbnRleHRdIHRvU3RyaW5nXV07CiAKICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0g
ICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHRJbnRlcm5hbENv
bnRleHQoY29udGV4dCksIG1fdmFsdWUsICZleGNlcHRpb24pOworICAgIEpTT2JqZWN0UmVmIG9i
amVjdCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0SW50ZXJuYWxDb250ZXh0KG1fY29udGV4dCks
IG1fdmFsdWUsICZleGNlcHRpb24pOwogICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgW2Nv
bnRleHQgbm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CisgICAgICAgIFttX2NvbnRleHQgbm90
aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBK
U09iamVjdFNldFByb3BlcnR5QXRJbmRleChjb250ZXh0SW50ZXJuYWxDb250ZXh0KGNvbnRleHQp
LCBvYmplY3QsICh1bnNpZ25lZClpbmRleCwgb2JqZWN0VG9WYWx1ZShjb250ZXh0LCB2YWx1ZSks
ICZleGNlcHRpb24pOworICAgIEpTT2JqZWN0U2V0UHJvcGVydHlBdEluZGV4KGNvbnRleHRJbnRl
cm5hbENvbnRleHQobV9jb250ZXh0KSwgb2JqZWN0LCAodW5zaWduZWQpaW5kZXgsIG9iamVjdFRv
VmFsdWUobV9jb250ZXh0LCB2YWx1ZSksICZleGNlcHRpb24pOwogICAgIGlmIChleGNlcHRpb24p
IHsKLSAgICAgICAgW2NvbnRleHQgbm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CisgICAgICAg
IFttX2NvbnRleHQgbm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiB9CiAKIC0gKEJPT0wpaXNVbmRlZmluZWQKIHsKLSAgICBKU0NvbnRleHQgKmNvbnRl
eHQgPSBbc2VsZiBjb250ZXh0XTsKLSAgICByZXR1cm4gKGNvbnRleHQgJiYgSlNWYWx1ZUlzVW5k
ZWZpbmVkKGNvbnRleHRJbnRlcm5hbENvbnRleHQoY29udGV4dCksIG1fdmFsdWUpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZUlzVW5kZWZpbmVkKGNvbnRleHRJbnRlcm5hbENvbnRleHQobV9jb250ZXh0
KSwgbV92YWx1ZSk7CiB9CiAKIC0gKEJPT0wpaXNOdWxsCiB7Ci0gICAgSlNDb250ZXh0ICpjb250
ZXh0ID0gW3NlbGYgY29udGV4dF07Ci0gICAgcmV0dXJuIChjb250ZXh0ICYmIEpTVmFsdWVJc051
bGwoY29udGV4dEludGVybmFsQ29udGV4dChjb250ZXh0KSwgbV92YWx1ZSkpOworICAgIHJldHVy
biBKU1ZhbHVlSXNOdWxsKGNvbnRleHRJbnRlcm5hbENvbnRleHQobV9jb250ZXh0KSwgbV92YWx1
ZSk7CiB9CiAKIC0gKEJPT0wpaXNCb29sZWFuCiB7Ci0gICAgSlNDb250ZXh0ICpjb250ZXh0ID0g
W3NlbGYgY29udGV4dF07Ci0gICAgcmV0dXJuIChjb250ZXh0ICYmIEpTVmFsdWVJc0Jvb2xlYW4o
Y29udGV4dEludGVybmFsQ29udGV4dChjb250ZXh0KSwgbV92YWx1ZSkpOworICAgIHJldHVybiBK
U1ZhbHVlSXNCb29sZWFuKGNvbnRleHRJbnRlcm5hbENvbnRleHQobV9jb250ZXh0KSwgbV92YWx1
ZSk7CiB9CiAKIC0gKEJPT0wpaXNOdW1iZXIKIHsKLSAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBb
c2VsZiBjb250ZXh0XTsKLSAgICByZXR1cm4gKGNvbnRleHQgJiYgSlNWYWx1ZUlzTnVtYmVyKGNv
bnRleHRJbnRlcm5hbENvbnRleHQoY29udGV4dCksIG1fdmFsdWUpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZUlzTnVtYmVyKGNvbnRleHRJbnRlcm5hbENvbnRleHQobV9jb250ZXh0KSwgbV92YWx1ZSk7
CiB9CiAKIC0gKEJPT0wpaXNTdHJpbmcKIHsKLSAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbc2Vs
ZiBjb250ZXh0XTsKLSAgICByZXR1cm4gKGNvbnRleHQgJiYgSlNWYWx1ZUlzU3RyaW5nKGNvbnRl
eHRJbnRlcm5hbENvbnRleHQoY29udGV4dCksIG1fdmFsdWUpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZUlzU3RyaW5nKGNvbnRleHRJbnRlcm5hbENvbnRleHQobV9jb250ZXh0KSwgbV92YWx1ZSk7CiB9
CiAKIC0gKEJPT0wpaXNPYmplY3QKIHsKLSAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbc2VsZiBj
b250ZXh0XTsKLSAgICByZXR1cm4gKGNvbnRleHQgJiYgSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHRJ
bnRlcm5hbENvbnRleHQoY29udGV4dCksIG1fdmFsdWUpKTsKKyAgICByZXR1cm4gSlNWYWx1ZUlz
T2JqZWN0KGNvbnRleHRJbnRlcm5hbENvbnRleHQobV9jb250ZXh0KSwgbV92YWx1ZSk7CiB9CiAK
IC0gKEJPT0wpaXNFcXVhbFRvT2JqZWN0OihpZCl2YWx1ZQogewotICAgIEpTQ29udGV4dCAqY29u
dGV4dCA9IFtzZWxmIGNvbnRleHRdOwotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJu
IE5POwotCi0gICAgcmV0dXJuIEpTVmFsdWVJc1N0cmljdEVxdWFsKGNvbnRleHRJbnRlcm5hbENv
bnRleHQoY29udGV4dCksIG1fdmFsdWUsIG9iamVjdFRvVmFsdWUoY29udGV4dCwgdmFsdWUpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZUlzU3RyaWN0RXF1YWwoY29udGV4dEludGVybmFsQ29udGV4dCht
X2NvbnRleHQpLCBtX3ZhbHVlLCBvYmplY3RUb1ZhbHVlKG1fY29udGV4dCwgdmFsdWUpKTsKIH0K
IAogLSAoQk9PTClpc0VxdWFsV2l0aFR5cGVDb2VyY2lvblRvT2JqZWN0OihpZCl2YWx1ZQogewot
ICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtzZWxmIGNvbnRleHRdOwotICAgIGlmICghY29udGV4
dCkKLSAgICAgICAgcmV0dXJuIE5POwotCiAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwot
ICAgIEJPT0wgcmVzdWx0ID0gSlNWYWx1ZUlzRXF1YWwoY29udGV4dEludGVybmFsQ29udGV4dChj
b250ZXh0KSwgbV92YWx1ZSwgb2JqZWN0VG9WYWx1ZShjb250ZXh0LCB2YWx1ZSksICZleGNlcHRp
b24pOworICAgIEJPT0wgcmVzdWx0ID0gSlNWYWx1ZUlzRXF1YWwoY29udGV4dEludGVybmFsQ29u
dGV4dChtX2NvbnRleHQpLCBtX3ZhbHVlLCBvYmplY3RUb1ZhbHVlKG1fY29udGV4dCwgdmFsdWUp
LCAmZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gW2NvbnRl
eHQgYm9vbEZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKKyAgICAgICAgcmV0dXJuIFtt
X2NvbnRleHQgYm9vbEZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKIAogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKIC0gKEJPT0wpaXNJbnN0YW5jZU9mOihpZCl2YWx1ZQogewotICAgIEpT
Q29udGV4dCAqY29udGV4dCA9IFtzZWxmIGNvbnRleHRdOwotICAgIGlmICghY29udGV4dCkKLSAg
ICAgICAgcmV0dXJuIE5POwotCiAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwotICAgIEpT
T2JqZWN0UmVmIGNvbnN0cnVjdG9yID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHRJbnRlcm5hbENv
bnRleHQoY29udGV4dCksIG9iamVjdFRvVmFsdWUoY29udGV4dCwgdmFsdWUpLCAmZXhjZXB0aW9u
KTsKKyAgICBKU09iamVjdFJlZiBjb25zdHJ1Y3RvciA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0
SW50ZXJuYWxDb250ZXh0KG1fY29udGV4dCksIG9iamVjdFRvVmFsdWUobV9jb250ZXh0LCB2YWx1
ZSksICZleGNlcHRpb24pOwogICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbY29u
dGV4dCBib29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOworICAgICAgICByZXR1cm4g
W21fY29udGV4dCBib29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwogCi0gICAgQk9P
TCByZXN1bHQgPSBKU1ZhbHVlSXNJbnN0YW5jZU9mQ29uc3RydWN0b3IoY29udGV4dEludGVybmFs
Q29udGV4dChjb250ZXh0KSwgbV92YWx1ZSwgY29uc3RydWN0b3IsICZleGNlcHRpb24pOworICAg
IEJPT0wgcmVzdWx0ID0gSlNWYWx1ZUlzSW5zdGFuY2VPZkNvbnN0cnVjdG9yKGNvbnRleHRJbnRl
cm5hbENvbnRleHQobV9jb250ZXh0KSwgbV92YWx1ZSwgY29uc3RydWN0b3IsICZleGNlcHRpb24p
OwogICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbY29udGV4dCBib29sRnJvbU5v
dGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOworICAgICAgICByZXR1cm4gW21fY29udGV4dCBib29s
RnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAogLSAoSlNWYWx1ZSAqKWNhbGxXaXRoQXJndW1lbnRzOihOU0FycmF5ICopYXJndW1lbnRBcnJh
eQogewotICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtzZWxmIGNvbnRleHRdOwotICAgIGlmICgh
Y29udGV4dCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQogICAgIE5TVUludGVnZXIgYXJndW1lbnRD
b3VudCA9IFthcmd1bWVudEFycmF5IGNvdW50XTsKICAgICBKU1ZhbHVlUmVmIGFyZ3VtZW50c1th
cmd1bWVudENvdW50XTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJndW1lbnRDb3Vu
dDsgKytpKQotICAgICAgICBhcmd1bWVudHNbaV0gPSBvYmplY3RUb1ZhbHVlKGNvbnRleHQsIFth
cmd1bWVudEFycmF5IG9iamVjdEF0SW5kZXg6aV0pOworICAgICAgICBhcmd1bWVudHNbaV0gPSBv
YmplY3RUb1ZhbHVlKG1fY29udGV4dCwgW2FyZ3VtZW50QXJyYXkgb2JqZWN0QXRJbmRleDppXSk7
CiAKICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNPYmplY3RSZWYgb2JqZWN0
ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHRJbnRlcm5hbENvbnRleHQoY29udGV4dCksIG1fdmFs
dWUsICZleGNlcHRpb24pOworICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVj
dChjb250ZXh0SW50ZXJuYWxDb250ZXh0KG1fY29udGV4dCksIG1fdmFsdWUsICZleGNlcHRpb24p
OwogICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbY29udGV4dCB2YWx1ZUZyb21O
b3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKKyAgICAgICAgcmV0dXJuIFttX2NvbnRleHQgdmFs
dWVGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CiAKLSAgICBKU1ZhbHVlUmVmIHJlc3Vs
dCA9IEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oY29udGV4dEludGVybmFsQ29udGV4dChjb250ZXh0
KSwgb2JqZWN0LCAwLCBhcmd1bWVudENvdW50LCBhcmd1bWVudHMsICZleGNlcHRpb24pOworICAg
IEpTVmFsdWVSZWYgcmVzdWx0ID0gSlNPYmplY3RDYWxsQXNGdW5jdGlvbihjb250ZXh0SW50ZXJu
YWxDb250ZXh0KG1fY29udGV4dCksIG9iamVjdCwgMCwgYXJndW1lbnRDb3VudCwgYXJndW1lbnRz
LCAmZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gW2NvbnRl
eHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CisgICAgICAgIHJldHVybiBb
bV9jb250ZXh0IHZhbHVlRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwogCi0gICAgcmV0
dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aFZhbHVlOnJlc3VsdCBpbkNvbnRleHQ6Y29udGV4dF07Cisg
ICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aFZhbHVlOnJlc3VsdCBpbkNvbnRleHQ6bV9jb250
ZXh0XTsKIH0KIAogLSAoSlNWYWx1ZSAqKWNvbnN0cnVjdFdpdGhBcmd1bWVudHM6KE5TQXJyYXkg
Kilhcmd1bWVudEFycmF5CiB7Ci0gICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW3NlbGYgY29udGV4
dF07Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gbmlsOwotCiAgICAgTlNVSW50
ZWdlciBhcmd1bWVudENvdW50ID0gW2FyZ3VtZW50QXJyYXkgY291bnRdOwogICAgIEpTVmFsdWVS
ZWYgYXJndW1lbnRzW2FyZ3VtZW50Q291bnRdOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBhcmd1bWVudENvdW50OyArK2kpCi0gICAgICAgIGFyZ3VtZW50c1tpXSA9IG9iamVjdFRvVmFs
dWUoY29udGV4dCwgW2FyZ3VtZW50QXJyYXkgb2JqZWN0QXRJbmRleDppXSk7CisgICAgICAgIGFy
Z3VtZW50c1tpXSA9IG9iamVjdFRvVmFsdWUobV9jb250ZXh0LCBbYXJndW1lbnRBcnJheSBvYmpl
Y3RBdEluZGV4OmldKTsKIAogICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKLSAgICBKU09i
amVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dEludGVybmFsQ29udGV4dChj
b250ZXh0KSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7CisgICAgSlNPYmplY3RSZWYgb2JqZWN0ID0g
SlNWYWx1ZVRvT2JqZWN0KGNvbnRleHRJbnRlcm5hbENvbnRleHQobV9jb250ZXh0KSwgbV92YWx1
ZSwgJmV4Y2VwdGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIFtjb250
ZXh0IHZhbHVlRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOworICAgICAgICByZXR1cm4g
W21fY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKIAotICAgIEpT
T2JqZWN0UmVmIHJlc3VsdCA9IEpTT2JqZWN0Q2FsbEFzQ29uc3RydWN0b3IoY29udGV4dEludGVy
bmFsQ29udGV4dChjb250ZXh0KSwgb2JqZWN0LCBhcmd1bWVudENvdW50LCBhcmd1bWVudHMsICZl
eGNlcHRpb24pOworICAgIEpTT2JqZWN0UmVmIHJlc3VsdCA9IEpTT2JqZWN0Q2FsbEFzQ29uc3Ry
dWN0b3IoY29udGV4dEludGVybmFsQ29udGV4dChtX2NvbnRleHQpLCBvYmplY3QsIGFyZ3VtZW50
Q291bnQsIGFyZ3VtZW50cywgJmV4Y2VwdGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAg
ICAgcmV0dXJuIFtjb250ZXh0IHZhbHVlRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwor
ICAgICAgICByZXR1cm4gW21fY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0
aW9uXTsKIAotICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhWYWx1ZTpyZXN1bHQgaW5Db250
ZXh0OmNvbnRleHRdOworICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhWYWx1ZTpyZXN1bHQg
aW5Db250ZXh0Om1fY29udGV4dF07CiB9CiAKIC0gKEpTVmFsdWUgKilpbnZva2VNZXRob2Q6KE5T
U3RyaW5nICopbWV0aG9kIHdpdGhBcmd1bWVudHM6KE5TQXJyYXkgKilhcmd1bWVudHMKIHsKLSAg
ICBKU0NvbnRleHQgKmNvbnRleHQgPSBbc2VsZiBjb250ZXh0XTsKLSAgICBpZiAoIWNvbnRleHQp
Ci0gICAgICAgIHJldHVybiBuaWw7Ci0KICAgICBOU1VJbnRlZ2VyIGFyZ3VtZW50Q291bnQgPSBb
YXJndW1lbnRzIGNvdW50XTsKICAgICBKU1ZhbHVlUmVmIGFyZ3VtZW50QXJyYXlbYXJndW1lbnRD
b3VudF07CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7ICsraSkK
LSAgICAgICAgYXJndW1lbnRBcnJheVtpXSA9IG9iamVjdFRvVmFsdWUoY29udGV4dCwgW2FyZ3Vt
ZW50cyBvYmplY3RBdEluZGV4OmldKTsKKyAgICAgICAgYXJndW1lbnRBcnJheVtpXSA9IG9iamVj
dFRvVmFsdWUobV9jb250ZXh0LCBbYXJndW1lbnRzIG9iamVjdEF0SW5kZXg6aV0pOwogCiAgICAg
SlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwotICAgIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QgPSBK
U1ZhbHVlVG9PYmplY3QoY29udGV4dEludGVybmFsQ29udGV4dChjb250ZXh0KSwgbV92YWx1ZSwg
JmV4Y2VwdGlvbik7CisgICAgSlNPYmplY3RSZWYgdGhpc09iamVjdCA9IEpTVmFsdWVUb09iamVj
dChjb250ZXh0SW50ZXJuYWxDb250ZXh0KG1fY29udGV4dCksIG1fdmFsdWUsICZleGNlcHRpb24p
OwogICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbY29udGV4dCB2YWx1ZUZyb21O
b3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKKyAgICAgICAgcmV0dXJuIFttX2NvbnRleHQgdmFs
dWVGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CiAKICAgICBKU1N0cmluZ1JlZiBuYW1l
ID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKW1ldGhvZCk7Ci0gICAg
SlNWYWx1ZVJlZiBmdW5jdGlvbiA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dEludGVybmFs
Q29udGV4dChjb250ZXh0KSwgdGhpc09iamVjdCwgbmFtZSwgJmV4Y2VwdGlvbik7CisgICAgSlNW
YWx1ZVJlZiBmdW5jdGlvbiA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dEludGVybmFsQ29u
dGV4dChtX2NvbnRleHQpLCB0aGlzT2JqZWN0LCBuYW1lLCAmZXhjZXB0aW9uKTsKICAgICBKU1N0
cmluZ1JlbGVhc2UobmFtZSk7CiAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIFtj
b250ZXh0IHZhbHVlRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOworICAgICAgICByZXR1
cm4gW21fY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKIAotICAg
IEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0SW50ZXJuYWxDb250
ZXh0KGNvbnRleHQpLCBmdW5jdGlvbiwgJmV4Y2VwdGlvbik7CisgICAgSlNPYmplY3RSZWYgb2Jq
ZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHRJbnRlcm5hbENvbnRleHQobV9jb250ZXh0KSwg
ZnVuY3Rpb24sICZleGNlcHRpb24pOwogICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVy
biBbY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKKyAgICAgICAg
cmV0dXJuIFttX2NvbnRleHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CiAK
LSAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oY29udGV4dElu
dGVybmFsQ29udGV4dChjb250ZXh0KSwgb2JqZWN0LCB0aGlzT2JqZWN0LCBhcmd1bWVudENvdW50
LCBhcmd1bWVudEFycmF5LCAmZXhjZXB0aW9uKTsKKyAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IEpT
T2JqZWN0Q2FsbEFzRnVuY3Rpb24oY29udGV4dEludGVybmFsQ29udGV4dChtX2NvbnRleHQpLCBv
YmplY3QsIHRoaXNPYmplY3QsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50QXJyYXksICZleGNlcHRp
b24pOwogICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbY29udGV4dCB2YWx1ZUZy
b21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKKyAgICAgICAgcmV0dXJuIFttX2NvbnRleHQg
dmFsdWVGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CiAKLSAgICByZXR1cm4gW0pTVmFs
dWUgdmFsdWVXaXRoVmFsdWU6cmVzdWx0IGluQ29udGV4dDpjb250ZXh0XTsKKyAgICByZXR1cm4g
W0pTVmFsdWUgdmFsdWVXaXRoVmFsdWU6cmVzdWx0IGluQ29udGV4dDptX2NvbnRleHRdOwogfQog
CiAtIChKU0NvbnRleHQgKiljb250ZXh0CkBAIC02MDEsMTQgKzUxNiwxMCBAQCArIChKU1ZhbHVl
ICopdmFsdWVXaXRoU2l6ZTooQ0dTaXplKXNpemUgCiAKIC0gKEpTVmFsdWUgKilvYmplY3RGb3JL
ZXllZFN1YnNjcmlwdDooaWQpa2V5CiB7Ci0gICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW3NlbGYg
Y29udGV4dF07Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gbmlsOwotCiAgICAg
aWYgKCFba2V5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKLSAgICAgICAga2V5
ID0gW1tKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDprZXkgaW5Db250ZXh0OmNvbnRleHRdIHRvU3Ry
aW5nXTsKKyAgICAgICAga2V5ID0gW1tKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDprZXkgaW5Db250
ZXh0Om1fY29udGV4dF0gdG9TdHJpbmddOwogICAgICAgICBpZiAoIWtleSkKLSAgICAgICAgICAg
IHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhVbmRlZmluZWRJbkNvbnRleHQ6Y29udGV4dF07Cisg
ICAgICAgICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoVW5kZWZpbmVkSW5Db250ZXh0Om1f
Y29udGV4dF07CiAgICAgfQogCiAgICAgcmV0dXJuIFtzZWxmIHZhbHVlRm9yUHJvcGVydHk6KE5T
U3RyaW5nICopa2V5XTsKQEAgLTYyMSwxMiArNTMyLDggQEAgLSAoSlNWYWx1ZSAqKW9iamVjdEF0
SW5kZXhlZFN1YnNjcmlwdDooTgogCiAtICh2b2lkKXNldE9iamVjdDooaWQpb2JqZWN0IGZvcktl
eWVkU3Vic2NyaXB0OihOU09iamVjdCA8TlNDb3B5aW5nPiAqKWtleQogewotICAgIEpTQ29udGV4
dCAqY29udGV4dCA9IFtzZWxmIGNvbnRleHRdOwotICAgIGlmICghY29udGV4dCkKLSAgICAgICAg
cmV0dXJuOwotCiAgICAgaWYgKCFba2V5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0p
IHsKLSAgICAgICAga2V5ID0gW1tKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDprZXkgaW5Db250ZXh0
OmNvbnRleHRdIHRvU3RyaW5nXTsKKyAgICAgICAga2V5ID0gW1tKU1ZhbHVlIHZhbHVlV2l0aE9i
amVjdDprZXkgaW5Db250ZXh0Om1fY29udGV4dF0gdG9TdHJpbmddOwogICAgICAgICBpZiAoIWtl
eSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMTcwLDkgKzEwNzcsNyBAQCArIChT
RUwpc2VsZWN0b3JGb3JWYWx1ZVRvU3RydWN0Oihjb25zdCBjCiAKIC0gKHZvaWQpZGVhbGxvYwog
ewotICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtzZWxmIGNvbnRleHRdOwotICAgIGlmIChjb250
ZXh0KQotICAgICAgICBKU1ZhbHVlVW5wcm90ZWN0KGNvbnRleHRJbnRlcm5hbENvbnRleHQoY29u
dGV4dCksIG1fdmFsdWUpOworICAgIEpTVmFsdWVVbnByb3RlY3QoY29udGV4dEludGVybmFsQ29u
dGV4dChtX2NvbnRleHQpLCBtX3ZhbHVlKTsKICAgICBbbV9jb250ZXh0IHJlbGVhc2VdOwogICAg
IG1fY29udGV4dCA9IG5pbDsKICAgICBbc3VwZXIgZGVhbGxvY107CkBAIC0xMTgwLDExICsxMDg1
LDcgQEAgLSAodm9pZClkZWFsbG9jCiAKIC0gKE5TU3RyaW5nICopZGVzY3JpcHRpb24KIHsKLSAg
ICBKU0NvbnRleHQgKmNvbnRleHQgPSBbc2VsZiBjb250ZXh0XTsKLSAgICBpZiAoIWNvbnRleHQp
Ci0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBpZiAoaWQgd3JhcHBlZCA9IHRyeVVud3JhcE9i
amNPYmplY3QoY29udGV4dEludGVybmFsQ29udGV4dChjb250ZXh0KSwgbV92YWx1ZSkpCisgICAg
aWYgKGlkIHdyYXBwZWQgPSB0cnlVbndyYXBPYmpjT2JqZWN0KGNvbnRleHRJbnRlcm5hbENvbnRl
eHQobV9jb250ZXh0KSwgbV92YWx1ZSkpCiAgICAgICAgIHJldHVybiBbd3JhcHBlZCBkZXNjcmlw
dGlvbl07CiAgICAgcmV0dXJuIFtzZWxmIHRvU3RyaW5nXTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183259</attachid>
            <date>2013-01-17 13:29:33 -0800</date>
            <delta_ts>2013-01-17 18:35:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107163-20130117132633.patch</filename>
            <type>text/plain</type>
            <size>25003</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQwMDM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgyIEBA
CisyMDEzLTAxLTE3ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgT2JqZWN0aXZlLUMgQVBJOiBDbGVhbiB1cCBKU1ZhbHVlLm1tCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcxNjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBtX2NvbnRleHQgaXMgbm8gbG9u
Z2VyIHdlYWssIHNvIHRoZXJlIGlzIG5vdyBhIGxvdCBvZiBkZWFkIGNvZGUgaW4gaW4gSlNWYWx1
ZS5tbSwgYW5kIGEgd2FzdGVkIG1lc3NhZ2Ugc2VuZCAKKyAgICAgICAgb24gZXZlcnkgQVBJIGNh
bGwuICBJbiB0aGUgaGVhZCBvZiBqdXN0IGFib3V0IGV2ZXJ5IG1ldGhvZCBpbiBKU1ZhbHVlLm1t
IHdlJ3JlIGRvaW5nOgorCisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtzZWxmIGNvbnRl
eHRdOworICAgICAgICBpZiAoIWNvbnRleHQpCisgICAgICAgICAgICByZXR1cm4gbmlsOworCisg
ICAgICAgIFRoaXMgaXMgZ2V0dGluZyBhIHJldGFpbmVkIGNvcHkgb2YgdGhlIGNvbnRleHQsIHdo
aWNoIGlzIG5vIGxvbmdlciBuZWNlc3Nhcnkgbm93IG1fY29udGV4dCBpcyBubyBsb25nZXIgd2Vh
ay4gIAorICAgICAgICBXZSBjYW4ganVzdCBkZWxldGUgYWxsIHRoZXNlIGxpbmVzIGZyb20gYWxs
IGZ1bmN0aW9ucyBkb2luZyB0aGlzLCBhbmQgd2hlcmUgdGhleSB3ZXJlIHJlZmVycmluZyB0byB0
aGUgbG9jYWwgCisgICAgICAgIHZhcmlhYmxlICdjb250ZXh0JywgaW5zdGVhZCB3ZSBjYW4ganVz
dCBhY2Nlc3MgbV9jb250ZXh0IGRpcmVjdGx5LgorCisgICAgICAgIFNpbmNlIHdlJ3JlIGFscmVh
ZHkgZ29pbmcgdG8gYmUgbW9kaWZ5aW5nIG1vc3Qgb2YgSlNWYWx1ZS5tbSwgd2UnbGwgYWxzbyBk
byB0aGUgZm9sbG93aW5nOgorCisgICAgICAgIDEpIGNvbnRleHQgQHByb3BlcnR5IGlzIG5vIGxv
bmdlciB3ZWFrIOKAkyB0aGUgY29udGV4dCBwcm9wZXJ0eSBpcyBkZWNsYXJlZCBhczoKKworICAg
ICAgICAgICAgQHByb3BlcnR5KHJlYWRvbmx5LCB3ZWFrKSBKU0NvbnRleHQgKmNvbnRleHQ7CisK
KyAgICAgICAgVGhpcyBpcyByZWFsbHkgb25seSBpbmZvcm1hdGl2ZSAoc2luY2Ugd2UncmUgbm90
IHByZXNlbnRseSBzeW50aGVzaXppbmcgdGhlIGl2YXIpLCBidXQgaXQgaXMgbm93IG1pc2xlYWRp
bmcuIAorICAgICAgICBXZSBzaG91bGQgY2hhbmdlIGl0IHRvOgorCisgICAgICAgICAgICBAcHJv
cGVydHkocmVhZG9ubHksIHJldGFpbikgSlNDb250ZXh0ICpjb250ZXh0OworCisgICAgICAgIDIp
IHRoZSBKU0NvbnRleHQgaXZhciBhbmQgYWNjZXNzb3IgY2FuIGJlIGF1dG9tYXRpY2FsbHkgZ2Vu
ZXJhdGVkLiAgU2luY2Ugd2UncmUgbm8gbG9uZ2VyIGRvaW5nIGFueXRoaW5nIAorICAgICAgICBz
cGVjaWFsIHdpdGggbV9jb250ZXh0LCB3ZSBjYW4ganVzdCBsZXQgdGhlIGNvbXBpbGVyIGhhbmRs
ZSB0aGUgaXZhciBmb3IgdXMuICBXZSdsbCBkZWxldGU6CisKKyAgICAgICAgICAgIEpTQ29udGV4
dCAqbV9jb250ZXh0OworCisgICAgICAgIGFuZDoKKworICAgICAgICAgICAgLSAoSlNDb250ZXh0
ICopY29udGV4dAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBtX2NvbnRl
eHQ7CisgICAgICAgIAorICAgICAgICAgICAgfQorCisgICAgICAgIGFuZCBmaW5kJnJlcGxhY2Ug
Im1fY29udGV4dCIgdG8gIl9jb250ZXh0IiBpbiBKU1ZhbHVlLm1tLgorCisgICAgICAgICogQVBJ
L0FQSUpTVmFsdWUuaDoKKyAgICAgICAgKiBBUEkvSlNWYWx1ZS5tbToKKyAgICAgICAgKC1bSlNW
YWx1ZSB0b09iamVjdF0pOgorICAgICAgICAoLVtKU1ZhbHVlIHRvQm9vbF0pOgorICAgICAgICAo
LVtKU1ZhbHVlIHRvRG91YmxlXSk6CisgICAgICAgICgtW0pTVmFsdWUgdG9OdW1iZXJdKToKKyAg
ICAgICAgKC1bSlNWYWx1ZSB0b1N0cmluZ10pOgorICAgICAgICAoLVtKU1ZhbHVlIHRvRGF0ZV0p
OgorICAgICAgICAoLVtKU1ZhbHVlIHRvQXJyYXldKToKKyAgICAgICAgKC1bSlNWYWx1ZSB0b0Rp
Y3Rpb25hcnldKToKKyAgICAgICAgKC1bSlNWYWx1ZSB2YWx1ZUZvclByb3BlcnR5Ol0pOgorICAg
ICAgICAoLVtKU1ZhbHVlIHNldFZhbHVlOmZvclByb3BlcnR5Ol0pOgorICAgICAgICAoLVtKU1Zh
bHVlIGRlbGV0ZVByb3BlcnR5Ol0pOgorICAgICAgICAoLVtKU1ZhbHVlIGhhc1Byb3BlcnR5Ol0p
OgorICAgICAgICAoLVtKU1ZhbHVlIGRlZmluZVByb3BlcnR5OmRlc2NyaXB0b3I6XSk6CisgICAg
ICAgICgtW0pTVmFsdWUgdmFsdWVBdEluZGV4Ol0pOgorICAgICAgICAoLVtKU1ZhbHVlIHNldFZh
bHVlOmF0SW5kZXg6XSk6CisgICAgICAgICgtW0pTVmFsdWUgaXNVbmRlZmluZWRdKToKKyAgICAg
ICAgKC1bSlNWYWx1ZSBpc051bGxdKToKKyAgICAgICAgKC1bSlNWYWx1ZSBpc0Jvb2xlYW5dKToK
KyAgICAgICAgKC1bSlNWYWx1ZSBpc051bWJlcl0pOgorICAgICAgICAoLVtKU1ZhbHVlIGlzU3Ry
aW5nXSk6CisgICAgICAgICgtW0pTVmFsdWUgaXNPYmplY3RdKToKKyAgICAgICAgKC1bSlNWYWx1
ZSBpc0VxdWFsVG9PYmplY3Q6XSk6CisgICAgICAgICgtW0pTVmFsdWUgaXNFcXVhbFdpdGhUeXBl
Q29lcmNpb25Ub09iamVjdDpdKToKKyAgICAgICAgKC1bSlNWYWx1ZSBpc0luc3RhbmNlT2Y6XSk6
CisgICAgICAgICgtW0pTVmFsdWUgY2FsbFdpdGhBcmd1bWVudHM6XSk6CisgICAgICAgICgtW0pT
VmFsdWUgY29uc3RydWN0V2l0aEFyZ3VtZW50czpdKToKKyAgICAgICAgKC1bSlNWYWx1ZSBpbnZv
a2VNZXRob2Q6d2l0aEFyZ3VtZW50czpdKToKKyAgICAgICAgKC1bSlNWYWx1ZSBvYmplY3RGb3JL
ZXllZFN1YnNjcmlwdDpdKToKKyAgICAgICAgKC1bSlNWYWx1ZSBzZXRPYmplY3Q6Zm9yS2V5ZWRT
dWJzY3JpcHQ6XSk6CisgICAgICAgICgtW0pTVmFsdWUgaW5pdFdpdGhWYWx1ZTppbkNvbnRleHQ6
XSk6CisgICAgICAgICgtW0pTVmFsdWUgZGVhbGxvY10pOgorICAgICAgICAoLVtKU1ZhbHVlIGRl
c2NyaXB0aW9uXSk6CisKIDIwMTMtMDEtMTcgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJn
QGFwcGxlLmNvbT4KIAogICAgICAgICBPYmplY3RpdmUtQyBBUEk6IENsZWFuIHVwIEpTVmFsdWUK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJSlNWYWx1ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJSlNWYWx1ZS5oCShyZXZpc2lvbiAxNDAw
MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUpTVmFsdWUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTk4LDcgKzE5OCw3IEBAIE5TX0NMQVNTX0FWQUlMQUJMRSgxMF85LCBOQSkKIC0g
KEpTVmFsdWUgKilpbnZva2VNZXRob2Q6KE5TU3RyaW5nICopbWV0aG9kIHdpdGhBcmd1bWVudHM6
KE5TQXJyYXkgKilhcmd1bWVudHM7CiAKIC8vIFRoZSBKU0NvbnRleHQgdGhhdCB0aGlzIHZhbHVl
IG9yaWdpbmF0ZXMgZnJvbS4KLUBwcm9wZXJ0eShyZWFkb25seSwgd2VhaykgSlNDb250ZXh0ICpj
b250ZXh0OworQHByb3BlcnR5KHJlYWRvbmx5LCByZXRhaW4pIEpTQ29udGV4dCAqY29udGV4dDsK
IAogQGVuZAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCShyZXZpc2lv
biAxNDAwMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0JKHdvcmtp
bmcgY29weSkKQEAgLTU0LDcgKzU0LDYgQEAgTlNTdHJpbmcgKiBjb25zdCBKU1Byb3BlcnR5RGVz
Y3JpcHRvclNldAogCiBAaW1wbGVtZW50YXRpb24gSlNWYWx1ZSB7CiAgICAgSlNWYWx1ZVJlZiBt
X3ZhbHVlOwotICAgIEpTQ29udGV4dCAqbV9jb250ZXh0OwogfQogCiArIChKU1ZhbHVlICopdmFs
dWVXaXRoT2JqZWN0OihpZCl2YWx1ZSBpbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQKQEAg
LTEyNCwxMCArMTIzLDcgQEAgKyAoSlNWYWx1ZSAqKXZhbHVlV2l0aFVuZGVmaW5lZEluQ29udGV4
dAogCiAtIChpZCl0b09iamVjdAogewotICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtzZWxmIGNv
bnRleHRdOwotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1
cm4gdmFsdWVUb09iamVjdChjb250ZXh0LCBtX3ZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWVUb09i
amVjdChfY29udGV4dCwgbV92YWx1ZSk7CiB9CiAKIC0gKGlkKXRvT2JqZWN0T2ZDbGFzczooQ2xh
c3MpZXhwZWN0ZWRDbGFzcwpAQCAtMTM4LDIwICsxMzQsMTUgQEAgLSAoaWQpdG9PYmplY3RPZkNs
YXNzOihDbGFzcylleHBlY3RlZENsYQogCiAtIChCT09MKXRvQm9vbAogewotICAgIEpTQ29udGV4
dCAqY29udGV4dCA9IFtzZWxmIGNvbnRleHRdOwotICAgIHJldHVybiAoY29udGV4dCAmJiBKU1Zh
bHVlVG9Cb29sZWFuKGNvbnRleHRJbnRlcm5hbENvbnRleHQoY29udGV4dCksIG1fdmFsdWUpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0SW50ZXJuYWxDb250ZXh0KF9jb250
ZXh0KSwgbV92YWx1ZSk7CiB9CiAKIC0gKGRvdWJsZSl0b0RvdWJsZQogewotICAgIEpTQ29udGV4
dCAqY29udGV4dCA9IFtzZWxmIGNvbnRleHRdOwotICAgIGlmICghY29udGV4dCkKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7Ci0KICAgICBK
U1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgZG91YmxlIHJlc3VsdCA9IEpTVmFsdWVUb051
bWJlcihjb250ZXh0SW50ZXJuYWxDb250ZXh0KGNvbnRleHQpLCBtX3ZhbHVlLCAmZXhjZXB0aW9u
KTsKKyAgICBkb3VibGUgcmVzdWx0ID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHRJbnRlcm5hbENv
bnRleHQoX2NvbnRleHQpLCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9u
KSB7Ci0gICAgICAgIFtjb250ZXh0IG5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOworICAgICAg
ICBbX2NvbnRleHQgbm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CiAgICAgICAgIHJldHVybiBz
dGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOwogICAgIH0KIApAQCAtMTcw
LDM1OSArMTYxLDI3NyBAQCAtICh1aW50MzJfdCl0b1VJbnQzMgogCiAtIChOU051bWJlciAqKXRv
TnVtYmVyCiB7Ci0gICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW3NlbGYgY29udGV4dF07Ci0gICAg
aWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gbmlsOwotCiAgICAgSlNWYWx1ZVJlZiBleGNl
cHRpb24gPSAwOwotICAgIGlkIHJlc3VsdCA9IHZhbHVlVG9OdW1iZXIoY29udGV4dEludGVybmFs
Q29udGV4dChjb250ZXh0KSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7CisgICAgaWQgcmVzdWx0ID0g
dmFsdWVUb051bWJlcihjb250ZXh0SW50ZXJuYWxDb250ZXh0KF9jb250ZXh0KSwgbV92YWx1ZSwg
JmV4Y2VwdGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgW2NvbnRleHQgbm90aWZ5
RXhjZXB0aW9uOmV4Y2VwdGlvbl07CisgICAgICAgIFtfY29udGV4dCBub3RpZnlFeGNlcHRpb246
ZXhjZXB0aW9uXTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiAtIChOU1N0cmluZyAqKXRvU3Ry
aW5nCiB7Ci0gICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW3NlbGYgY29udGV4dF07Ci0gICAgaWYg
KCFjb250ZXh0KQotICAgICAgICByZXR1cm4gbmlsOwotCiAgICAgSlNWYWx1ZVJlZiBleGNlcHRp
b24gPSAwOwotICAgIGlkIHJlc3VsdCA9IHZhbHVlVG9TdHJpbmcoY29udGV4dEludGVybmFsQ29u
dGV4dChjb250ZXh0KSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7CisgICAgaWQgcmVzdWx0ID0gdmFs
dWVUb1N0cmluZyhjb250ZXh0SW50ZXJuYWxDb250ZXh0KF9jb250ZXh0KSwgbV92YWx1ZSwgJmV4
Y2VwdGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgW2NvbnRleHQgbm90aWZ5RXhj
ZXB0aW9uOmV4Y2VwdGlvbl07CisgICAgICAgIFtfY29udGV4dCBub3RpZnlFeGNlcHRpb246ZXhj
ZXB0aW9uXTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiAtIChOU0RhdGUgKil0b0RhdGUKIHsK
LSAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbc2VsZiBjb250ZXh0XTsKLSAgICBpZiAoIWNvbnRl
eHQpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7
Ci0gICAgaWQgcmVzdWx0ID0gdmFsdWVUb0RhdGUoY29udGV4dEludGVybmFsQ29udGV4dChjb250
ZXh0KSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7CisgICAgaWQgcmVzdWx0ID0gdmFsdWVUb0RhdGUo
Y29udGV4dEludGVybmFsQ29udGV4dChfY29udGV4dCksIG1fdmFsdWUsICZleGNlcHRpb24pOwog
ICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIFtjb250ZXh0IG5vdGlmeUV4Y2VwdGlvbjpleGNl
cHRpb25dOworICAgICAgICBbX2NvbnRleHQgbm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLSAoTlNBcnJheSAqKXRvQXJyYXkKIHsKLSAgICBKU0Nv
bnRleHQgKmNvbnRleHQgPSBbc2VsZiBjb250ZXh0XTsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0KICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgaWQg
cmVzdWx0ID0gdmFsdWVUb0FycmF5KGNvbnRleHRJbnRlcm5hbENvbnRleHQoY29udGV4dCksIG1f
dmFsdWUsICZleGNlcHRpb24pOworICAgIGlkIHJlc3VsdCA9IHZhbHVlVG9BcnJheShjb250ZXh0
SW50ZXJuYWxDb250ZXh0KF9jb250ZXh0KSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7CiAgICAgaWYg
KGV4Y2VwdGlvbikKLSAgICAgICAgW2NvbnRleHQgbm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07
CisgICAgICAgIFtfY29udGV4dCBub3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCiAtIChOU0RpY3Rpb25hcnkgKil0b0RpY3Rpb25hcnkKIHsKLSAgICBK
U0NvbnRleHQgKmNvbnRleHQgPSBbc2VsZiBjb250ZXh0XTsKLSAgICBpZiAoIWNvbnRleHQpCi0g
ICAgICAgIHJldHVybiBuaWw7Ci0KICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAg
aWQgcmVzdWx0ID0gdmFsdWVUb0RpY3Rpb25hcnkoY29udGV4dEludGVybmFsQ29udGV4dChjb250
ZXh0KSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7CisgICAgaWQgcmVzdWx0ID0gdmFsdWVUb0RpY3Rp
b25hcnkoY29udGV4dEludGVybmFsQ29udGV4dChfY29udGV4dCksIG1fdmFsdWUsICZleGNlcHRp
b24pOwogICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIFtjb250ZXh0IG5vdGlmeUV4Y2VwdGlv
bjpleGNlcHRpb25dOworICAgICAgICBbX2NvbnRleHQgbm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlv
bl07CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLSAoSlNWYWx1ZSAqKXZhbHVlRm9yUHJvcGVy
dHk6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lCiB7Ci0gICAgSlNDb250ZXh0ICpjb250ZXh0ID0g
W3NlbGYgY29udGV4dF07Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gbmlsOwot
CiAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwotICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9
IEpTVmFsdWVUb09iamVjdChjb250ZXh0SW50ZXJuYWxDb250ZXh0KGNvbnRleHQpLCBtX3ZhbHVl
LCAmZXhjZXB0aW9uKTsKKyAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3Qo
Y29udGV4dEludGVybmFsQ29udGV4dChfY29udGV4dCksIG1fdmFsdWUsICZleGNlcHRpb24pOwog
ICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbY29udGV4dCB2YWx1ZUZyb21Ob3Rp
ZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKKyAgICAgICAgcmV0dXJuIFtfY29udGV4dCB2YWx1ZUZy
b21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKIAogICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBK
U1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpcHJvcGVydHlOYW1lKTsKLSAg
ICBKU1ZhbHVlUmVmIHJlc3VsdCA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dEludGVybmFs
Q29udGV4dChjb250ZXh0KSwgb2JqZWN0LCBuYW1lLCAmZXhjZXB0aW9uKTsKKyAgICBKU1ZhbHVl
UmVmIHJlc3VsdCA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dEludGVybmFsQ29udGV4dChf
Y29udGV4dCksIG9iamVjdCwgbmFtZSwgJmV4Y2VwdGlvbik7CiAgICAgSlNTdHJpbmdSZWxlYXNl
KG5hbWUpOwogICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbY29udGV4dCB2YWx1
ZUZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKKyAgICAgICAgcmV0dXJuIFtfY29udGV4
dCB2YWx1ZUZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKIAotICAgIHJldHVybiBbSlNW
YWx1ZSB2YWx1ZVdpdGhWYWx1ZTpyZXN1bHQgaW5Db250ZXh0OmNvbnRleHRdOworICAgIHJldHVy
biBbSlNWYWx1ZSB2YWx1ZVdpdGhWYWx1ZTpyZXN1bHQgaW5Db250ZXh0Ol9jb250ZXh0XTsKIH0K
IAogLSAodm9pZClzZXRWYWx1ZTooaWQpdmFsdWUgZm9yUHJvcGVydHk6KE5TU3RyaW5nICopcHJv
cGVydHlOYW1lCiB7Ci0gICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW3NlbGYgY29udGV4dF07Ci0g
ICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm47Ci0KICAgICBKU1ZhbHVlUmVmIGV4Y2Vw
dGlvbiA9IDA7Ci0gICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRl
eHRJbnRlcm5hbENvbnRleHQoY29udGV4dCksIG1fdmFsdWUsICZleGNlcHRpb24pOworICAgIEpT
T2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0SW50ZXJuYWxDb250ZXh0
KF9jb250ZXh0KSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbikgewot
ICAgICAgICBbY29udGV4dCBub3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKKyAgICAgICAgW19j
b250ZXh0IG5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgSlNTdHJpbmdSZWYgbmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChD
RlN0cmluZ1JlZilwcm9wZXJ0eU5hbWUpOwotICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoY29udGV4
dEludGVybmFsQ29udGV4dChjb250ZXh0KSwgb2JqZWN0LCBuYW1lLCBvYmplY3RUb1ZhbHVlKGNv
bnRleHQsIHZhbHVlKSwgMCwgJmV4Y2VwdGlvbik7CisgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShj
b250ZXh0SW50ZXJuYWxDb250ZXh0KF9jb250ZXh0KSwgb2JqZWN0LCBuYW1lLCBvYmplY3RUb1Zh
bHVlKF9jb250ZXh0LCB2YWx1ZSksIDAsICZleGNlcHRpb24pOwogICAgIEpTU3RyaW5nUmVsZWFz
ZShuYW1lKTsKICAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgIFtjb250ZXh0IG5vdGlmeUV4
Y2VwdGlvbjpleGNlcHRpb25dOworICAgICAgICBbX2NvbnRleHQgbm90aWZ5RXhjZXB0aW9uOmV4
Y2VwdGlvbl07CiAgICAgICAgIHJldHVybjsKICAgICB9CiB9CiAKIC0gKEJPT0wpZGVsZXRlUHJv
cGVydHk6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lCiB7Ci0gICAgSlNDb250ZXh0ICpjb250ZXh0
ID0gW3NlbGYgY29udGV4dF07Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gTk87
Ci0KICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNPYmplY3RSZWYgb2JqZWN0
ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHRJbnRlcm5hbENvbnRleHQoY29udGV4dCksIG1fdmFs
dWUsICZleGNlcHRpb24pOworICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVj
dChjb250ZXh0SW50ZXJuYWxDb250ZXh0KF9jb250ZXh0KSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7
CiAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIFtjb250ZXh0IGJvb2xGcm9tTm90
aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CisgICAgICAgIHJldHVybiBbX2NvbnRleHQgYm9vbEZy
b21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKIAogICAgIEpTU3RyaW5nUmVmIG5hbWUgPSBK
U1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpcHJvcGVydHlOYW1lKTsKLSAg
ICBCT09MIHJlc3VsdCA9IEpTT2JqZWN0RGVsZXRlUHJvcGVydHkoY29udGV4dEludGVybmFsQ29u
dGV4dChjb250ZXh0KSwgb2JqZWN0LCBuYW1lLCAmZXhjZXB0aW9uKTsKKyAgICBCT09MIHJlc3Vs
dCA9IEpTT2JqZWN0RGVsZXRlUHJvcGVydHkoY29udGV4dEludGVybmFsQ29udGV4dChfY29udGV4
dCksIG9iamVjdCwgbmFtZSwgJmV4Y2VwdGlvbik7CiAgICAgSlNTdHJpbmdSZWxlYXNlKG5hbWUp
OwogICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbY29udGV4dCBib29sRnJvbU5v
dGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOworICAgICAgICByZXR1cm4gW19jb250ZXh0IGJvb2xG
cm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQog
CiAtIChCT09MKWhhc1Byb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5TmFtZQogewotICAgIEpT
Q29udGV4dCAqY29udGV4dCA9IFtzZWxmIGNvbnRleHRdOwotICAgIGlmICghY29udGV4dCkKLSAg
ICAgICAgcmV0dXJuIE5POwotCiAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwotICAgIEpT
T2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0SW50ZXJuYWxDb250ZXh0
KGNvbnRleHQpLCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsKKyAgICBKU09iamVjdFJlZiBvYmplY3Qg
PSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dEludGVybmFsQ29udGV4dChfY29udGV4dCksIG1fdmFs
dWUsICZleGNlcHRpb24pOwogICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbY29u
dGV4dCBib29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOworICAgICAgICByZXR1cm4g
W19jb250ZXh0IGJvb2xGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CiAKICAgICBKU1N0
cmluZ1JlZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKXBy
b3BlcnR5TmFtZSk7Ci0gICAgQk9PTCByZXN1bHQgPSBKU09iamVjdEhhc1Byb3BlcnR5KGNvbnRl
eHRJbnRlcm5hbENvbnRleHQoY29udGV4dCksIG9iamVjdCwgbmFtZSk7CisgICAgQk9PTCByZXN1
bHQgPSBKU09iamVjdEhhc1Byb3BlcnR5KGNvbnRleHRJbnRlcm5hbENvbnRleHQoX2NvbnRleHQp
LCBvYmplY3QsIG5hbWUpOwogICAgIEpTU3RyaW5nUmVsZWFzZShuYW1lKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCiAtICh2b2lkKWRlZmluZVByb3BlcnR5OihOU1N0cmluZyAqKXByb3BlcnR5
IGRlc2NyaXB0b3I6KGlkKWRlc2NyaXB0b3IKIHsKLSAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBb
c2VsZiBjb250ZXh0XTsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybjsKLSAgICBb
W2NvbnRleHQgZ2xvYmFsT2JqZWN0XVtAIk9iamVjdCJdIGludm9rZU1ldGhvZDpAImRlZmluZVBy
b3BlcnR5IiB3aXRoQXJndW1lbnRzOkBbIHNlbGYsIHByb3BlcnR5LCBkZXNjcmlwdG9yIF1dOwor
ICAgIFtbX2NvbnRleHQgZ2xvYmFsT2JqZWN0XVtAIk9iamVjdCJdIGludm9rZU1ldGhvZDpAImRl
ZmluZVByb3BlcnR5IiB3aXRoQXJndW1lbnRzOkBbIHNlbGYsIHByb3BlcnR5LCBkZXNjcmlwdG9y
IF1dOwogfQogCiAtIChKU1ZhbHVlICopdmFsdWVBdEluZGV4OihOU1VJbnRlZ2VyKWluZGV4CiB7
Ci0gICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW3NlbGYgY29udGV4dF07Ci0gICAgaWYgKCFjb250
ZXh0KQotICAgICAgICByZXR1cm4gbmlsOwotCiAgICAgaWYgKGluZGV4ICE9ICh1bnNpZ25lZClp
bmRleCkKLSAgICAgICAgW3NlbGYgdmFsdWVGb3JQcm9wZXJ0eTpbW0pTVmFsdWUgdmFsdWVXaXRo
RG91YmxlOmluZGV4IGluQ29udGV4dDpjb250ZXh0XSB0b1N0cmluZ11dOworICAgICAgICBbc2Vs
ZiB2YWx1ZUZvclByb3BlcnR5OltbSlNWYWx1ZSB2YWx1ZVdpdGhEb3VibGU6aW5kZXggaW5Db250
ZXh0Ol9jb250ZXh0XSB0b1N0cmluZ11dOwogCiAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAw
OwotICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0SW50ZXJu
YWxDb250ZXh0KGNvbnRleHQpLCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsKKyAgICBKU09iamVjdFJl
ZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dEludGVybmFsQ29udGV4dChfY29udGV4
dCksIG1fdmFsdWUsICZleGNlcHRpb24pOwogICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJl
dHVybiBbY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKKyAgICAg
ICAgcmV0dXJuIFtfY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsK
IAotICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgoY29u
dGV4dEludGVybmFsQ29udGV4dChjb250ZXh0KSwgb2JqZWN0LCAodW5zaWduZWQpaW5kZXgsICZl
eGNlcHRpb24pOworICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gSlNPYmplY3RHZXRQcm9wZXJ0eUF0
SW5kZXgoY29udGV4dEludGVybmFsQ29udGV4dChfY29udGV4dCksIG9iamVjdCwgKHVuc2lnbmVk
KWluZGV4LCAmZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4g
W2NvbnRleHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CisgICAgICAgIHJl
dHVybiBbX2NvbnRleHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CiAKLSAg
ICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoVmFsdWU6cmVzdWx0IGluQ29udGV4dDpjb250ZXh0
XTsKKyAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoVmFsdWU6cmVzdWx0IGluQ29udGV4dDpf
Y29udGV4dF07CiB9CiAKIC0gKHZvaWQpc2V0VmFsdWU6KGlkKXZhbHVlIGF0SW5kZXg6KE5TVUlu
dGVnZXIpaW5kZXgKIHsKLSAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbc2VsZiBjb250ZXh0XTsK
LSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmIChpbmRleCAhPSAo
dW5zaWduZWQpaW5kZXgpCi0gICAgICAgIHJldHVybiBbc2VsZiBzZXRWYWx1ZTp2YWx1ZSBmb3JQ
cm9wZXJ0eTpbW0pTVmFsdWUgdmFsdWVXaXRoRG91YmxlOmluZGV4IGluQ29udGV4dDpjb250ZXh0
XSB0b1N0cmluZ11dOworICAgICAgICByZXR1cm4gW3NlbGYgc2V0VmFsdWU6dmFsdWUgZm9yUHJv
cGVydHk6W1tKU1ZhbHVlIHZhbHVlV2l0aERvdWJsZTppbmRleCBpbkNvbnRleHQ6X2NvbnRleHRd
IHRvU3RyaW5nXV07CiAKICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNPYmpl
Y3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHRJbnRlcm5hbENvbnRleHQoY29u
dGV4dCksIG1fdmFsdWUsICZleGNlcHRpb24pOworICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpT
VmFsdWVUb09iamVjdChjb250ZXh0SW50ZXJuYWxDb250ZXh0KF9jb250ZXh0KSwgbV92YWx1ZSwg
JmV4Y2VwdGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICBbY29udGV4dCBub3Rp
ZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKKyAgICAgICAgW19jb250ZXh0IG5vdGlmeUV4Y2VwdGlv
bjpleGNlcHRpb25dOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgSlNPYmplY3RTZXRQ
cm9wZXJ0eUF0SW5kZXgoY29udGV4dEludGVybmFsQ29udGV4dChjb250ZXh0KSwgb2JqZWN0LCAo
dW5zaWduZWQpaW5kZXgsIG9iamVjdFRvVmFsdWUoY29udGV4dCwgdmFsdWUpLCAmZXhjZXB0aW9u
KTsKKyAgICBKU09iamVjdFNldFByb3BlcnR5QXRJbmRleChjb250ZXh0SW50ZXJuYWxDb250ZXh0
KF9jb250ZXh0KSwgb2JqZWN0LCAodW5zaWduZWQpaW5kZXgsIG9iamVjdFRvVmFsdWUoX2NvbnRl
eHQsIHZhbHVlKSwgJmV4Y2VwdGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICBb
Y29udGV4dCBub3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKKyAgICAgICAgW19jb250ZXh0IG5v
dGlmeUV4Y2VwdGlvbjpleGNlcHRpb25dOwogICAgICAgICByZXR1cm47CiAgICAgfQogfQogCiAt
IChCT09MKWlzVW5kZWZpbmVkCiB7Ci0gICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW3NlbGYgY29u
dGV4dF07Ci0gICAgcmV0dXJuIChjb250ZXh0ICYmIEpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0
SW50ZXJuYWxDb250ZXh0KGNvbnRleHQpLCBtX3ZhbHVlKSk7CisgICAgcmV0dXJuIEpTVmFsdWVJ
c1VuZGVmaW5lZChjb250ZXh0SW50ZXJuYWxDb250ZXh0KF9jb250ZXh0KSwgbV92YWx1ZSk7CiB9
CiAKIC0gKEJPT0wpaXNOdWxsCiB7Ci0gICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW3NlbGYgY29u
dGV4dF07Ci0gICAgcmV0dXJuIChjb250ZXh0ICYmIEpTVmFsdWVJc051bGwoY29udGV4dEludGVy
bmFsQ29udGV4dChjb250ZXh0KSwgbV92YWx1ZSkpOworICAgIHJldHVybiBKU1ZhbHVlSXNOdWxs
KGNvbnRleHRJbnRlcm5hbENvbnRleHQoX2NvbnRleHQpLCBtX3ZhbHVlKTsKIH0KIAogLSAoQk9P
TClpc0Jvb2xlYW4KIHsKLSAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbc2VsZiBjb250ZXh0XTsK
LSAgICByZXR1cm4gKGNvbnRleHQgJiYgSlNWYWx1ZUlzQm9vbGVhbihjb250ZXh0SW50ZXJuYWxD
b250ZXh0KGNvbnRleHQpLCBtX3ZhbHVlKSk7CisgICAgcmV0dXJuIEpTVmFsdWVJc0Jvb2xlYW4o
Y29udGV4dEludGVybmFsQ29udGV4dChfY29udGV4dCksIG1fdmFsdWUpOwogfQogCiAtIChCT09M
KWlzTnVtYmVyCiB7Ci0gICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW3NlbGYgY29udGV4dF07Ci0g
ICAgcmV0dXJuIChjb250ZXh0ICYmIEpTVmFsdWVJc051bWJlcihjb250ZXh0SW50ZXJuYWxDb250
ZXh0KGNvbnRleHQpLCBtX3ZhbHVlKSk7CisgICAgcmV0dXJuIEpTVmFsdWVJc051bWJlcihjb250
ZXh0SW50ZXJuYWxDb250ZXh0KF9jb250ZXh0KSwgbV92YWx1ZSk7CiB9CiAKIC0gKEJPT0wpaXNT
dHJpbmcKIHsKLSAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbc2VsZiBjb250ZXh0XTsKLSAgICBy
ZXR1cm4gKGNvbnRleHQgJiYgSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHRJbnRlcm5hbENvbnRleHQo
Y29udGV4dCksIG1fdmFsdWUpKTsKKyAgICByZXR1cm4gSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHRJ
bnRlcm5hbENvbnRleHQoX2NvbnRleHQpLCBtX3ZhbHVlKTsKIH0KIAogLSAoQk9PTClpc09iamVj
dAogewotICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtzZWxmIGNvbnRleHRdOwotICAgIHJldHVy
biAoY29udGV4dCAmJiBKU1ZhbHVlSXNPYmplY3QoY29udGV4dEludGVybmFsQ29udGV4dChjb250
ZXh0KSwgbV92YWx1ZSkpOworICAgIHJldHVybiBKU1ZhbHVlSXNPYmplY3QoY29udGV4dEludGVy
bmFsQ29udGV4dChfY29udGV4dCksIG1fdmFsdWUpOwogfQogCiAtIChCT09MKWlzRXF1YWxUb09i
amVjdDooaWQpdmFsdWUKIHsKLSAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbc2VsZiBjb250ZXh0
XTsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiBOTzsKLQotICAgIHJldHVybiBK
U1ZhbHVlSXNTdHJpY3RFcXVhbChjb250ZXh0SW50ZXJuYWxDb250ZXh0KGNvbnRleHQpLCBtX3Zh
bHVlLCBvYmplY3RUb1ZhbHVlKGNvbnRleHQsIHZhbHVlKSk7CisgICAgcmV0dXJuIEpTVmFsdWVJ
c1N0cmljdEVxdWFsKGNvbnRleHRJbnRlcm5hbENvbnRleHQoX2NvbnRleHQpLCBtX3ZhbHVlLCBv
YmplY3RUb1ZhbHVlKF9jb250ZXh0LCB2YWx1ZSkpOwogfQogCiAtIChCT09MKWlzRXF1YWxXaXRo
VHlwZUNvZXJjaW9uVG9PYmplY3Q6KGlkKXZhbHVlCiB7Ci0gICAgSlNDb250ZXh0ICpjb250ZXh0
ID0gW3NlbGYgY29udGV4dF07Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gTk87
Ci0KICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgQk9PTCByZXN1bHQgPSBKU1Zh
bHVlSXNFcXVhbChjb250ZXh0SW50ZXJuYWxDb250ZXh0KGNvbnRleHQpLCBtX3ZhbHVlLCBvYmpl
Y3RUb1ZhbHVlKGNvbnRleHQsIHZhbHVlKSwgJmV4Y2VwdGlvbik7CisgICAgQk9PTCByZXN1bHQg
PSBKU1ZhbHVlSXNFcXVhbChjb250ZXh0SW50ZXJuYWxDb250ZXh0KF9jb250ZXh0KSwgbV92YWx1
ZSwgb2JqZWN0VG9WYWx1ZShfY29udGV4dCwgdmFsdWUpLCAmZXhjZXB0aW9uKTsKICAgICBpZiAo
ZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gW2NvbnRleHQgYm9vbEZyb21Ob3RpZnlFeGNlcHRp
b246ZXhjZXB0aW9uXTsKKyAgICAgICAgcmV0dXJuIFtfY29udGV4dCBib29sRnJvbU5vdGlmeUV4
Y2VwdGlvbjpleGNlcHRpb25dOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLSAoQk9PTClp
c0luc3RhbmNlT2Y6KGlkKXZhbHVlCiB7Ci0gICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW3NlbGYg
Y29udGV4dF07Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gTk87Ci0KICAgICBK
U1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNPYmplY3RSZWYgY29uc3RydWN0b3IgPSBK
U1ZhbHVlVG9PYmplY3QoY29udGV4dEludGVybmFsQ29udGV4dChjb250ZXh0KSwgb2JqZWN0VG9W
YWx1ZShjb250ZXh0LCB2YWx1ZSksICZleGNlcHRpb24pOworICAgIEpTT2JqZWN0UmVmIGNvbnN0
cnVjdG9yID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHRJbnRlcm5hbENvbnRleHQoX2NvbnRleHQp
LCBvYmplY3RUb1ZhbHVlKF9jb250ZXh0LCB2YWx1ZSksICZleGNlcHRpb24pOwogICAgIGlmIChl
eGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbY29udGV4dCBib29sRnJvbU5vdGlmeUV4Y2VwdGlv
bjpleGNlcHRpb25dOworICAgICAgICByZXR1cm4gW19jb250ZXh0IGJvb2xGcm9tTm90aWZ5RXhj
ZXB0aW9uOmV4Y2VwdGlvbl07CiAKLSAgICBCT09MIHJlc3VsdCA9IEpTVmFsdWVJc0luc3RhbmNl
T2ZDb25zdHJ1Y3Rvcihjb250ZXh0SW50ZXJuYWxDb250ZXh0KGNvbnRleHQpLCBtX3ZhbHVlLCBj
b25zdHJ1Y3RvciwgJmV4Y2VwdGlvbik7CisgICAgQk9PTCByZXN1bHQgPSBKU1ZhbHVlSXNJbnN0
YW5jZU9mQ29uc3RydWN0b3IoY29udGV4dEludGVybmFsQ29udGV4dChfY29udGV4dCksIG1fdmFs
dWUsIGNvbnN0cnVjdG9yLCAmZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAg
ICByZXR1cm4gW2NvbnRleHQgYm9vbEZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsKKyAg
ICAgICAgcmV0dXJuIFtfY29udGV4dCBib29sRnJvbU5vdGlmeUV4Y2VwdGlvbjpleGNlcHRpb25d
OwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLSAoSlNWYWx1ZSAqKWNhbGxXaXRoQXJndW1l
bnRzOihOU0FycmF5ICopYXJndW1lbnRBcnJheQogewotICAgIEpTQ29udGV4dCAqY29udGV4dCA9
IFtzZWxmIGNvbnRleHRdOwotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuIG5pbDsK
LQogICAgIE5TVUludGVnZXIgYXJndW1lbnRDb3VudCA9IFthcmd1bWVudEFycmF5IGNvdW50XTsK
ICAgICBKU1ZhbHVlUmVmIGFyZ3VtZW50c1thcmd1bWVudENvdW50XTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsgKytpKQotICAgICAgICBhcmd1bWVudHNbaV0g
PSBvYmplY3RUb1ZhbHVlKGNvbnRleHQsIFthcmd1bWVudEFycmF5IG9iamVjdEF0SW5kZXg6aV0p
OworICAgICAgICBhcmd1bWVudHNbaV0gPSBvYmplY3RUb1ZhbHVlKF9jb250ZXh0LCBbYXJndW1l
bnRBcnJheSBvYmplY3RBdEluZGV4OmldKTsKIAogICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0g
MDsKLSAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dEludGVy
bmFsQ29udGV4dChjb250ZXh0KSwgbV92YWx1ZSwgJmV4Y2VwdGlvbik7CisgICAgSlNPYmplY3RS
ZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHRJbnRlcm5hbENvbnRleHQoX2NvbnRl
eHQpLCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICBy
ZXR1cm4gW2NvbnRleHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CisgICAg
ICAgIHJldHVybiBbX2NvbnRleHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07
CiAKLSAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oY29udGV4
dEludGVybmFsQ29udGV4dChjb250ZXh0KSwgb2JqZWN0LCAwLCBhcmd1bWVudENvdW50LCBhcmd1
bWVudHMsICZleGNlcHRpb24pOworICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gSlNPYmplY3RDYWxs
QXNGdW5jdGlvbihjb250ZXh0SW50ZXJuYWxDb250ZXh0KF9jb250ZXh0KSwgb2JqZWN0LCAwLCBh
cmd1bWVudENvdW50LCBhcmd1bWVudHMsICZleGNlcHRpb24pOwogICAgIGlmIChleGNlcHRpb24p
Ci0gICAgICAgIHJldHVybiBbY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0
aW9uXTsKKyAgICAgICAgcmV0dXJuIFtfY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNlcHRpb246
ZXhjZXB0aW9uXTsKIAotICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhWYWx1ZTpyZXN1bHQg
aW5Db250ZXh0OmNvbnRleHRdOworICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhWYWx1ZTpy
ZXN1bHQgaW5Db250ZXh0Ol9jb250ZXh0XTsKIH0KIAogLSAoSlNWYWx1ZSAqKWNvbnN0cnVjdFdp
dGhBcmd1bWVudHM6KE5TQXJyYXkgKilhcmd1bWVudEFycmF5CiB7Ci0gICAgSlNDb250ZXh0ICpj
b250ZXh0ID0gW3NlbGYgY29udGV4dF07Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1
cm4gbmlsOwotCiAgICAgTlNVSW50ZWdlciBhcmd1bWVudENvdW50ID0gW2FyZ3VtZW50QXJyYXkg
Y291bnRdOwogICAgIEpTVmFsdWVSZWYgYXJndW1lbnRzW2FyZ3VtZW50Q291bnRdOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50OyArK2kpCi0gICAgICAgIGFyZ3Vt
ZW50c1tpXSA9IG9iamVjdFRvVmFsdWUoY29udGV4dCwgW2FyZ3VtZW50QXJyYXkgb2JqZWN0QXRJ
bmRleDppXSk7CisgICAgICAgIGFyZ3VtZW50c1tpXSA9IG9iamVjdFRvVmFsdWUoX2NvbnRleHQs
IFthcmd1bWVudEFycmF5IG9iamVjdEF0SW5kZXg6aV0pOwogCiAgICAgSlNWYWx1ZVJlZiBleGNl
cHRpb24gPSAwOwotICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChjb250
ZXh0SW50ZXJuYWxDb250ZXh0KGNvbnRleHQpLCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsKKyAgICBK
U09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dEludGVybmFsQ29udGV4
dChfY29udGV4dCksIG1fdmFsdWUsICZleGNlcHRpb24pOwogICAgIGlmIChleGNlcHRpb24pCi0g
ICAgICAgIHJldHVybiBbY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9u
XTsKKyAgICAgICAgcmV0dXJuIFtfY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNlcHRpb246ZXhj
ZXB0aW9uXTsKIAotICAgIEpTT2JqZWN0UmVmIHJlc3VsdCA9IEpTT2JqZWN0Q2FsbEFzQ29uc3Ry
dWN0b3IoY29udGV4dEludGVybmFsQ29udGV4dChjb250ZXh0KSwgb2JqZWN0LCBhcmd1bWVudENv
dW50LCBhcmd1bWVudHMsICZleGNlcHRpb24pOworICAgIEpTT2JqZWN0UmVmIHJlc3VsdCA9IEpT
T2JqZWN0Q2FsbEFzQ29uc3RydWN0b3IoY29udGV4dEludGVybmFsQ29udGV4dChfY29udGV4dCks
IG9iamVjdCwgYXJndW1lbnRDb3VudCwgYXJndW1lbnRzLCAmZXhjZXB0aW9uKTsKICAgICBpZiAo
ZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gW2NvbnRleHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0
aW9uOmV4Y2VwdGlvbl07CisgICAgICAgIHJldHVybiBbX2NvbnRleHQgdmFsdWVGcm9tTm90aWZ5
RXhjZXB0aW9uOmV4Y2VwdGlvbl07CiAKLSAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoVmFs
dWU6cmVzdWx0IGluQ29udGV4dDpjb250ZXh0XTsKKyAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVX
aXRoVmFsdWU6cmVzdWx0IGluQ29udGV4dDpfY29udGV4dF07CiB9CiAKIC0gKEpTVmFsdWUgKilp
bnZva2VNZXRob2Q6KE5TU3RyaW5nICopbWV0aG9kIHdpdGhBcmd1bWVudHM6KE5TQXJyYXkgKilh
cmd1bWVudHMKIHsKLSAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbc2VsZiBjb250ZXh0XTsKLSAg
ICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KICAgICBOU1VJbnRlZ2VyIGFy
Z3VtZW50Q291bnQgPSBbYXJndW1lbnRzIGNvdW50XTsKICAgICBKU1ZhbHVlUmVmIGFyZ3VtZW50
QXJyYXlbYXJndW1lbnRDb3VudF07CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFyZ3Vt
ZW50Q291bnQ7ICsraSkKLSAgICAgICAgYXJndW1lbnRBcnJheVtpXSA9IG9iamVjdFRvVmFsdWUo
Y29udGV4dCwgW2FyZ3VtZW50cyBvYmplY3RBdEluZGV4OmldKTsKKyAgICAgICAgYXJndW1lbnRB
cnJheVtpXSA9IG9iamVjdFRvVmFsdWUoX2NvbnRleHQsIFthcmd1bWVudHMgb2JqZWN0QXRJbmRl
eDppXSk7CiAKICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNPYmplY3RSZWYg
dGhpc09iamVjdCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0SW50ZXJuYWxDb250ZXh0KGNvbnRl
eHQpLCBtX3ZhbHVlLCAmZXhjZXB0aW9uKTsKKyAgICBKU09iamVjdFJlZiB0aGlzT2JqZWN0ID0g
SlNWYWx1ZVRvT2JqZWN0KGNvbnRleHRJbnRlcm5hbENvbnRleHQoX2NvbnRleHQpLCBtX3ZhbHVl
LCAmZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gW2NvbnRl
eHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CisgICAgICAgIHJldHVybiBb
X2NvbnRleHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CiAKICAgICBKU1N0
cmluZ1JlZiBuYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKW1l
dGhvZCk7Ci0gICAgSlNWYWx1ZVJlZiBmdW5jdGlvbiA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29u
dGV4dEludGVybmFsQ29udGV4dChjb250ZXh0KSwgdGhpc09iamVjdCwgbmFtZSwgJmV4Y2VwdGlv
bik7CisgICAgSlNWYWx1ZVJlZiBmdW5jdGlvbiA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4
dEludGVybmFsQ29udGV4dChfY29udGV4dCksIHRoaXNPYmplY3QsIG5hbWUsICZleGNlcHRpb24p
OwogICAgIEpTU3RyaW5nUmVsZWFzZShuYW1lKTsKICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAg
ICByZXR1cm4gW2NvbnRleHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07Cisg
ICAgICAgIHJldHVybiBbX2NvbnRleHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlv
bl07CiAKLSAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dElu
dGVybmFsQ29udGV4dChjb250ZXh0KSwgZnVuY3Rpb24sICZleGNlcHRpb24pOworICAgIEpTT2Jq
ZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0SW50ZXJuYWxDb250ZXh0KF9j
b250ZXh0KSwgZnVuY3Rpb24sICZleGNlcHRpb24pOwogICAgIGlmIChleGNlcHRpb24pCi0gICAg
ICAgIHJldHVybiBbY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0aW9uXTsK
KyAgICAgICAgcmV0dXJuIFtfY29udGV4dCB2YWx1ZUZyb21Ob3RpZnlFeGNlcHRpb246ZXhjZXB0
aW9uXTsKIAotICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gSlNPYmplY3RDYWxsQXNGdW5jdGlvbihj
b250ZXh0SW50ZXJuYWxDb250ZXh0KGNvbnRleHQpLCBvYmplY3QsIHRoaXNPYmplY3QsIGFyZ3Vt
ZW50Q291bnQsIGFyZ3VtZW50QXJyYXksICZleGNlcHRpb24pOworICAgIEpTVmFsdWVSZWYgcmVz
dWx0ID0gSlNPYmplY3RDYWxsQXNGdW5jdGlvbihjb250ZXh0SW50ZXJuYWxDb250ZXh0KF9jb250
ZXh0KSwgb2JqZWN0LCB0aGlzT2JqZWN0LCBhcmd1bWVudENvdW50LCBhcmd1bWVudEFycmF5LCAm
ZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gW2NvbnRleHQg
dmFsdWVGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CisgICAgICAgIHJldHVybiBbX2Nv
bnRleHQgdmFsdWVGcm9tTm90aWZ5RXhjZXB0aW9uOmV4Y2VwdGlvbl07CiAKLSAgICByZXR1cm4g
W0pTVmFsdWUgdmFsdWVXaXRoVmFsdWU6cmVzdWx0IGluQ29udGV4dDpjb250ZXh0XTsKLX0KLQot
LSAoSlNDb250ZXh0ICopY29udGV4dAotewotICAgIHJldHVybiBtX2NvbnRleHQ7CisgICAgcmV0
dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aFZhbHVlOnJlc3VsdCBpbkNvbnRleHQ6X2NvbnRleHRdOwog
fQogCiBAZW5kCkBAIC02MDEsMTQgKzUxMCwxMCBAQCArIChKU1ZhbHVlICopdmFsdWVXaXRoU2l6
ZTooQ0dTaXplKXNpemUgCiAKIC0gKEpTVmFsdWUgKilvYmplY3RGb3JLZXllZFN1YnNjcmlwdDoo
aWQpa2V5CiB7Ci0gICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW3NlbGYgY29udGV4dF07Ci0gICAg
aWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gbmlsOwotCiAgICAgaWYgKCFba2V5IGlzS2lu
ZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKLSAgICAgICAga2V5ID0gW1tKU1ZhbHVlIHZh
bHVlV2l0aE9iamVjdDprZXkgaW5Db250ZXh0OmNvbnRleHRdIHRvU3RyaW5nXTsKKyAgICAgICAg
a2V5ID0gW1tKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDprZXkgaW5Db250ZXh0Ol9jb250ZXh0XSB0
b1N0cmluZ107CiAgICAgICAgIGlmICgha2V5KQotICAgICAgICAgICAgcmV0dXJuIFtKU1ZhbHVl
IHZhbHVlV2l0aFVuZGVmaW5lZEluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgICAgIHJldHVy
biBbSlNWYWx1ZSB2YWx1ZVdpdGhVbmRlZmluZWRJbkNvbnRleHQ6X2NvbnRleHRdOwogICAgIH0K
IAogICAgIHJldHVybiBbc2VsZiB2YWx1ZUZvclByb3BlcnR5OihOU1N0cmluZyAqKWtleV07CkBA
IC02MjEsMTIgKzUyNiw4IEBAIC0gKEpTVmFsdWUgKilvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6
KE4KIAogLSAodm9pZClzZXRPYmplY3Q6KGlkKW9iamVjdCBmb3JLZXllZFN1YnNjcmlwdDooTlNP
YmplY3QgPE5TQ29weWluZz4gKilrZXkKIHsKLSAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbc2Vs
ZiBjb250ZXh0XTsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlm
ICghW2tleSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7Ci0gICAgICAgIGtleSA9
IFtbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6a2V5IGluQ29udGV4dDpjb250ZXh0XSB0b1N0cmlu
Z107CisgICAgICAgIGtleSA9IFtbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6a2V5IGluQ29udGV4
dDpfY29udGV4dF0gdG9TdHJpbmddOwogICAgICAgICBpZiAoIWtleSkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC0xMDUwLDkgKzk1MSw5IEBAIC0gKEpTVmFsdWUgKilpbml0V2l0aFZh
bHVlOihKU1ZhbHVlUmVmKXYKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIEFTU0VSVCh2YWx1
ZSk7Ci0gICAgbV9jb250ZXh0ID0gW2NvbnRleHQgcmV0YWluXTsKKyAgICBfY29udGV4dCA9IFtj
b250ZXh0IHJldGFpbl07CiAgICAgbV92YWx1ZSA9IHZhbHVlOwotICAgIEpTVmFsdWVQcm90ZWN0
KGNvbnRleHRJbnRlcm5hbENvbnRleHQobV9jb250ZXh0KSwgbV92YWx1ZSk7CisgICAgSlNWYWx1
ZVByb3RlY3QoY29udGV4dEludGVybmFsQ29udGV4dChfY29udGV4dCksIG1fdmFsdWUpOwogICAg
IHJldHVybiBzZWxmOwogfQogCkBAIC0xMTcwLDIxICsxMDcxLDE1IEBAICsgKFNFTClzZWxlY3Rv
ckZvclZhbHVlVG9TdHJ1Y3Q6KGNvbnN0IGMKIAogLSAodm9pZClkZWFsbG9jCiB7Ci0gICAgSlND
b250ZXh0ICpjb250ZXh0ID0gW3NlbGYgY29udGV4dF07Ci0gICAgaWYgKGNvbnRleHQpCi0gICAg
ICAgIEpTVmFsdWVVbnByb3RlY3QoY29udGV4dEludGVybmFsQ29udGV4dChjb250ZXh0KSwgbV92
YWx1ZSk7Ci0gICAgW21fY29udGV4dCByZWxlYXNlXTsKLSAgICBtX2NvbnRleHQgPSBuaWw7Cisg
ICAgSlNWYWx1ZVVucHJvdGVjdChjb250ZXh0SW50ZXJuYWxDb250ZXh0KF9jb250ZXh0KSwgbV92
YWx1ZSk7CisgICAgW19jb250ZXh0IHJlbGVhc2VdOworICAgIF9jb250ZXh0ID0gbmlsOwogICAg
IFtzdXBlciBkZWFsbG9jXTsKIH0KIAogLSAoTlNTdHJpbmcgKilkZXNjcmlwdGlvbgogewotICAg
IEpTQ29udGV4dCAqY29udGV4dCA9IFtzZWxmIGNvbnRleHRdOwotICAgIGlmICghY29udGV4dCkK
LSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIGlmIChpZCB3cmFwcGVkID0gdHJ5VW53cmFwT2Jq
Y09iamVjdChjb250ZXh0SW50ZXJuYWxDb250ZXh0KGNvbnRleHQpLCBtX3ZhbHVlKSkKKyAgICBp
ZiAoaWQgd3JhcHBlZCA9IHRyeVVud3JhcE9iamNPYmplY3QoY29udGV4dEludGVybmFsQ29udGV4
dChfY29udGV4dCksIG1fdmFsdWUpKQogICAgICAgICByZXR1cm4gW3dyYXBwZWQgZGVzY3JpcHRp
b25dOwogICAgIHJldHVybiBbc2VsZiB0b1N0cmluZ107CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>