<?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>109268</bug_id>
          
          <creation_ts>2013-02-08 00:23:45 -0800</creation_ts>
          <short_desc>[v8] isolate parameter added to all v8::peristent calls</short_desc>
          <delta_ts>2013-02-08 02:18:56 -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>New Bugs</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>0</everconfirmed>
          <reporter name="Dan Carney">dcarney</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>828274</commentid>
    <comment_count>0</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-02-08 00:23:45 -0800</bug_when>
    <thetext>[v8] isolate parameter added to all v8::peristent calls</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828276</commentid>
    <comment_count>1</comment_count>
      <attachid>187256</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-02-08 00:25:41 -0800</bug_when>
    <thetext>Created attachment 187256
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828279</commentid>
    <comment_count>2</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-02-08 00:26:54 -0800</bug_when>
    <thetext>forgot to rebase bindings tests. wiil do that before commit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828285</commentid>
    <comment_count>3</comment_count>
      <attachid>187256</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-08 00:34:11 -0800</bug_when>
    <thetext>Comment on attachment 187256
Patch

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

&gt; Source/WebCore/bindings/v8/NPV8Object.cpp:95
&gt; +    v8NpObject-&gt;v8Object.Dispose(v8::Isolate::GetCurrent());

Can we avoid calling Isolate::GetCurrent() by passing an Isolate around?

&gt; Source/WebCore/bindings/v8/NPV8Object.cpp:169
&gt; +    v8npObject-&gt;v8Object = v8::Persistent&lt;v8::Object&gt;::New(v8::Isolate::GetCurrent(), object);

Ditto.

&gt; Source/WebCore/bindings/v8/ScheduledAction.cpp:57
&gt; +    v8::Isolate* isolate = context-&gt;GetIsolate();

Nit: context =&gt; m_context (just for consistency)

&gt; Source/WebCore/bindings/v8/ScopedPersistent.h:46
&gt; +        : m_handle(v8::Persistent&lt;T&gt;::New(v8::Isolate::GetCurrent(), handle))

This would be OK.

&gt; Source/WebCore/bindings/v8/ScopedPersistent.h:60
&gt;      void set(v8::Handle&lt;T&gt; handle)

This should receive an Isolate. If call sites are too many, you can fix it in a follow-up patch (please just add FIXME).

&gt; Source/WebCore/bindings/v8/ScopedPersistent.h:77
&gt; +        m_handle.Dispose(v8::Isolate::GetCurrent());

Ditto.

&gt; Source/WebCore/bindings/v8/V8HiddenPropertyName.cpp:76
&gt; +    return v8::Persistent&lt;v8::String&gt;::New(v8::Isolate::GetCurrent(), v8::String::NewSymbol(key));

I think this can be fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828293</commentid>
    <comment_count>4</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-02-08 00:42:16 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 187256 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=187256&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/NPV8Object.cpp:95
&gt; &gt; +    v8NpObject-&gt;v8Object.Dispose(v8::Isolate::GetCurrent());
&gt; 
&gt; Can we avoid calling Isolate::GetCurrent() by passing an Isolate around?


I&apos;ll see if any of these are easily fixable now, but we are going to remove all instances of GetCurrent() in followup patches, so there is no need for 100s or FIXMEs throughout the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828295</commentid>
    <comment_count>5</comment_count>
      <attachid>187256</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-02-08 00:46:14 -0800</bug_when>
    <thetext>Comment on attachment 187256
Patch

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

&gt;&gt; Source/WebCore/bindings/v8/NPV8Object.cpp:95
&gt;&gt; +    v8NpObject-&gt;v8Object.Dispose(v8::Isolate::GetCurrent());
&gt; 
&gt; Can we avoid calling Isolate::GetCurrent() by passing an Isolate around?

All np stuff is on the main isolate. I&apos;m going to add a static variable for the main world isolate, which is why I don&apos;t want to pass parameters around here. Again, no need for zillions of fixmes here either</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828301</commentid>
    <comment_count>6</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-08 00:57:04 -0800</bug_when>
    <thetext>Understood. No FIXME is OK. But I&apos;m not quite happy with a lot of Isolate::GetCurrent()s with &quot;let&apos;s fix it later&quot;. Alternately, you can first land patches that pass an Isolate around so that you don&apos;t need to write Isolate::GetCurrent() too much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828317</commentid>
    <comment_count>7</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-02-08 01:16:12 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Understood. No FIXME is OK. But I&apos;m not quite happy with a lot of Isolate::GetCurrent()s with &quot;let&apos;s fix it later&quot;. Alternately, you can first land patches that pass an Isolate around so that you don&apos;t need to write Isolate::GetCurrent() too much.

We&apos;d prefer a mechanical replacement of all calls with a Isolate::GetCurrent() unless an isolate parameter is already available.  After all calls are replaced, then it will be easier to analyze which calls need an isolate parameter, and which classes need an isolate member added.  Doing it in stages might not be optimal and will slow down this work.  Adding Isolate::GetCurrent() adds no overhead, and we WILL remove all calls to GetCurrent() in the future, since it will no longer do what it used to do once the v8 api is changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828318</commentid>
    <comment_count>8</comment_count>
      <attachid>187256</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-02-08 01:17:23 -0800</bug_when>
    <thetext>Comment on attachment 187256
Patch

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

&gt;&gt; Source/WebCore/bindings/v8/ScopedPersistent.h:60
&gt;&gt;      void set(v8::Handle&lt;T&gt; handle)
&gt; 
&gt; This should receive an Isolate. If call sites are too many, you can fix it in a follow-up patch (please just add FIXME).

I checked. Too many calls site for this patch.

&gt;&gt; Source/WebCore/bindings/v8/V8HiddenPropertyName.cpp:76
&gt;&gt; +    return v8::Persistent&lt;v8::String&gt;::New(v8::Isolate::GetCurrent(), v8::String::NewSymbol(key));
&gt; 
&gt; I think this can be fixed.

Too many call sites for this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828320</commentid>
    <comment_count>9</comment_count>
      <attachid>187256</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-08 01:19:07 -0800</bug_when>
    <thetext>Comment on attachment 187256
Patch

Makes sense to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828321</commentid>
    <comment_count>10</comment_count>
      <attachid>187264</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-02-08 01:20:33 -0800</bug_when>
    <thetext>Created attachment 187264
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828322</commentid>
    <comment_count>11</comment_count>
      <attachid>187264</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-02-08 01:21:33 -0800</bug_when>
    <thetext>Comment on attachment 187264
Patch

addressed nit. added rebased bindings tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828355</commentid>
    <comment_count>12</comment_count>
      <attachid>187264</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-08 02:18:52 -0800</bug_when>
    <thetext>Comment on attachment 187264
Patch

Clearing flags on attachment: 187264

Committed r142250: &lt;http://trac.webkit.org/changeset/142250&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828356</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-08 02:18:56 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187256</attachid>
            <date>2013-02-08 00:25:41 -0800</date>
            <delta_ts>2013-02-08 01:20:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109268-20130208092215.patch</filename>
            <type>text/plain</type>
            <size>37916</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMjM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjE5M2Y0YzI0NTQxMWY5
N2I4ZDliMTAyYmVlOGUyNjE3ODFmNDFlOC4uMzZmYjJmMTQzNjY0MjBiZDg5NmU2M2NkNzNlYTJm
NDM0YTcxYjM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDEzLTAyLTA4ICBEYW4g
Q2FybmV5ICA8ZGNhcm5leUBnb29nbGUuY29tPgorCisgICAgICAgIFt2OF0gaXNvbGF0ZSBwYXJh
bWV0ZXIgYWRkZWQgdG8gYWxsIHY4OjpwZXJpc3RlbnQgY2FsbHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTI2OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8gY2hhbmdlIGlu
IGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlRG9tYWluU2FmZUZ1bmN0aW9uR2V0dGVyKToKKyAg
ICAgICAgKEdlbmVyYXRlTmFtZWRDb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKEdlbmVy
YXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTVdyYXBwZXJNYXAu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJNYXA6OmNsZWFyKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNvbGF0
ZWRXb3JsZFdlYWtDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6
Om1ha2VDb250ZXh0V2Vhayk6CisgICAgICAgICogYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpmcmVlVjhOUE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpu
cENyZWF0ZVY4U2NyaXB0T2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY2hlZHVsZWRB
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9uOjpTY2hlZHVsZWRB
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9uOjp+U2NoZWR1bGVkQWN0
aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY29wZWRQZXJzaXN0ZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTY29wZWRQZXJzaXN0ZW50OjpTY29wZWRQZXJzaXN0ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjb3BlZFBlcnNpc3RlbnQ6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTY29w
ZWRQZXJzaXN0ZW50OjpjbGVhcik6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0V3JhcHBh
YmxlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRXcmFwcGFibGU6OnNldFdyYXBwZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0V3JhcHBhYmxlOjpkaXNwb3NlV3JhcHBlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRXcmFwcGFibGU6OndlYWtDYWxsYmFjayk6CisgICAgICAgICog
YmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJhd1Rl
bXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmdjVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEdDQ29udHJvbGxlcjo6
Z2NQcm9sb2d1ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEdDQ29udHJvbGxlcjo6bWlub3JHQ1By
b2xvZ3VlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5oOgorICAgICAg
ICAoVjhHQ0NvbnRyb2xsZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVy
dHlOYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SGlkZGVuUHJvcGVydHlOYW1lOjpjcmVh
dGVTdHJpbmcpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VjhMYXp5RXZlbnRMaXN0ZW5lcjo6cHJlcGFyZUxpc3RlbmVy
T2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4TlBUZW1wbGF0ZU1hcDo6ZGlzcG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpu
cE9iamVjdEdldFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVY4T2JqZWN0Rm9y
TlBPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UGVyQ29udGV4dERhdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VjhQZXJDb250ZXh0RGF0YTo6ZGlzcG9zZSk6CisgICAgICAgIChX
ZWJDb3JlOjpWOFBlckNvbnRleHREYXRhOjpjcmVhdGVXcmFwcGVyRnJvbUNhY2hlU2xvd0Nhc2Up
OgorICAgICAgICAoV2ViQ29yZTo6VjhQZXJDb250ZXh0RGF0YTo6Y29uc3RydWN0b3JGb3JUeXBl
U2xvd0Nhc2UpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4VmFsdWVDYWNoZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjptYWtlRXh0ZXJuYWxTdHJpbmcpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1dyYXBwZXJUeXBlSW5mby5oOgorICAgICAgICAoV2ViQ29yZTo6V3JhcHBlckNvbmZpZ3VyYXRp
b246OmNvbmZpZ3VyZVdyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxEb2N1bWVudDo6
d3JhcEluU2hhZG93T2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
SW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MSW1h
Z2VFbGVtZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2Vha1JlZmVyZW5jZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUluamVjdGVk
U2NyaXB0SG9zdFY4V3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9j
YXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6cmVsb2FkQWNj
ZXNzb3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6cmVwbGFjZUFjY2Vz
c29yR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TG9jYXRpb246OmFzc2lnbkFjY2Vzc29y
R2V0dGVyKToKKwogMjAxMy0wMi0wNyAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBzaG91bGQgbm90IHJldHVybiBhIG5v
bi1mb2N1c2FibGUgZWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA3YjAzNzNk
OGMzOGY0N2FiNzlkNWViZWMxMDE2MGMwNWY4MjgwZjQwLi4wZGI1MTNhOTk5MDFkZWMxMGJmNjY5
NWZjMTQwYWE1MTA1YjExNTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyIEBACisyMDEzLTAyLTA4ICBEYW4gQ2FybmV5ICA8ZGNhcm5leUBnb29nbGUuY29tPgorCisg
ICAgICAgIFt2OF0gaXNvbGF0ZSBwYXJhbWV0ZXIgYWRkZWQgdG8gYWxsIHY4OjpwZXJpc3RlbnQg
Y2FsbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
OTI2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
dGVzdHMvV2ViRnJhbWVUZXN0LmNwcDoKKwogMjAxMy0wMi0wNyAgS2VudCBUYW11cmEgIDx0a2Vu
dEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtLUFuZHJvaWRdIERpc2FibGUgaW5w
dXRbdHlwZT1kYXRldGltZV0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggY2YyNGE2YWU4ZjcxYTQ4MzI5ZjBlMWYzZDU1OGI2
YjE5YWE2MmRjNC4uYWY2OTkzNDk4ZDgyMDg0MWNkYTA1MTZlOTI3YzliMWJmYmM4MDQzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgu
cG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgu
cG0KQEAgLTc5OCw3ICs3OTgsNyBAQCBzdWIgR2VuZXJhdGVEb21haW5TYWZlRnVuY3Rpb25HZXR0
ZXIKICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CiBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+ICR7ZnVuY05hbWV9QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBzdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KCRuZXdUZW1wbGF0ZVN0cmluZyk7Cisg
ICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVt
cGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyhpbmZvLkdl
dElzb2xhdGUoKSwgJG5ld1RlbXBsYXRlU3RyaW5nKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKCR7
djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCkpKTsKICAgICBp
ZiAoaG9sZGVyLklzRW1wdHkoKSkgewogICAgICAgICAvLyBjYW4gb25seSByZWFjaCBoZXJlIGJ5
ICdvYmplY3QuX19wcm90b19fLmZ1bmMnLCBhbmQgaXQgc2hvdWxkIHBhc3NlZApAQCAtODA3LDcg
KzgwNyw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtmdW5jTmFtZX1BdHRyR2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjCiAgICAgfQogICAgICR7aW50ZXJmYWNl
TmFtZX0qIGltcCA9ICR7djhJbnRlcmZhY2VOYW1lfTo6dG9OYXRpdmUoaG9sZGVyKTsKICAgICBp
ZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEJpbmRpbmdTdGF0
ZTo6aW5zdGFuY2UoKSwgaW1wLT5mcmFtZSgpLCBEb05vdFJlcG9ydFNlY3VyaXR5RXJyb3IpKSB7
Ci0gICAgICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc2hh
cmVkVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldygk
bmV3VGVtcGxhdGVTdHJpbmcpOworICAgICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+OjpOZXcoaW5mby5HZXRJc29sYXRlKCksICRuZXdUZW1wbGF0ZVN0cmluZyk7
CiAgICAgICAgIHJldHVybiBzaGFyZWRUZW1wbGF0ZS0+R2V0RnVuY3Rpb24oKTsKICAgICB9CiAK
QEAgLTIyMDcsNyArMjIwNyw3IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiAke3Y4SW50ZXJmYWNlTmFtZX1Db25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUoCiAgICAgcmVzdWx0
LT5TZXRDbGFzc05hbWUodjg6OlN0cmluZzo6TmV3U3ltYm9sKCIke2ludGVyZmFjZU5hbWV9Iikp
OwogICAgIHJlc3VsdC0+SW5oZXJpdCgke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKGlz
b2xhdGUpKTsKIAotICAgIGNhY2hlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+OjpOZXcocmVzdWx0KTsKKyAgICBjYWNoZWRUZW1wbGF0ZSA9IHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KGlzb2xhdGUsIHJlc3VsdCk7CiAgICAg
cmV0dXJuIGNhY2hlZFRlbXBsYXRlOwogfQogCkBAIC0zMTA0LDcgKzMxMDQsNyBAQCB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHt2OEludGVyZmFjZU5hbWV9OjpHZXRSYXdU
ZW1wbGF0ZSh2ODo6SXNvbAogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4
OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gdGVtcGwgPSBjcmVhdGVSYXdUZW1wbGF0ZSgpOworICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9IGNyZWF0ZVJhd1RlbXBsYXRlKGlzb2xh
dGUpOwogICAgIGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAg
cmV0dXJuIHRlbXBsOwogfQpAQCAtMzIyMiw3ICszMjIyLDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6
Ok9iamVjdFRlbXBsYXRlPiBWOERPTVdpbmRvdzo6R2V0U2hhZG93T2JqZWN0VGVtcGxhdGUodjg6
Oklzb2wKIHsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdFRlbXBsYXRlPiBW
OERPTVdpbmRvd1NoYWRvd09iamVjdENhY2hlOwogICAgIGlmIChWOERPTVdpbmRvd1NoYWRvd09i
amVjdENhY2hlLklzRW1wdHkoKSkgewotICAgICAgICBWOERPTVdpbmRvd1NoYWRvd09iamVjdENh
Y2hlID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdFRlbXBsYXRlPjo6TmV3KHY4OjpPYmplY3RU
ZW1wbGF0ZTo6TmV3KCkpOworICAgICAgICBWOERPTVdpbmRvd1NoYWRvd09iamVjdENhY2hlID0g
djg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdFRlbXBsYXRlPjo6TmV3KGlzb2xhdGUsIHY4OjpPYmpl
Y3RUZW1wbGF0ZTo6TmV3KCkpOwogICAgICAgICBDb25maWd1cmVTaGFkb3dPYmplY3RUZW1wbGF0
ZShWOERPTVdpbmRvd1NoYWRvd09iamVjdENhY2hlLCBpc29sYXRlKTsKICAgICB9CiAgICAgcmV0
dXJuIFY4RE9NV2luZG93U2hhZG93T2JqZWN0Q2FjaGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9ET01XcmFwcGVyTWFwLmgKaW5kZXggYWYwZjg5NjcyNzZkZTNkYmQwZDQyYzE0MWJlOTEw
MGQwMThjMmZiNy4uZjk4Y2QzNmU1Y2ZhZjViNWIxYTY3YWEzMGQ5NWNkNTBjZDVjZjUxMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlck1hcC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJNYXAuaApAQCAtNzAsNyArNzAs
NyBAQCBwdWJsaWM6CiAgICAgICAgIGZvciAodHlwZW5hbWUgTWFwVHlwZTo6aXRlcmF0b3IgaXQg
PSBtX21hcC5iZWdpbigpOyBpdCAhPSBtX21hcC5lbmQoKTsgKytpdCkgewogICAgICAgICAgICAg
djg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlciA9IGl0LT52YWx1ZTsKICAgICAgICAg
ICAgIHRvV3JhcHBlclR5cGVJbmZvKHdyYXBwZXIpLT5kZXJlZk9iamVjdChpdC0+a2V5KTsKLSAg
ICAgICAgICAgIHdyYXBwZXIuRGlzcG9zZSgpOworICAgICAgICAgICAgd3JhcHBlci5EaXNwb3Nl
KG1faXNvbGF0ZSk7CiAgICAgICAgICAgICB3cmFwcGVyLkNsZWFyKCk7CiAgICAgICAgIH0KICAg
ICAgICAgbV9tYXAuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0RPTVdyYXBwZXJXb3JsZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01X
cmFwcGVyV29ybGQuY3BwCmluZGV4IDNhZTcxZDRkOTBhOGQ4NGUxMWFlYTNhYTc2ZDU0OWNlODBm
ZGRhMTIuLjZjNzQ0MTNjOGZlZDFkNTI0ZTUxYjNhMWNmMmRlMTcxMmEzZTRhNmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNwcApAQCAtNzUsNyAr
NzUsNyBAQCB2b2lkIERPTVdyYXBwZXJXb3JsZDo6YXNzZXJ0Q29udGV4dEhhc0NvcnJlY3RQcm90
b3R5cGUodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gYwogCiBzdGF0aWMgdm9pZCBpc29sYXRlZFdv
cmxkV2Vha0NhbGxiYWNrKHY4OjpJc29sYXRlKiBpc29sYXRlLCB2ODo6UGVyc2lzdGVudDx2ODo6
VmFsdWU+IG9iamVjdCwgdm9pZCogcGFyYW1ldGVyKQogewotICAgIG9iamVjdC5EaXNwb3NlKCk7
CisgICAgb2JqZWN0LkRpc3Bvc2UoaXNvbGF0ZSk7CiAgICAgb2JqZWN0LkNsZWFyKCk7CiAgICAg
c3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4ocGFyYW1ldGVyKS0+ZGVyZWYoKTsKIH0KQEAg
LTg0LDcgKzg0LDggQEAgdm9pZCBET01XcmFwcGVyV29ybGQ6Om1ha2VDb250ZXh0V2Vhayh2ODo6
SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQogewogICAgIEFTU0VSVChpc0lzb2xhdGVkV29y
bGQoKSk7CiAgICAgQVNTRVJUKGlzb2xhdGVkKGNvbnRleHQpID09IHRoaXMpOwotICAgIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpDb250ZXh0Pjo6TmV3KGNvbnRleHQpLk1ha2VXZWFrKGNvbnRleHQtPkdl
dElzb2xhdGUoKSwgdGhpcywgaXNvbGF0ZWRXb3JsZFdlYWtDYWxsYmFjayk7CisgICAgdjg6Oklz
b2xhdGUqIGlzb2xhdGUgPSBjb250ZXh0LT5HZXRJc29sYXRlKCk7CisgICAgdjg6OlBlcnNpc3Rl
bnQ8djg6OkNvbnRleHQ+OjpOZXcoaXNvbGF0ZSwgY29udGV4dCkuTWFrZVdlYWsoaXNvbGF0ZSwg
dGhpcywgaXNvbGF0ZWRXb3JsZFdlYWtDYWxsYmFjayk7CiAgICAgLy8gTWF0Y2hpbmcgZGVyZWYg
aXMgaW4gd2VhayBjYWxsYmFjay4KICAgICB0aGlzLT5yZWYoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAKaW5kZXggZWI4MTE0NDRhODEzNGFhZTUyM2Y5NTU2
NTBmNjQ1YTU3OTNjY2EzNC4uNWE4NmY2NGIxN2NjZDM2NmJmN2FmY2Q3MDgyNGU3MWNiZTVhZGFm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAKQEAgLTkyLDcg
KzkyLDcgQEAgc3RhdGljIHZvaWQgZnJlZVY4TlBPYmplY3QoTlBPYmplY3QqIG5wT2JqZWN0KQog
ICAgICAgICAgICAgICAgIHY4TlBPYmplY3RNYXAtPnJlbW92ZSh2OE9iamVjdEhhc2gpOwogICAg
ICAgICB9CiAgICAgfQotICAgIHY4TnBPYmplY3QtPnY4T2JqZWN0LkRpc3Bvc2UoKTsKKyAgICB2
OE5wT2JqZWN0LT52OE9iamVjdC5EaXNwb3NlKHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCkpOwog
ICAgIHY4TnBPYmplY3QtPnY4T2JqZWN0LkNsZWFyKCk7CiAgICAgZnJlZSh2OE5wT2JqZWN0KTsK
IH0KQEAgLTE2Niw3ICsxNjYsNyBAQCBOUE9iamVjdCogbnBDcmVhdGVWOFNjcmlwdE9iamVjdChO
UFAgbnBwLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCwgRE9NV2luZAogICAgICAgICBv
YmplY3RWZWN0b3IgPSAmaXRlci0+dmFsdWU7CiAgICAgfQogICAgIFY4TlBPYmplY3QqIHY4bnBP
YmplY3QgPSByZWludGVycHJldF9jYXN0PFY4TlBPYmplY3QqPihfTlBOX0NyZWF0ZU9iamVjdChu
cHAsICZWOE5QT2JqZWN0Q2xhc3MpKTsKLSAgICB2OG5wT2JqZWN0LT52OE9iamVjdCA9IHY4OjpQ
ZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcob2JqZWN0KTsKKyAgICB2OG5wT2JqZWN0LT52OE9i
amVjdCA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcodjg6Oklzb2xhdGU6OkdldEN1
cnJlbnQoKSwgb2JqZWN0KTsKICAgICB2OG5wT2JqZWN0LT5yb290T2JqZWN0ID0gcm9vdDsKIAog
ICAgIGlmIChvYmplY3RWZWN0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY2hlZHVsZWRBY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2No
ZWR1bGVkQWN0aW9uLmNwcAppbmRleCA0MjcxZjllZTY1YjY2MDRlNjI5ZTQ3Mjc4YWU1OTA5MjNh
N2MwNjg4Li43NTBkNTE1NjU5YjAyMTQ2OTQyZTU3ZDI1MThmYTAyNzgxMTZlNGFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY2hlZHVsZWRBY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjaGVkdWxlZEFjdGlvbi5jcHAKQEAgLTU0LDE1
ICs1NCwxNiBAQCBTY2hlZHVsZWRBY3Rpb246OlNjaGVkdWxlZEFjdGlvbih2ODo6SGFuZGxlPHY4
OjpDb250ZXh0PiBjb250ZXh0LCB2ODo6SGFuZGxlPHY4OgogICAgICwgbV9mdW5jdGlvbihmdW5j
dGlvbikKICAgICAsIG1fY29kZShTdHJpbmcoKSwgS1VSTCgpLCBUZXh0UG9zaXRpb246OmJlbG93
UmFuZ2VQb3NpdGlvbigpKQogeworICAgIHY4OjpJc29sYXRlKiBpc29sYXRlID0gY29udGV4dC0+
R2V0SXNvbGF0ZSgpOwogICAgIG1fYXJncy5yZXNlcnZlQ2FwYWNpdHkoYXJnYyk7CiAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBhcmdjOyArK2kpCi0gICAgICAgIG1fYXJncy5hcHBlbmQodjg6OlBl
cnNpc3RlbnQ8djg6OlZhbHVlPjo6TmV3KGFyZ3ZbaV0pKTsKKyAgICAgICAgbV9hcmdzLmFwcGVu
ZCh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+OjpOZXcoaXNvbGF0ZSwgYXJndltpXSkpOwogfQog
CiBTY2hlZHVsZWRBY3Rpb246On5TY2hlZHVsZWRBY3Rpb24oKQogewogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9hcmdzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIG1fYXJnc1tpXS5EaXNw
b3NlKCk7CisgICAgICAgIG1fYXJnc1tpXS5EaXNwb3NlKG1fY29udGV4dC0+R2V0SXNvbGF0ZSgp
KTsKICAgICAgICAgbV9hcmdzW2ldLkNsZWFyKCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NvcGVkUGVyc2lzdGVudC5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NvcGVkUGVyc2lzdGVudC5oCmluZGV4IGZjY2Y0YWE1OWI4ODljOWUy
MTY2NjkxOGJlNjRmZjY2ZGUwNWUxNDEuLjE3NjEwMzZhMjMzYWZiN2IzNmEwY2RjYmMzOWM5OGUz
YzY0NzkyNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njb3BlZFBl
cnNpc3RlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY29wZWRQZXJzaXN0
ZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIFNjb3BlZFBlcnNpc3RlbnQoKSB7
IH0KIAogICAgIGV4cGxpY2l0IFNjb3BlZFBlcnNpc3RlbnQodjg6OkhhbmRsZTxUPiBoYW5kbGUp
Ci0gICAgICAgIDogbV9oYW5kbGUodjg6OlBlcnNpc3RlbnQ8VD46Ok5ldyhoYW5kbGUpKQorICAg
ICAgICA6IG1faGFuZGxlKHY4OjpQZXJzaXN0ZW50PFQ+OjpOZXcodjg6Oklzb2xhdGU6OkdldEN1
cnJlbnQoKSwgaGFuZGxlKSkKICAgICB7CiAgICAgfQogCkBAIC02MCw3ICs2MCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldCh2ODo6SGFuZGxlPFQ+IGhhbmRsZSkKICAgICB7CiAgICAgICAgIGNs
ZWFyKCk7Ci0gICAgICAgIG1faGFuZGxlID0gdjg6OlBlcnNpc3RlbnQ8VD46Ok5ldyhoYW5kbGUp
OworICAgICAgICBtX2hhbmRsZSA9IHY4OjpQZXJzaXN0ZW50PFQ+OjpOZXcodjg6Oklzb2xhdGU6
OkdldEN1cnJlbnQoKSwgaGFuZGxlKTsKICAgICB9CiAKICAgICB2b2lkIGFkb3B0KHY4OjpQZXJz
aXN0ZW50PFQ+IGhhbmRsZSkKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgaWYgKG1faGFuZGxlLklzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
bV9oYW5kbGUuRGlzcG9zZSgpOworICAgICAgICBtX2hhbmRsZS5EaXNwb3NlKHY4OjpJc29sYXRl
OjpHZXRDdXJyZW50KCkpOwogICAgICAgICBtX2hhbmRsZS5DbGVhcigpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0V3JhcHBhYmxlLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRXcmFwcGFibGUuaAppbmRleCAxNmJjNzhh
OTQ0YzcxMjI4MDU5NTNjMDhjMGVjYjk2YjBkMGVlZjI0Li5jMzhiOGMyNmM5OGUyOWM2MmZjOTcy
MzY4ZTUwMjYxY2YyMWY4MzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHRXcmFwcGFibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHRXcmFwcGFibGUuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXcmFw
cGVyKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUs
IGNvbnN0IFdyYXBwZXJDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKG1fbWFza2VkV3JhcHBlci5Jc0VtcHR5KCkpOwotICAgICAgICB2ODo6UGVyc2lz
dGVudDx2ODo6T2JqZWN0PiBwZXJzaXN0ZW50ID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46
Ok5ldyh3cmFwcGVyKTsKKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gcGVyc2lz
dGVudCA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcoaXNvbGF0ZSwgd3JhcHBlcik7
CiAgICAgICAgIGNvbmZpZ3VyYXRpb24uY29uZmlndXJlV3JhcHBlcihwZXJzaXN0ZW50LCBpc29s
YXRlKTsKICAgICAgICAgcGVyc2lzdGVudC5NYWtlV2Vhayhpc29sYXRlLCB0aGlzLCB3ZWFrQ2Fs
bGJhY2spOwogICAgICAgICBtX21hc2tlZFdyYXBwZXIgPSBtYXNrT3JVbm1hc2tQb2ludGVyKCpw
ZXJzaXN0ZW50KTsKQEAgLTYyLDExICs2MiwxMSBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRl
OgotICAgIGlubGluZSB2b2lkIGRpc3Bvc2VXcmFwcGVyKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1
ZT4gdmFsdWUpCisgICAgaW5saW5lIHZvaWQgZGlzcG9zZVdyYXBwZXIodjg6OlBlcnNpc3RlbnQ8
djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiAgICAgewogICAgICAgICBB
U1NFUlQoIW1fbWFza2VkV3JhcHBlci5Jc0VtcHR5KCkpOwogICAgICAgICBBU1NFUlQoKnZhbHVl
ID09IG1hc2tPclVubWFza1BvaW50ZXIoKm1fbWFza2VkV3JhcHBlcikpOwotICAgICAgICB2YWx1
ZS5EaXNwb3NlKCk7CisgICAgICAgIHZhbHVlLkRpc3Bvc2UoaXNvbGF0ZSk7CiAgICAgICAgIG1f
bWFza2VkV3JhcHBlci5DbGVhcigpOwogICAgIH0KIApAQCAtODUsNyArODUsNyBAQCBwcml2YXRl
OgogICAgICAgICBBU1NFUlQodmFsdWUtPklzT2JqZWN0KCkpOwogICAgICAgICB2ODo6UGVyc2lz
dGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46OkNh
c3QodmFsdWUpOwogICAgICAgICBBU1NFUlQoa2V5LT53cmFwcGVyKCkgPT0gd3JhcHBlcik7Ci0g
ICAgICAgIGtleS0+ZGlzcG9zZVdyYXBwZXIodmFsdWUpOworICAgICAgICBrZXktPmRpc3Bvc2VX
cmFwcGVyKHZhbHVlLCBpc29sYXRlKTsKIAogICAgICAgICAvLyBOb3RlOiB8b2JqZWN0fCBtaWdo
dCBub3QgYmUgZXF1YWwgdG8gfGtleXwsIGUuZy4sIGlmIFNjcmlwdFdyYXBwYWJsZSBpc24ndCBh
IGxlZnQtbW9zdCBiYXNlIGNsYXNzLgogICAgICAgICB2b2lkKiBvYmplY3QgPSB0b05hdGl2ZSh3
cmFwcGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGlu
Zy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCmluZGV4IDEx
ZTMyYjQyZGE3ODU5Y2RkMzQyMmEyMjE1NDU3NzBmOTcxYTI3ZDQuLmRlN2MxODI1NzNiZDEyYTVk
N2Y5ODY5OTYyNWY2YzFjOGQ2ZWI3YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4QmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhC
aW5kaW5nLmNwcApAQCAtMTc0LDExICsxNzQsMTEgQEAgdWludDMyX3QgdG9VSW50MzIodjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBib29sJiBvaykKICAgICByZXR1cm4gdWludFZhbHVlLT5W
YWx1ZSgpOwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY3JlYXRl
UmF3VGVtcGxhdGUoKQordjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNyZWF0
ZVJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIHY4OjpIYW5kbGVTY29w
ZSBzY29wZTsKICAgICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHJlc3VsdCA9IHY4
OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhPYmplY3RDb25zdHJ1Y3Rvcjo6aXNWYWxpZENvbnN0
cnVjdG9yTW9kZSk7Ci0gICAgcmV0dXJuIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPjo6TmV3KHJlc3VsdCk7CisgICAgcmV0dXJuIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPjo6TmV3KGlzb2xhdGUsIHJlc3VsdCk7CiB9ICAgICAgICAKIAogUGFzc1JlZlB0
cjxET01TdHJpbmdMaXN0PiB0b0RPTVN0cmluZ0xpc3Qodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZh
bHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4QmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5k
aW5nLmgKaW5kZXggMTdlZmFhMjU1NDgwMTdhNmJmY2EyODZjNmIzN2ZkMTQxZmNjMmM4YS4uMzJm
N2MyMWE0MGJhMzZlMmMzZWY2MTFiMDYyYzBmNjVhZTU4OGE2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhCaW5kaW5nLmgKQEAgLTQyMSw3ICs0MjEsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHJldHVybiBpc2Zpbml0ZSh2YWx1ZSkgPyB2ODo6RGF0ZTo6TmV3KHZhbHVl
KSA6IHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKICAgICB9CiAKLSAgICB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY3JlYXRlUmF3VGVtcGxhdGUoKTsKKyAgICB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY3JlYXRlUmF3VGVtcGxhdGUodjg6Oklzb2xh
dGUqKTsKIAogICAgIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gdG9ET01TdHJpbmdMaXN0KHY4
OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKICAgICBQYXNzUmVmUHRyPFhQYXRo
TlNSZXNvbHZlcj4gdG9YUGF0aE5TUmVzb2x2ZXIodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6
SXNvbGF0ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0Nv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIu
Y3BwCmluZGV4IDI4MmM0MTA3YjViMzM5OTBiN2RkMWVlMTkxYzgyYWZkYWNhZGYxNWUuLjUxY2I0
ZThhZjM0MzNiNzZjNDUwY2U3ZjM3YzU1MDg4NmM1ZTkwM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCBwdWJs
aWM6CiAKICAgICAgICAgQVNTRVJUKFY4RE9NV3JhcHBlcjo6bWF5YmVET01XcmFwcGVyKHZhbHVl
KSk7CiAKLSAgICAgICAgaWYgKHZhbHVlLklzSW5kZXBlbmRlbnQoKSkKKyAgICAgICAgaWYgKHZh
bHVlLklzSW5kZXBlbmRlbnQobV9pc29sYXRlKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICBXcmFwcGVyVHlwZUluZm8qIHR5cGUgPSB0b1dyYXBwZXJUeXBlSW5mbyh3cmFwcGVyKTsK
QEAgLTIyMyw3ICsyMjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChjbGFzc0lkID09IHY4RE9N
Tm9kZUNsYXNzSWQpIHsKICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShtX2lzb2xhdGUpOwogICAg
ICAgICAgICAgQVNTRVJUKFY4Tm9kZTo6SGFzSW5zdGFuY2Uod3JhcHBlciwgbV9pc29sYXRlKSk7
Ci0gICAgICAgICAgICBBU1NFUlQoIXdyYXBwZXIuSXNJbmRlcGVuZGVudCgpKTsKKyAgICAgICAg
ICAgIEFTU0VSVCghd3JhcHBlci5Jc0luZGVwZW5kZW50KG1faXNvbGF0ZSkpOwogCiAgICAgICAg
ICAgICBOb2RlKiBub2RlID0gc3RhdGljX2Nhc3Q8Tm9kZSo+KG9iamVjdCk7CiAKQEAgLTI1NCw3
ICsyNTQsNyBAQCBwcml2YXRlOgogLy8gbV9lZGVuTm9kZXMgc3RvcmVzIG5vZGVzIHRoYXQgaGF2
ZSB3cmFwcGVycyB0aGF0IGhhdmUgYmVlbiBjcmVhdGVkIHNpbmNlIHRoZSBsYXN0IG1pbm9yL21h
am9yIEdDLgogVmVjdG9yPE5vZGUqPiogVjhHQ0NvbnRyb2xsZXI6Om1fZWRlbk5vZGVzID0gMDsK
IAotc3RhdGljIHZvaWQgZ2NUcmVlKE5vZGUqIHN0YXJ0Tm9kZSkKK3N0YXRpYyB2b2lkIGdjVHJl
ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgTm9kZSogc3RhcnROb2RlKQogewogICAgIFZlY3Rvcjx2
ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+LCBpbml0aWFsTm9kZVZlY3RvclNpemU+IG5ld1NwYWNl
V3JhcHBlcnM7CiAKQEAgLTI5OSw3ICsyOTksNyBAQCBzdGF0aWMgdm9pZCBnY1RyZWUoTm9kZSog
c3RhcnROb2RlKQogICAgIC8vIHN0b3JlZCBpbiBuZXdTcGFjZVdyYXBwZXJzIGFuZCBhcmUgZXhw
ZWN0ZWQgdG8gZXhpc3QgaW4gdGhlIG5ldyBzcGFjZSBvZiBWOC4KICAgICAvLyBXZSByZXBvcnQg
dGhvc2Ugd3JhcHBlcnMgdG8gVjggYXMgYW4gb2JqZWN0IGdyb3VwLgogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbmV3U3BhY2VXcmFwcGVycy5zaXplKCk7IGkrKykKLSAgICAgICAgbmV3U3Bh
Y2VXcmFwcGVyc1tpXS5NYXJrUGFydGlhbGx5RGVwZW5kZW50KCk7CisgICAgICAgIG5ld1NwYWNl
V3JhcHBlcnNbaV0uTWFya1BhcnRpYWxseURlcGVuZGVudChpc29sYXRlKTsKICAgICBpZiAobmV3
U3BhY2VXcmFwcGVycy5zaXplKCkgPiAwKQogICAgICAgICB2ODo6Vjg6OkFkZE9iamVjdEdyb3Vw
KCZuZXdTcGFjZVdyYXBwZXJzWzBdLCBuZXdTcGFjZVdyYXBwZXJzLnNpemUoKSk7CiB9CkBAIC0z
MjYsOCArMzI2LDEwIEBAIHZvaWQgVjhHQ0NvbnRyb2xsZXI6OmRpZENyZWF0ZVdyYXBwZXJGb3JO
b2RlKE5vZGUqIG5vZGUpCiAKIHZvaWQgVjhHQ0NvbnRyb2xsZXI6OmdjUHJvbG9ndWUodjg6OkdD
VHlwZSB0eXBlLCB2ODo6R0NDYWxsYmFja0ZsYWdzIGZsYWdzKQogeworICAgIC8vIEl0IHdvdWxk
IGJlIG5pY2UgaWYgdGhlIEdDIGNhbGxiYWNrcyBwYXNzZWQgdGhlIElzb2xhdGUgZGlyZWN0bHku
Li4uCisgICAgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSB2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgp
OwogICAgIGlmICh0eXBlID09IHY4OjprR0NUeXBlU2NhdmVuZ2UpCi0gICAgICAgIG1pbm9yR0NQ
cm9sb2d1ZSgpOworICAgICAgICBtaW5vckdDUHJvbG9ndWUoaXNvbGF0ZSk7CiAgICAgZWxzZSBp
ZiAodHlwZSA9PSB2ODo6a0dDVHlwZU1hcmtTd2VlcENvbXBhY3QpCiAgICAgICAgIG1ham9yR0NQ
cm9sb2d1ZSgpOwogCkBAIC0zMzcsNyArMzM5LDcgQEAgdm9pZCBWOEdDQ29udHJvbGxlcjo6Z2NQ
cm9sb2d1ZSh2ODo6R0NUeXBlIHR5cGUsIHY4OjpHQ0NhbGxiYWNrRmxhZ3MgZmxhZ3MpCiAgICAg
fQogfQogCi12b2lkIFY4R0NDb250cm9sbGVyOjptaW5vckdDUHJvbG9ndWUoKQordm9pZCBWOEdD
Q29udHJvbGxlcjo6bWlub3JHQ1Byb2xvZ3VlKHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAg
IFRSQUNFX0VWRU5UX0JFR0lOMCgidjgiLCAiR0MiKTsKIApAQCAtMzQ1LDcgKzM0Nyw3IEBAIHZv
aWQgVjhHQ0NvbnRyb2xsZXI6Om1pbm9yR0NQcm9sb2d1ZSgpCiAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9lZGVuTm9kZXMtPnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICBBU1NF
UlQoIW1fZWRlbk5vZGVzLT5hdChpKS0+d3JhcHBlcigpLklzRW1wdHkoKSk7CiAgICAgICAgICAg
ICBpZiAobV9lZGVuTm9kZXMtPmF0KGkpLT5pc1Y4Q29sbGVjdGFibGVEdXJpbmdNaW5vckdDKCkp
IC8vIFRoaXMgYnJhbmNoIGlzIGp1c3QgZm9yIHBlcmZvcm1hbmNlLgotICAgICAgICAgICAgICAg
IGdjVHJlZShtX2VkZW5Ob2Rlcy0+YXQoaSkpOworICAgICAgICAgICAgICAgIGdjVHJlZShpc29s
YXRlLCBtX2VkZW5Ob2Rlcy0+YXQoaSkpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmgKaW5kZXggMzJkMWEwOGMzMDE1MDk2
OGQwNTM5NmFjNzRmZDA0NTAzZDE5Y2RkZS4uMTA5MTQ3MWE3MmE0YWJiNzM5YTAyOGRiYWY0ZTI0
YjhhMzI0YjQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0Nv
bnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxl
ci5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFY4R0NDb250cm9sbGVyIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgdm9pZCBnY1Byb2xvZ3VlKHY4OjpHQ1R5cGUsIHY4OjpHQ0NhbGxiYWNrRmxhZ3Mp
OwogICAgIHN0YXRpYyB2b2lkIGdjRXBpbG9ndWUodjg6OkdDVHlwZSwgdjg6OkdDQ2FsbGJhY2tG
bGFncyk7Ci0gICAgc3RhdGljIHZvaWQgbWlub3JHQ1Byb2xvZ3VlKCk7CisgICAgc3RhdGljIHZv
aWQgbWlub3JHQ1Byb2xvZ3VlKHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGljIHZvaWQgbWlub3JH
Q0VwaWxvZ3VlKCk7CiAgICAgc3RhdGljIHZvaWQgbWFqb3JHQ1Byb2xvZ3VlKCk7CiAgICAgc3Rh
dGljIHZvaWQgbWFqb3JHQ0VwaWxvZ3VlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5jcHAKaW5kZXggNzRjNDRiM2FhNzUzZDM2OWYx
Yjc2ZGI3YjExY2Y3NWE1NDQ4ZjI4Yy4uNWViMTEyYzg2MzAzZDEzZjhiZGMwZDQxN2Y2MzgzMjlh
ZDdiZGQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Q
cm9wZXJ0eU5hbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGlkZGVu
UHJvcGVydHlOYW1lLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIFY4SGlkZGVuUHJvcGVydHlO
YW1lOjpzZXROYW1lZEhpZGRlblJlZmVyZW5jZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHBhcmVu
dAogdjg6OlBlcnNpc3RlbnQ8djg6OlN0cmluZz4gVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OmNyZWF0
ZVN0cmluZyhjb25zdCBjaGFyKiBrZXkpCiB7CiAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwot
ICAgIHJldHVybiB2ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPjo6TmV3KHY4OjpTdHJpbmc6Ok5l
d1N5bWJvbChrZXkpKTsKKyAgICByZXR1cm4gdjg6OlBlcnNpc3RlbnQ8djg6OlN0cmluZz46Ok5l
dyh2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpLCB2ODo6U3RyaW5nOjpOZXdTeW1ib2woa2V5KSk7
CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOExhenlFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDc4N2Y0OWQ0MTk5MzJmZTkx
YjEzOTdiZTIwNDUzNjhhOTgyYjk0MjUuLjc3NDgyMjdhZTc0MzViODA5YTYyN2UyNTc0NWY5YzZl
MGJmMWNlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TGF6eUV2
ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TGF6eUV2
ZW50TGlzdGVuZXIuY3BwCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBWOExhenlFdmVudExpc3Rl
bmVyOjpwcmVwYXJlTGlzdGVuZXJPYmplY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4mIHRvU3RyaW5nVGVt
cGxhdGUgPQogICAgICAgICBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPmxhenlFdmVudExp
c3RlbmVyVG9TdHJpbmdUZW1wbGF0ZSgpOwogICAgIGlmICh0b1N0cmluZ1RlbXBsYXRlLklzRW1w
dHkoKSkKLSAgICAgICAgdG9TdHJpbmdUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPjo6TmV3KHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhMYXp5RXZlbnRM
aXN0ZW5lclRvU3RyaW5nKSk7CisgICAgICAgIHRvU3RyaW5nVGVtcGxhdGUgPSB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyhpc29sYXRlLCB2ODo6RnVuY3Rpb25UZW1w
bGF0ZTo6TmV3KFY4TGF6eUV2ZW50TGlzdGVuZXJUb1N0cmluZykpOwogICAgIHY4OjpMb2NhbDx2
ODo6RnVuY3Rpb24+IHRvU3RyaW5nRnVuY3Rpb247CiAgICAgaWYgKCF0b1N0cmluZ1RlbXBsYXRl
LklzRW1wdHkoKSkKICAgICAgICAgdG9TdHJpbmdGdW5jdGlvbiA9IHRvU3RyaW5nVGVtcGxhdGUt
PkdldEZ1bmN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OE5QT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3Bw
CmluZGV4IDRjOWRiODUwOGNkMGE2NmQ2YmRmNDcwZGNiNjMxZDY5NGU0ZjQ4YmEuLjJiZmJiZDgx
ZWRhNGZmOTU5Y2FjNjU0YjBkZTg2Y2Q0NWUzMTI2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4TlBPYmplY3QuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgcHJpdmF0ZToKICAgICB7
CiAgICAgICAgIE1hcFR5cGU6Oml0ZXJhdG9yIGl0ID0gbV9tYXAuZmluZChrZXkpOwogICAgICAg
ICBBU1NFUlQoaXQgIT0gbV9tYXAuZW5kKCkpOwotICAgICAgICBpdC0+dmFsdWUuRGlzcG9zZSgp
OworICAgICAgICBpdC0+dmFsdWUuRGlzcG9zZShtX2lzb2xhdGUpOwogICAgICAgICBpdC0+dmFs
dWUuQ2xlYXIoKTsKICAgICAgICAgbV9tYXAucmVtb3ZlKGl0KTsKICAgICB9CkBAIC0yNTAsNyAr
MjUwLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBucE9iamVjdEdldFByb3BlcnR5
KHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBzZWxmLCBOUEkKICAgICAgICAgICAgIC8vIENyZWF0ZSBh
IG5ldyB0ZW1wbGF0ZS4KICAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gdGVtcCA9IHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoKTsKICAgICAgICAgICAgIHRlbXAt
PlNldENhbGxIYW5kbGVyKG5wT2JqZWN0TWV0aG9kSGFuZGxlciwga2V5KTsKLSAgICAgICAgICAg
IGZ1bmN0aW9uVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46
Ok5ldyh0ZW1wKTsKKyAgICAgICAgICAgIGZ1bmN0aW9uVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyhpc29sYXRlLCB0ZW1wKTsKICAgICAgICAgICAg
IFY4TlBUZW1wbGF0ZU1hcDo6c2hhcmVkSW5zdGFuY2UoaXNvbGF0ZSkuc2V0KGlkLCBmdW5jdGlv
blRlbXBsYXRlKTsKICAgICAgICAgfQogCkBAIC00MjgsOCArNDI4LDkgQEAgdjg6OkxvY2FsPHY4
OjpPYmplY3Q+IGNyZWF0ZVY4T2JqZWN0Rm9yTlBPYmplY3QoTlBPYmplY3QqIG9iamVjdCwgTlBP
YmplY3QqIHJvb3QKICAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGNyZWF0ZSBhIFdyYXBwZXIgdHlw
ZSBhcyBhIHN1YmNsYXNzIG9mIEpTT2JqZWN0LiBJdCBoYXMgdHdvIGludGVybmFsIGZpZWxkcywg
ZmllbGQgMCBpcyB0aGUgd3JhcHBlZAogICAgIC8vIHBvaW50ZXIsIGFuZCBmaWVsZCAxIGlzIHRo
ZSB0eXBlLiBUaGVyZSBzaG91bGQgYmUgYW4gYXBpIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB1bnVz
ZWQgdHlwZSBpZC4gVGhlIHNhbWUgV3JhcHBlciB0eXBlCiAgICAgLy8gY2FuIGJlIHVzZWQgYnkg
RE9NIGJpbmRpbmdzLgorICAgIHY4OjpJc29sYXRlKiBpc29sYXRlID0gdjg6Oklzb2xhdGU6Okdl
dEN1cnJlbnQoKTsKICAgICBpZiAobnBPYmplY3REZXNjLklzRW1wdHkoKSkgewotICAgICAgICBu
cE9iamVjdERlc2MgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2
ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KCkpOworICAgICAgICBucE9iamVjdERlc2MgPSB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyhpc29sYXRlLCB2ODo6RnVuY3Rp
b25UZW1wbGF0ZTo6TmV3KCkpOwogICAgICAgICBucE9iamVjdERlc2MtPkluc3RhbmNlVGVtcGxh
dGUoKS0+U2V0SW50ZXJuYWxGaWVsZENvdW50KG5wT2JqZWN0SW50ZXJuYWxGaWVsZENvdW50KTsK
ICAgICAgICAgbnBPYmplY3REZXNjLT5JbnN0YW5jZVRlbXBsYXRlKCktPlNldE5hbWVkUHJvcGVy
dHlIYW5kbGVyKG5wT2JqZWN0TmFtZWRQcm9wZXJ0eUdldHRlciwgbnBPYmplY3ROYW1lZFByb3Bl
cnR5U2V0dGVyLCBucE9iamVjdFF1ZXJ5UHJvcGVydHksIDAsIG5wT2JqZWN0TmFtZWRQcm9wZXJ0
eUVudW1lcmF0b3IpOwogICAgICAgICBucE9iamVjdERlc2MtPkluc3RhbmNlVGVtcGxhdGUoKS0+
U2V0SW5kZXhlZFByb3BlcnR5SGFuZGxlcihucE9iamVjdEluZGV4ZWRQcm9wZXJ0eUdldHRlciwg
bnBPYmplY3RJbmRleGVkUHJvcGVydHlTZXR0ZXIsIDAsIDAsIG5wT2JqZWN0SW5kZXhlZFByb3Bl
cnR5RW51bWVyYXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OFBlckNvbnRleHREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVyQ29u
dGV4dERhdGEuY3BwCmluZGV4IDA1OTEwOTBkMjRhYmMzZTYxZjczMmQ4YjNiNzFiMWExNDMzMDhl
YzguLmIzOTIzMjNhOGZkZTdlYzc0YTMzZjAyYWE5NWM2MTYyZWE4NjU2NDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVyQ29udGV4dERhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVyQ29udGV4dERhdGEuY3BwCkBAIC0zOSwxMyAr
MzksMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBWOFBlckNvbnRleHREYXRhOjpkaXNw
b3NlKCkKIHsKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CisgICAgdjg6Oklzb2xh
dGUqIGlzb2xhdGUgPSBtX2NvbnRleHQtPkdldElzb2xhdGUoKTsKICAgICBtX2NvbnRleHQtPlNl
dEFsaWduZWRQb2ludGVySW5FbWJlZGRlckRhdGEodjhDb250ZXh0UGVyQ29udGV4dERhdGFJbmRl
eCwgMCk7CiAKICAgICB7CiAgICAgICAgIFdyYXBwZXJCb2lsZXJwbGF0ZU1hcDo6aXRlcmF0b3Ig
aXQgPSBtX3dyYXBwZXJCb2lsZXJwbGF0ZXMuYmVnaW4oKTsKICAgICAgICAgZm9yICg7IGl0ICE9
IG1fd3JhcHBlckJvaWxlcnBsYXRlcy5lbmQoKTsgKytpdCkgewogICAgICAgICAgICAgdjg6OlBl
cnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlciA9IGl0LT52YWx1ZTsKLSAgICAgICAgICAgIHdy
YXBwZXIuRGlzcG9zZSgpOworICAgICAgICAgICAgd3JhcHBlci5EaXNwb3NlKGlzb2xhdGUpOwog
ICAgICAgICAgICAgd3JhcHBlci5DbGVhcigpOwogICAgICAgICB9CiAgICAgICAgIG1fd3JhcHBl
ckJvaWxlcnBsYXRlcy5jbGVhcigpOwpAQCAtNTUsNyArNTYsNyBAQCB2b2lkIFY4UGVyQ29udGV4
dERhdGE6OmRpc3Bvc2UoKQogICAgICAgICBDb25zdHJ1Y3Rvck1hcDo6aXRlcmF0b3IgaXQgPSBt
X2NvbnN0cnVjdG9yTWFwLmJlZ2luKCk7CiAgICAgICAgIGZvciAoOyBpdCAhPSBtX2NvbnN0cnVj
dG9yTWFwLmVuZCgpOyArK2l0KSB7CiAgICAgICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb24+IHdyYXBwZXIgPSBpdC0+dmFsdWU7Ci0gICAgICAgICAgICB3cmFwcGVyLkRpc3Bvc2Uo
KTsKKyAgICAgICAgICAgIHdyYXBwZXIuRGlzcG9zZShpc29sYXRlKTsKICAgICAgICAgICAgIHdy
YXBwZXIuQ2xlYXIoKTsKICAgICAgICAgfQogICAgICAgICBtX2NvbnN0cnVjdG9yTWFwLmNsZWFy
KCk7CkBAIC0xMDIsNyArMTAzLDcgQEAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IFY4UGVyQ29udGV4
dERhdGE6OmNyZWF0ZVdyYXBwZXJGcm9tQ2FjaGVTbG93Q2FzZShXcmFwcGVyVHkKICAgICB2ODo6
TG9jYWw8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IGNvbnN0cnVjdG9yRm9yVHlwZSh0eXBlKTsK
ICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gaW5zdGFuY2UgPSBWOE9iamVjdENvbnN0cnVjdG9y
OjpuZXdJbnN0YW5jZShmdW5jdGlvbik7CiAgICAgaWYgKCFpbnN0YW5jZS5Jc0VtcHR5KCkpIHsK
LSAgICAgICAgbV93cmFwcGVyQm9pbGVycGxhdGVzLnNldCh0eXBlLCB2ODo6UGVyc2lzdGVudDx2
ODo6T2JqZWN0Pjo6TmV3KGluc3RhbmNlKSk7CisgICAgICAgIG1fd3JhcHBlckJvaWxlcnBsYXRl
cy5zZXQodHlwZSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhtX2NvbnRleHQtPkdl
dElzb2xhdGUoKSwgaW5zdGFuY2UpKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlLT5DbG9uZSgp
OwogICAgIH0KICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7CkBAIC0xMzAsNyAr
MTMxLDcgQEAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gVjhQZXJDb250ZXh0RGF0YTo6Y29uc3Ry
dWN0b3JGb3JUeXBlU2xvd0Nhc2UoV3JhcHBlclR5cGUKICAgICAgICAgICAgIHByb3RvdHlwZU9i
amVjdC0+U2V0UHJvdG90eXBlKG1fZXJyb3JQcm90b3R5cGUuZ2V0KCkpOwogICAgIH0KIAotICAg
IG1fY29uc3RydWN0b3JNYXAuc2V0KHR5cGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvbj46
Ok5ldyhmdW5jdGlvbikpOworICAgIG1fY29uc3RydWN0b3JNYXAuc2V0KHR5cGUsIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvbj46Ok5ldyhtX2NvbnRleHQtPkdldElzb2xhdGUoKSwgZnVuY3Rp
b24pKTsKIAogICAgIHJldHVybiBmdW5jdGlvbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4VmFsdWVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOFZhbHVlQ2FjaGUuY3BwCmluZGV4IGFkOTY2ZmFhM2NkN2RhN2FmNzdhNTNiYWZjMjVl
Y2E0MDZiMDVkZjUuLjVjODkxYWI0NzU2NWQ0OWI2ODc4N2Q5YTI3NGViMDhhMDlkNGRkYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VmFsdWVDYWNoZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhWYWx1ZUNhY2hlLmNwcApAQCAtNjYsNyAr
NjYsNyBAQCBzdGF0aWMgdm9pZCBjYWNoZWRTdHJpbmdDYWxsYmFjayh2ODo6SXNvbGF0ZSogaXNv
bGF0ZSwgdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPgogewogICAgIFN0cmluZ0ltcGwqIHN0cmlu
Z0ltcGwgPSBzdGF0aWNfY2FzdDxTdHJpbmdJbXBsKj4ocGFyYW1ldGVyKTsKICAgICBWOFBlcklz
b2xhdGVEYXRhOjpjdXJyZW50KCktPnN0cmluZ0NhY2hlKCktPnJlbW92ZShzdHJpbmdJbXBsKTsK
LSAgICB3cmFwcGVyLkRpc3Bvc2UoKTsKKyAgICB3cmFwcGVyLkRpc3Bvc2UoaXNvbGF0ZSk7CiAg
ICAgd3JhcHBlci5DbGVhcigpOwogICAgIHN0cmluZ0ltcGwtPmRlcmVmKCk7CiB9CkBAIC04Niw3
ICs4Niw3IEBAIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gU3RyaW5nQ2FjaGU6OnY4RXh0ZXJuYWxT
dHJpbmdTbG93KFN0cmluZ0ltcGwqIHN0cmluZ0ltcGwsCiAgICAgICAgIHJldHVybiB2ODo6U3Ry
aW5nOjpFbXB0eShpc29sYXRlKTsKIAogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpTdHJpbmc+IGNh
Y2hlZFY4U3RyaW5nID0gbV9zdHJpbmdDYWNoZS5nZXQoc3RyaW5nSW1wbCk7Ci0gICAgaWYgKGNh
Y2hlZFY4U3RyaW5nLklzV2VhaygpKSB7CisgICAgaWYgKGNhY2hlZFY4U3RyaW5nLklzV2Vhayhp
c29sYXRlKSkgewogICAgICAgICBtX2xhc3RTdHJpbmdJbXBsID0gc3RyaW5nSW1wbDsKICAgICAg
ICAgbV9sYXN0VjhTdHJpbmcgPSBjYWNoZWRWOFN0cmluZzsKICAgICAgICAgaWYgKGhhbmRsZVR5
cGUgPT0gUmV0dXJuVW5zYWZlSGFuZGxlKQpAQCAtOTgsMTIgKzk4LDEyIEBAIHY4OjpIYW5kbGU8
djg6OlN0cmluZz4gU3RyaW5nQ2FjaGU6OnY4RXh0ZXJuYWxTdHJpbmdTbG93KFN0cmluZ0ltcGwq
IHN0cmluZ0ltcGwsCiAgICAgaWYgKG5ld1N0cmluZy5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBuZXdTdHJpbmc7CiAKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPiB3cmFwcGVyID0g
djg6OlBlcnNpc3RlbnQ8djg6OlN0cmluZz46Ok5ldyhuZXdTdHJpbmcpOworICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpTdHJpbmc+IHdyYXBwZXIgPSB2ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPjo6
TmV3KGlzb2xhdGUsIG5ld1N0cmluZyk7CiAgICAgaWYgKHdyYXBwZXIuSXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gbmV3U3RyaW5nOwogCiAgICAgc3RyaW5nSW1wbC0+cmVmKCk7Ci0gICAgd3Jh
cHBlci5NYXJrSW5kZXBlbmRlbnQoKTsKKyAgICB3cmFwcGVyLk1hcmtJbmRlcGVuZGVudChpc29s
YXRlKTsKICAgICB3cmFwcGVyLk1ha2VXZWFrKGlzb2xhdGUsIHN0cmluZ0ltcGwsIGNhY2hlZFN0
cmluZ0NhbGxiYWNrKTsKICAgICBtX3N0cmluZ0NhY2hlLnNldChzdHJpbmdJbXBsLCB3cmFwcGVy
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJ
bmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaAppbmRl
eCAxOTM0ZWIxMDE1YzA1NGUxZDU1ZmFjNTIyYWYzZTYxMzIyMTZkN2NjLi5iMzEwYWY5YTdkMmY4
MDEyMDQ0ODc4NmE4OTBmM2JmYTg2MjY2NTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9XcmFwcGVyVHlwZUluZm8uaApAQCAtMTUwLDcgKzE1MCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgICAgICB2b2lkIGNvbmZpZ3VyZVdyYXBwZXIodjg6OlBlcnNpc3RlbnQ8djg6
Ok9iamVjdD4gd3JhcHBlciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpIGNvbnN0CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHdyYXBwZXIuU2V0V3JhcHBlckNsYXNzSWQoY2xhc3NJZCk7CisgICAgICAg
ICAgICB3cmFwcGVyLlNldFdyYXBwZXJDbGFzc0lkKGlzb2xhdGUsIGNsYXNzSWQpOwogICAgICAg
ICAgICAgaWYgKGxpZmV0aW1lID09IEluZGVwZW5kZW50KQogICAgICAgICAgICAgICAgIHdyYXBw
ZXIuTWFya0luZGVwZW5kZW50KGlzb2xhdGUpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNw
cAppbmRleCA3NTE0Y2I2MjI3ODMxMmNiYTBlM2Q4MGI3Y2EzZjc0MjI1MmViMzQ1Li5mZDA5YWNm
MDFhZjIxOTdkODRiNjk1ZWExYzVkMmE3ZWFlMTBmZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAK
QEAgLTU2LDcgKzU2LDcgQEAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IFY4SFRNTERvY3VtZW50Ojp3
cmFwSW5TaGFkb3dPYmplY3Qodjg6OkxvY2FsPHY4OjpPYmplY3Q+IHcKIHsKICAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiwgc2hhZG93
VGVtcGxhdGUsICgpKTsKICAgICBpZiAoc2hhZG93VGVtcGxhdGUuSXNFbXB0eSgpKSB7Ci0gICAg
ICAgIHNoYWRvd1RlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldygpKTsKKyAgICAgICAgc2hhZG93VGVtcGxh
dGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyhpc29sYXRlLCB2
ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KCkpOwogICAgICAgICBpZiAoc2hhZG93VGVtcGxhdGUu
SXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0PigpOwog
ICAgICAgICBzaGFkb3dUZW1wbGF0ZS0+U2V0Q2xhc3NOYW1lKHY4OjpTdHJpbmc6Ok5ld1N5bWJv
bCgiSFRNTERvY3VtZW50IikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAK
aW5kZXggNTAyNmFkZjJhYTljMjgxM2ZmZjg3ODg1MTAwN2U4ZmU3ODczODdmMi4uZjVlNDgxNGQ3
Y2RjZTI3YzM1YTNiODczOTIyZjA1OTE1ZTQ1MTBjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50
Q29uc3RydWN0b3IuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBWOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUo
CiAgICAgcmVzdWx0LT5TZXRDbGFzc05hbWUodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJIVE1MSW1h
Z2VFbGVtZW50IikpOwogICAgIHJlc3VsdC0+SW5oZXJpdChWOEhUTUxJbWFnZUVsZW1lbnQ6Okdl
dFRlbXBsYXRlKGlzb2xhdGUpKTsKIAotICAgIGNhY2hlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcocmVzdWx0KTsKKyAgICBjYWNoZWRUZW1wbGF0
ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KGlzb2xhdGUsIHJl
c3VsdCk7CiAgICAgcmV0dXJuIGNhY2hlZFRlbXBsYXRlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmNwcAppbmRleCAxYzE4OTE4NTI5MjNlZDczNmM4YzUyNzFhYjM5MTYwZDc3Y2IwMzdhLi5i
Mjk2MWUzMDA0MGRhYzY4YjIxNGNiYTVhNDhiNjMwZGQ0MzlmYjUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0
TWFuYWdlci5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIHZvaWQgV2Vha1JlZmVyZW5jZUNh
bGxiYWNrKHY4OjpJc29sYXRlKiBpc29sYXRlLCB2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWUKIHsK
ICAgICBJbmplY3RlZFNjcmlwdEhvc3QqIG5hdGl2ZU9iamVjdCA9IHN0YXRpY19jYXN0PEluamVj
dGVkU2NyaXB0SG9zdCo+KHBhcmFtZXRlcik7CiAgICAgbmF0aXZlT2JqZWN0LT5kZXJlZigpOwot
ICAgIG9iamVjdC5EaXNwb3NlKCk7CisgICAgb2JqZWN0LkRpc3Bvc2UoaXNvbGF0ZSk7CiAgICAg
b2JqZWN0LkNsZWFyKCk7CiB9CiAKQEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljIHY4OjpMb2NhbDx2
ODo6T2JqZWN0PiBjcmVhdGVJbmplY3RlZFNjcmlwdEhvc3RWOFdyYXBwZXIoSW5qZWN0ZWRTY3Jp
cHRIb3MKICAgICAvLyBDcmVhdGUgYSB3ZWFrIHJlZmVyZW5jZSB0byB0aGUgdjggd3JhcHBlciBv
ZiBJbnNwZWN0b3JCYWNrZW5kIHRvIGRlcmVmCiAgICAgLy8gSW5zcGVjdG9yQmFja2VuZCB3aGVu
IHRoZSB3cmFwcGVyIGlzIGdhcmJhZ2UgY29sbGVjdGVkLgogICAgIGhvc3QtPnJlZigpOwotICAg
IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdlYWtIYW5kbGUgPSB2ODo6UGVyc2lzdGVudDx2
ODo6T2JqZWN0Pjo6TmV3KGluc3RhbmNlKTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0
PiB3ZWFrSGFuZGxlID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhpc29sYXRlLCBp
bnN0YW5jZSk7CiAgICAgd2Vha0hhbmRsZS5NYWtlV2Vhayhpc29sYXRlLCBob3N0LCAmV2Vha1Jl
ZmVyZW5jZUNhbGxiYWNrKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAKaW5k
ZXggNjZmMDdkMzRkMjMzZTcwMjQ1YmM0YWNkZTI5MTBlOTJmY2Q5NjI4MS4uMmExMmFlZTM3Y2Fk
YTJjMjdmNTM0MjVlMWM5MGZiOWZjMjI5ZWI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcApAQCAtMTM4LDggKzEz
OCw5IEBAIHZvaWQgVjhMb2NhdGlvbjo6c2VhcmNoQWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OExvY2F0aW9uOjpyZWxvYWRBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXco
VjhMb2NhdGlvbjo6cmVsb2FkQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6
Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZShpbmZvLkdldElzb2xhdGUoKSkpKSk7Ci0g
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3Rh
bmNlSW5Qcm90b3R5cGVDaGFpbihWOExvY2F0aW9uOjpHZXRUZW1wbGF0ZShpbmZvLkdldElzb2xh
dGUoKSkpOworICAgIHY4OjpJc29sYXRlKiBpc29sYXRlID0gaW5mby5HZXRJc29sYXRlKCk7Cisg
ICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVt
cGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyhpc29sYXRl
LCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4TG9jYXRpb246OnJlbG9hZENhbGxiYWNrLCB2
OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxh
dGUoaXNvbGF0ZSkpKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZv
LlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOExvY2F0aW9uOjpHZXRUZW1w
bGF0ZShpc29sYXRlKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsKICAgICAgICAgLy8g
Y2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJvdG9fXy5mdW5jJywgYW5kIGl0IHNo
b3VsZCBwYXNzZWQKICAgICAgICAgLy8gZG9tYWluIHNlY3VyaXR5IGNoZWNrIGFscmVhZHkKQEAg
LTE0Nyw3ICsxNDgsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVsb2Fk
QWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbQogICAgIH0KICAgICBMb2Nh
dGlvbiogaW1wID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUoaG9sZGVyKTsKICAgICBpZiAoIUJpbmRp
bmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEJpbmRpbmdTdGF0ZTo6aW5zdGFu
Y2UoKSwgaW1wLT5mcmFtZSgpLCBEb05vdFJlcG9ydFNlY3VyaXR5RXJyb3IpKSB7Ci0gICAgICAg
IHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc2hhcmVkVGVtcGxh
dGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rp
b25UZW1wbGF0ZTo6TmV3KFY4TG9jYXRpb246OnJlbG9hZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgp
LCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoaW5mby5HZXRJ
c29sYXRlKCkpKSkpOworICAgICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9u
OjpyZWxvYWRDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9j
YXRpb246OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUpKSkpOwogICAgICAgICByZXR1cm4gc2hhcmVk
VGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CiAgICAgfQogICAgIHJldHVybiBwcml2YXRlVGVtcGxh
dGUtPkdldEZ1bmN0aW9uKCk7CkBAIC0xNTUsOCArMTU2LDkgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4TG9jYXRpb246OnJlbG9hZEFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJlcGxhY2VBY2Nlc3Nv
ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKIHsKLSAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IHByaXZhdGVUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
Pjo6TmV3KHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhMb2NhdGlvbjo6cmVwbGFjZUNhbGxi
YWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3
VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCkpKSkpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhM
b2NhdGlvbjo6R2V0VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCkpKTsKKyAgICB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSA9IGluZm8uR2V0SXNvbGF0ZSgpOworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6
Ok5ldyhWOExvY2F0aW9uOjpyZXBsYWNlQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4OjpTaWdu
YXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSkpKTsKKyAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJ
blByb3RvdHlwZUNoYWluKFY4TG9jYXRpb246OkdldFRlbXBsYXRlKGlzb2xhdGUpKTsKICAgICBp
ZiAoaG9sZGVyLklzRW1wdHkoKSkgewogICAgICAgICAvLyBjYW4gb25seSByZWFjaCBoZXJlIGJ5
ICdvYmplY3QuX19wcm90b19fLmZ1bmMnLCBhbmQgaXQgc2hvdWxkIHBhc3NlZAogICAgICAgICAv
LyBkb21haW4gc2VjdXJpdHkgY2hlY2sgYWxyZWFkeQpAQCAtMTY0LDcgKzE2Niw3IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjpyZXBsYWNlQWNjZXNzb3JHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hCiAgICAgfQogICAgIExvY2F0aW9uKiBpbXAgPSBWOExvY2F0aW9u
Ojp0b05hdGl2ZShob2xkZXIpOwogICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxv
d0FjY2Vzc1RvRnJhbWUoQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpLCBpbXAtPmZyYW1lKCksIERv
Tm90UmVwb3J0U2VjdXJpdHlFcnJvcikpIHsKLSAgICAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhMb2Nh
dGlvbjo6cmVwbGFjZUNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXco
VjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCkpKSkpOworICAgICAg
ICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBs
YXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwg
djg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjpyZXBsYWNlQ2FsbGJhY2ssIHY4
VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0
ZShpc29sYXRlKSkpKTsKICAgICAgICAgcmV0dXJuIHNoYXJlZFRlbXBsYXRlLT5HZXRGdW5jdGlv
bigpOwogICAgIH0KICAgICByZXR1cm4gcHJpdmF0ZVRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwpA
QCAtMTcyLDkgKzE3NCwxMCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVw
bGFjZUFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYQogCiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6YXNzaWduQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CisgICAgdjg6
Oklzb2xhdGUqIGlzb2xhdGUgPSBpbmZvLkdldElzb2xhdGUoKTsKICAgICBzdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9Ci0gICAgICAg
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KHY4OjpGdW5jdGlvblRl
bXBsYXRlOjpOZXcoVjhMb2NhdGlvbjo6YXNzaWduQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4
OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZShpbmZvLkdldElzb2xh
dGUoKSkpKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMo
KS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOExvY2F0aW9uOjpHZXRUZW1wbGF0ZShp
bmZvLkdldElzb2xhdGUoKSkpOworICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT46Ok5ldyhpc29sYXRlLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4TG9jYXRp
b246OmFzc2lnbkNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhM
b2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSkpKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFp
bihWOExvY2F0aW9uOjpHZXRUZW1wbGF0ZShpc29sYXRlKSk7CiAgICAgaWYgKGhvbGRlci5Jc0Vt
cHR5KCkpIHsKICAgICAgICAgLy8gY2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJv
dG9fXy5mdW5jJywgYW5kIGl0IHNob3VsZCBwYXNzZWQKICAgICAgICAgLy8gZG9tYWluIHNlY3Vy
aXR5IGNoZWNrIGFscmVhZHkKQEAgLTE4Miw3ICsxODUsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhMb2NhdGlvbjo6YXNzaWduQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbQogICAgIH0KICAgICBMb2NhdGlvbiogaW1wID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUoaG9s
ZGVyKTsKICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1l
KEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSwgaW1wLT5mcmFtZSgpLCBEb05vdFJlcG9ydFNlY3Vy
aXR5RXJyb3IpKSB7Ci0gICAgICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4TG9jYXRpb246OmFzc2lnbkNh
bGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0
UmF3VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCkpKSkpOworICAgICAgICBzdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6OkZ1bmN0aW9uVGVt
cGxhdGU6Ok5ldyhWOExvY2F0aW9uOjphc3NpZ25DYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6
OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUpKSkpOwog
ICAgICAgICByZXR1cm4gc2hhcmVkVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CiAgICAgfQogICAg
IHJldHVybiBwcml2YXRlVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAKaW5kZXggZWQ1MWQyNzBjNzc0NmJmNTc4
NDZjYzM4NjY5NTllNGY2MTg1ZTIyOC4uYTI2YWQyNzIyMzc1MDExZDIyYmIzYzdlODY5NGU5YmY3
ODcwNDlmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFt
ZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0
LmNwcApAQCAtOTg3LDE1ICs5ODcsMTUgQEAgcHVibGljOgogICAgIHN0cnVjdCBOb3RpZmljYXRp
b24gewogICAgIHB1YmxpYzoKICAgICAgICAgTm90aWZpY2F0aW9uKFdlYkZyYW1lKiBmcmFtZSwg
djg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCwgaW50IHdvcmxkSWQpCi0gICAgICAgICAg
ICA6IGZyYW1lKGZyYW1lKSAsCi0gICAgICAgICAgICAgIGNvbnRleHQodjg6OlBlcnNpc3RlbnQ8
djg6OkNvbnRleHQ+OjpOZXcoY29udGV4dCkpLAotICAgICAgICAgICAgICB3b3JsZElkKHdvcmxk
SWQpCisgICAgICAgICAgICA6IGZyYW1lKGZyYW1lKQorICAgICAgICAgICAgLCBjb250ZXh0KHY4
OjpQZXJzaXN0ZW50PHY4OjpDb250ZXh0Pjo6TmV3KGNvbnRleHQtPkdldElzb2xhdGUoKSwgY29u
dGV4dCkpCisgICAgICAgICAgICAsIHdvcmxkSWQod29ybGRJZCkKICAgICAgICAgewogICAgICAg
ICB9CiAKICAgICAgICAgfk5vdGlmaWNhdGlvbigpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQuRGlzcG9zZSgpOworICAgICAgICAgICAgY29udGV4dC5EaXNwb3NlKGNvbnRleHQtPkdl
dElzb2xhdGUoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBib29sIEVxdWFscyhOb3RpZmljYXRp
b24qIG90aGVyKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187264</attachid>
            <date>2013-02-08 01:20:33 -0800</date>
            <delta_ts>2013-02-08 02:18:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109268-20130208101707.patch</filename>
            <type>text/plain</type>
            <size>52035</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMjM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjE5M2Y0YzI0NTQxMWY5
N2I4ZDliMTAyYmVlOGUyNjE3ODFmNDFlOC4uMWY2ZGEzMmYzNmY4YjJmOGNlZDQyNzc0MTRlMmM4
MTZjNjdmM2UyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAxMy0wMi0wOCAgRGFu
IENhcm5leSAgPGRjYXJuZXlAZ29vZ2xlLmNvbT4KKworICAgICAgICBbdjhdIGlzb2xhdGUgcGFy
YW1ldGVyIGFkZGVkIHRvIGFsbCB2ODo6cGVyaXN0ZW50IGNhbGxzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkyNjgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE5vIGNoYW5nZSBp
biBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG06CisgICAgICAgIChHZW5lcmF0ZURvbWFpblNhZmVGdW5jdGlvbkdldHRlcik6Cisg
ICAgICAgIChHZW5lcmF0ZU5hbWVkQ29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgIChHZW5l
cmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhGbG9hdDY0QXJyYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhGbG9hdDY0QXJyYXk6Okdl
dFJhd1RlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RBY3RpdmVET01PYmpl
Y3RWOEludGVybmFsOjpwb3N0TWVzc2FnZUF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
VjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpHZXRSYXdUZW1wbGF0ZSk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpHZXRSYXdUZW1wbGF0ZSk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6R2V0UmF3VGVtcGxh
dGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdl
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RFdmVudFRhcmdldDo6R2V0UmF3VGVtcGxh
dGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXhjZXB0aW9uOjpHZXRSYXdUZW1wbGF0ZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RJbnRlcmZhY2U6OkdldFJhd1RlbXBsYXRlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
OjpHZXRSYXdUZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TmFtZWRD
b25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpW
OFRlc3ROYW1lZENvbnN0cnVjdG9yOjpHZXRSYXdUZW1wbGF0ZSk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhU
ZXN0Tm9kZTo6R2V0UmF3VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T2JqOjpHZXRSYXdU
ZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczo6R2V0UmF3VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpHZXRS
YXdUZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NV3JhcHBlck1hcC5oOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV3JhcHBlck1hcDo6Y2xlYXIpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L0RPTVdyYXBwZXJXb3JsZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc29sYXRlZFdvcmxk
V2Vha0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZDo6bWFrZUNv
bnRleHRXZWFrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmZyZWVWOE5QT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Om5wQ3JlYXRl
VjhTY3JpcHRPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjaGVkdWxlZEFjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OlNjaGVkdWxlZEFjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246On5TY2hlZHVsZWRBY3Rpb24pOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1Njb3BlZFBlcnNpc3RlbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjb3BlZFBlcnNpc3RlbnQ6OlNjb3BlZFBlcnNpc3RlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NvcGVkUGVyc2lzdGVudDo6c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZFBlcnNp
c3RlbnQ6OmNsZWFyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRXcmFwcGFibGUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFdyYXBwYWJsZTo6c2V0V3JhcHBlcik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRXcmFwcGFibGU6OmRpc3Bvc2VXcmFwcGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdFdyYXBwYWJsZTo6d2Vha0NhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9WOEJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUmF3VGVtcGxhdGUp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Z2NUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4R0NDb250cm9sbGVyOjpnY1Byb2xv
Z3VlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4R0NDb250cm9sbGVyOjptaW5vckdDUHJvbG9ndWUp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmg6CisgICAgICAgIChWOEdD
Q29udHJvbGxlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OmNyZWF0ZVN0cmlu
Zyk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOExhenlFdmVudExpc3RlbmVyOjpwcmVwYXJlTGlzdGVuZXJPYmplY3Qp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhOUFRlbXBsYXRlTWFwOjpkaXNwb3NlKToKKyAgICAgICAgKFdlYkNvcmU6Om5wT2JqZWN0
R2V0UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVjhPYmplY3RGb3JOUE9iamVj
dCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhQZXJDb250ZXh0RGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpWOFBlckNvbnRleHREYXRhOjpkaXNwb3NlKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4UGVyQ29udGV4dERhdGE6OmNyZWF0ZVdyYXBwZXJGcm9tQ2FjaGVTbG93Q2FzZSk6CisgICAg
ICAgIChXZWJDb3JlOjpWOFBlckNvbnRleHREYXRhOjpjb25zdHJ1Y3RvckZvclR5cGVTbG93Q2Fz
ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhWYWx1ZUNhY2hlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Om1ha2VFeHRlcm5hbFN0cmluZyk6CisgICAgICAgICogYmluZGluZ3MvdjgvV3JhcHBl
clR5cGVJbmZvLmg6CisgICAgICAgIChXZWJDb3JlOjpXcmFwcGVyQ29uZmlndXJhdGlvbjo6Y29u
ZmlndXJlV3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3Vt
ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTERvY3VtZW50Ojp3cmFwSW5T
aGFkb3dPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVs
ZW1lbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxJbWFnZUVsZW1l
bnRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWFrUmVm
ZXJlbmNlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHRI
b3N0VjhXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjpyZWxvYWRBY2Nlc3Nvckdl
dHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjpyZXBsYWNlQWNjZXNzb3JHZXR0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6YXNzaWduQWNjZXNzb3JHZXR0ZXIp
OgorCiAyMDEzLTAyLTA3ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50IHNob3VsZCBub3QgcmV0dXJuIGEgbm9uLWZvY3Vz
YWJsZSBlbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDdiMDM3M2Q4YzM4ZjQ3
YWI3OWQ1ZWJlYzEwMTYwYzA1ZjgyODBmNDAuLjBkYjUxM2E5OTkwMWRlYzEwYmY2Njk1ZmMxNDBh
YTUxMDViMTE1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTMtMDItMDggIERhbiBDYXJuZXkgIDxkY2FybmV5QGdvb2dsZS5jb20+CisKKyAgICAgICAg
W3Y4XSBpc29sYXRlIHBhcmFtZXRlciBhZGRlZCB0byBhbGwgdjg6OnBlcmlzdGVudCBjYWxscwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5MjY4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9X
ZWJGcmFtZVRlc3QuY3BwOgorCiAyMDEzLTAyLTA3ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW0tQW5kcm9pZF0gRGlzYWJsZSBpbnB1dFt0eXBl
PWRhdGV0aW1lXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbQppbmRleCBjZjI0YTZhZThmNzFhNDgzMjlmMGUxZjNkNTU4YjZiMTlhYTYy
ZGM0Li5hZjY5OTM0OThkODIwODQxY2RhMDUxNmU5MjdjOWIxYmZiYzgwNDM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAt
Nzk4LDcgKzc5OCw3IEBAIHN1YiBHZW5lcmF0ZURvbWFpblNhZmVGdW5jdGlvbkdldHRlcgogICAg
IHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gJHtmdW5jTmFtZX1BdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoJG5ld1RlbXBsYXRlU3RyaW5nKTsKKyAgICBzdGF0
aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KGluZm8uR2V0SXNvbGF0
ZSgpLCAkbmV3VGVtcGxhdGVTdHJpbmcpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9s
ZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oJHt2OEludGVy
ZmFjZU5hbWV9OjpHZXRUZW1wbGF0ZShpbmZvLkdldElzb2xhdGUoKSkpOwogICAgIGlmIChob2xk
ZXIuSXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIGNhbiBvbmx5IHJlYWNoIGhlcmUgYnkgJ29iamVj
dC5fX3Byb3RvX18uZnVuYycsIGFuZCBpdCBzaG91bGQgcGFzc2VkCkBAIC04MDcsNyArODA3LDcg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke2Z1bmNOYW1lfUF0dHJHZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGMKICAgICB9CiAgICAgJHtpbnRlcmZhY2VOYW1lfSog
aW1wID0gJHt2OEludGVyZmFjZU5hbWV9Ojp0b05hdGl2ZShob2xkZXIpOwogICAgIGlmICghQmlu
ZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoQmluZGluZ1N0YXRlOjppbnN0
YW5jZSgpLCBpbXAtPmZyYW1lKCksIERvTm90UmVwb3J0U2VjdXJpdHlFcnJvcikpIHsKLSAgICAg
ICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzaGFyZWRUZW1w
bGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KCRuZXdUZW1w
bGF0ZVN0cmluZyk7CisgICAgICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT46Ok5ldyhpbmZvLkdldElzb2xhdGUoKSwgJG5ld1RlbXBsYXRlU3RyaW5nKTsKICAgICAg
ICAgcmV0dXJuIHNoYXJlZFRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwogICAgIH0KIApAQCAtMjIw
Nyw3ICsyMjA3LDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7djhJ
bnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSgKICAgICByZXN1bHQtPlNldENs
YXNzTmFtZSh2ODo6U3RyaW5nOjpOZXdTeW1ib2woIiR7aW50ZXJmYWNlTmFtZX0iKSk7CiAgICAg
cmVzdWx0LT5Jbmhlcml0KCR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUoaXNvbGF0ZSkp
OwogCi0gICAgY2FjaGVkVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT46Ok5ldyhyZXN1bHQpOworICAgIGNhY2hlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgcmVzdWx0KTsKICAgICByZXR1cm4g
Y2FjaGVkVGVtcGxhdGU7CiB9CiAKQEAgLTMxMDQsNyArMzEwNCw3IEBAIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAke3Y4SW50ZXJmYWNlTmFtZX06OkdldFJhd1RlbXBsYXRl
KHY4OjpJc29sCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRs
ZVNjb3BlIGhhbmRsZVNjb3BlOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiB0ZW1wbCA9IGNyZWF0ZVJhd1RlbXBsYXRlKCk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0gY3JlYXRlUmF3VGVtcGxhdGUoaXNvbGF0ZSk7CiAg
ICAgZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4g
dGVtcGw7CiB9CkBAIC0zMjIyLDcgKzMyMjIsNyBAQCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0
VGVtcGxhdGU+IFY4RE9NV2luZG93OjpHZXRTaGFkb3dPYmplY3RUZW1wbGF0ZSh2ODo6SXNvbAog
ewogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0VGVtcGxhdGU+IFY4RE9NV2lu
ZG93U2hhZG93T2JqZWN0Q2FjaGU7CiAgICAgaWYgKFY4RE9NV2luZG93U2hhZG93T2JqZWN0Q2Fj
aGUuSXNFbXB0eSgpKSB7Ci0gICAgICAgIFY4RE9NV2luZG93U2hhZG93T2JqZWN0Q2FjaGUgPSB2
ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0VGVtcGxhdGU+OjpOZXcodjg6Ok9iamVjdFRlbXBsYXRl
OjpOZXcoKSk7CisgICAgICAgIFY4RE9NV2luZG93U2hhZG93T2JqZWN0Q2FjaGUgPSB2ODo6UGVy
c2lzdGVudDx2ODo6T2JqZWN0VGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6Ok9iamVjdFRlbXBs
YXRlOjpOZXcoKSk7CiAgICAgICAgIENvbmZpZ3VyZVNoYWRvd09iamVjdFRlbXBsYXRlKFY4RE9N
V2luZG93U2hhZG93T2JqZWN0Q2FjaGUsIGlzb2xhdGUpOwogICAgIH0KICAgICByZXR1cm4gVjhE
T01XaW5kb3dTaGFkb3dPYmplY3RDYWNoZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCmluZGV4IGZhZTgz
OTc4Yzg3OGE4ZGNmNmYzN2RkY2RjMGMxYjQ5MTEwNTVmZTIuLjdiMjM3YTAwYzk5YjIxZTZiN2U1
MTI1MmY5MGQwODg5OGRhYzUwOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcApAQCAtMTQwLDcgKzE0
MCw3IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEZsb2F0NjRBcnJh
eTo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZh
bHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwotICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9IGNyZWF0ZVJhd1RlbXBsYXRlKCk7Cisg
ICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0gY3JlYXRlUmF3
VGVtcGxhdGUoaXNvbGF0ZSk7CiAgICAgZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5hZGQoJmluZm8s
IHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmpl
Y3QuY3BwCmluZGV4IDFjOWZlOThiNWQxNGQzMzMxYTFmOWU1MzU1ZGNmM2I2ZWRmN2ZhMmMuLmUw
MDI0YjllZWZmODVmNTdiNDdmNGU1Yzc0NTliNDcyMTY0NmIyOTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RB
Y3RpdmVET01PYmplY3QuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gcG9zdE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
CiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBvc3RNZXNzYWdlQXR0ckdldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsK
LSAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVU
ZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KHY4OjpG
dW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OnBvc3RN
ZXNzYWdlQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOFRlc3RB
Y3RpdmVET01PYmplY3Q6OkdldFJhd1RlbXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgpKSkpKTsKKyAg
ICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1w
bGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KGluZm8uR2V0
SXNvbGF0ZSgpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RBY3RpdmVET01PYmplY3RW
OEludGVybmFsOjpwb3N0TWVzc2FnZUNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0
dXJlOjpOZXcoVjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpHZXRSYXdUZW1wbGF0ZShpbmZvLkdldElz
b2xhdGUoKSkpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRo
aXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOFRlc3RBY3RpdmVET01PYmplY3Q6
OkdldFRlbXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgpKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5
KCkpIHsKICAgICAgICAgLy8gY2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJvdG9f
Xy5mdW5jJywgYW5kIGl0IHNob3VsZCBwYXNzZWQKQEAgLTEwMSw3ICsxMDEsNyBAQCBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHBvc3RNZXNzYWdlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgYwogICAgIH0KICAgICBUZXN0QWN0aXZlRE9NT2JqZWN0KiBpbXAgPSBW
OFRlc3RBY3RpdmVET01PYmplY3Q6OnRvTmF0aXZlKGhvbGRlcik7CiAgICAgaWYgKCFCaW5kaW5n
U2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShCaW5kaW5nU3RhdGU6Omluc3RhbmNl
KCksIGltcC0+ZnJhbWUoKSwgRG9Ob3RSZXBvcnRTZWN1cml0eUVycm9yKSkgewotICAgICAgICBz
dGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRl
ID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9u
VGVtcGxhdGU6Ok5ldyhUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbDo6cG9zdE1lc3NhZ2VD
YWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4VGVzdEFjdGl2ZURP
TU9iamVjdDo6R2V0UmF3VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCkpKSkpOworICAgICAgICBz
dGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRl
ID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaW5mby5HZXRJc29s
YXRlKCksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdEFjdGl2ZURPTU9iamVjdFY4SW50
ZXJuYWw6OnBvc3RNZXNzYWdlQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6
Ok5ldyhWOFRlc3RBY3RpdmVET01PYmplY3Q6OkdldFJhd1RlbXBsYXRlKGluZm8uR2V0SXNvbGF0
ZSgpKSkpKTsKICAgICAgICAgcmV0dXJuIHNoYXJlZFRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwog
ICAgIH0KIApAQCAtMTY4LDcgKzE2OCw3IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBWOFRlc3RBY3RpdmVET01PYmplY3Q6OkdldFJhd1RlbXBsYXRlKHY4OjpJCiAgICAg
ICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNj
b3BlOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9IGNy
ZWF0ZVJhd1RlbXBsYXRlKCk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IHRlbXBsID0gY3JlYXRlUmF3VGVtcGxhdGUoaXNvbGF0ZSk7CiAgICAgZGF0YS0+cmF3VGVt
cGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAppbmRleCA3MzBjYzI5MWNjN2FhZTFiNWRj
MjY1ZjhmYzNmMDA1NTZhMzc5ZTQ1Li4xMzhjMzc4M2RjYjQ4Yjc3NTNlYjRlNGRhN2MxMzFhYjQx
YzBjNjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKQEAgLTEwNiw3
ICsxMDYsNyBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXI6OkdldFJhd1RlbXBsYXRlKHY4OgogICAgICAgICByZXR1cm4gcmVzdWx0
LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKLSAgICB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPSBjcmVhdGVSYXdUZW1wbGF0ZSgp
OworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9IGNyZWF0
ZVJhd1RlbXBsYXRlKGlzb2xhdGUpOwogICAgIGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuYWRkKCZp
bmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29u
c3RydWN0b3IuY3BwCmluZGV4IGE4YWFjZjc4YWY0NjUwOTQwZWY1ZGVlNTBhMmZhYWRmYjhkNWIw
YjAuLjM3YzBjNWM5OTUyYjYxNDVmNTI3MGZjMWYzNWQ5ZGFmYzJkMzU2MzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6R2V0UmF3
VGVtcGxhdGUodjg6OgogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpI
YW5kbGVTY29wZSBoYW5kbGVTY29wZTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gdGVtcGwgPSBjcmVhdGVSYXdUZW1wbGF0ZSgpOworICAgIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9IGNyZWF0ZVJhd1RlbXBsYXRlKGlzb2xhdGUp
OwogICAgIGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0
dXJuIHRlbXBsOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggMGEzN2VhZGJlMmRj
NjY2ODQ4NzJiNzZmYjM0OWJmNTRiZjUxMDJhNS4uYTk2NDIxNTlkMjFiZTI2NjI4ZmU2NThkNmYw
Y2U5NDRhYzg4MWE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0xNjcsNyArMTY3
LDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV2ZW50VGFy
Z2V0OjpHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGEKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFs
dWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7Ci0gICAgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0gY3JlYXRlUmF3VGVtcGxhdGUoKTsKKyAg
ICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPSBjcmVhdGVSYXdU
ZW1wbGF0ZShpc29sYXRlKTsKICAgICBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywg
dGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHAKaW5kZXgg
NmIwODY1N2JkOWU5MTE5ZDExNzVhNmQ1MTNkNTQ1Mzk3MGYyNWQwZC4uMTFiZmFiMGIyMDQ2Yjk0
M2Y1ODIzZWNhNjViMmRkNDc1MTE3MjJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHAKQEAgLTk3
LDcgKzk3LDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV4
Y2VwdGlvbjo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUKICAgICAgICAgcmV0dXJuIHJlc3Vs
dC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7Ci0gICAgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0gY3JlYXRlUmF3VGVtcGxhdGUo
KTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPSBjcmVh
dGVSYXdUZW1wbGF0ZShpc29sYXRlKTsKICAgICBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmFkZCgm
aW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAK
aW5kZXggZWE5ZWMwODI2OWQyMzU0MjhhNzQwMWMzN2VlZmFmMzBlMjVkOTMxMS4uYTY1YzY5MTZi
OWJjMzY4MGYxN2U2MGE3ZDY0YzI0MTdhMGJlYjBkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAK
QEAgLTMyMiw3ICszMjIsNyBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
VjhUZXN0SW50ZXJmYWNlOjpHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZQogICAgICAgICByZXR1
cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKLSAg
ICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPSBjcmVhdGVSYXdU
ZW1wbGF0ZSgpOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1w
bCA9IGNyZWF0ZVJhd1RlbXBsYXRlKGlzb2xhdGUpOwogICAgIGRhdGEtPnJhd1RlbXBsYXRlTWFw
KCkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCmluZGV4IDljNGU4YTVjZDZhOGZhNDZk
MzFmNmM5NmEzMGYzOWY3NzEzYTE3ZmMuLmViZjkzNmI0YWFmNTI5ZGFlYzFhYTM1OGRjZTBkMTI2
MTFlNWY4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5j
cHAKQEAgLTEwNiw3ICsxMDYsNyBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6R2V0UmF3VGVtcGxhdAogICAgICAgICBy
ZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsK
LSAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPSBjcmVhdGVS
YXdUZW1wbGF0ZSgpOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0
ZW1wbCA9IGNyZWF0ZVJhd1RlbXBsYXRlKGlzb2xhdGUpOwogICAgIGRhdGEtPnJhd1RlbXBsYXRl
TWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29u
c3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCmluZGV4IGY5MjE0MjkxZmM5MmM1ZGE4ZTYwNDAwYzE4
MjhhYTJiMjM1ZGI5MzkuLmQyNjI3ZjlmMmExOGZkYjEzMzY0ZWEzZjZkMjQyMmI2MDlmYWNlNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3ROYW1lZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKQEAgLTExMiw3ICsxMTIsNyBA
QCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0TmFtZWRDb25zdHJ1
Y3RvckNvbnN0cnVjdG9yOjpHZXRUZW1wbAogICAgIHJlc3VsdC0+U2V0Q2xhc3NOYW1lKHY4OjpT
dHJpbmc6Ok5ld1N5bWJvbCgiVGVzdE5hbWVkQ29uc3RydWN0b3IiKSk7CiAgICAgcmVzdWx0LT5J
bmhlcml0KFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6OkdldFRlbXBsYXRlKGlzb2xhdGUpKTsKIAot
ICAgIGNhY2hlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
OjpOZXcocmVzdWx0KTsKKyAgICBjYWNoZWRUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPjo6TmV3KGlzb2xhdGUsIHJlc3VsdCk7CiAgICAgcmV0dXJuIGNhY2hl
ZFRlbXBsYXRlOwogfQogCkBAIC0xNDAsNyArMTQwLDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6OkdldFJhd1RlbXBsYXRlKHY4
OjoKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUg
aGFuZGxlU2NvcGU7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRl
bXBsID0gY3JlYXRlUmF3VGVtcGxhdGUoKTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gdGVtcGwgPSBjcmVhdGVSYXdUZW1wbGF0ZShpc29sYXRlKTsKICAgICBkYXRh
LT5yYXdUZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3ROb2RlLmNwcAppbmRleCAwYzlmMWVlMDdjZDQwMzJkYzlmNzU3MmMwOGI3MjdhNGFjODYy
Y2IzLi5jYjU2YjdjMTRlY2IyMzU2OWMwZTdiZGQxNGNlZTU3N2JiNGFmNDRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUu
Y3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IFY4VGVzdE5vZGU6OkdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKiBpc28KICAgICAgICAg
cmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7
Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0gY3JlYXRl
UmF3VGVtcGxhdGUoKTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
dGVtcGwgPSBjcmVhdGVSYXdUZW1wbGF0ZShpc29sYXRlKTsKICAgICBkYXRhLT5yYXdUZW1wbGF0
ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAK
aW5kZXggNTNkYmI1OWM2OWMwZmNmNGVjYTQxYjgzNGVhZmNlN2I0ODg3ZDc5Zi4uYWRjNzA5OGIy
Y2E0MmMxMGYyYjY0MjgxYzI4YmE0NGU0ODFmZDRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKQEAgLTIyMTgsNyAr
MjIxOCw3IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RPYmo6
OkdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sCiAgICAgICAgIHJldHVybiByZXN1bHQt
PnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwotICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9IGNyZWF0ZVJhd1RlbXBsYXRlKCk7
CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0gY3JlYXRl
UmF3VGVtcGxhdGUoaXNvbGF0ZSk7CiAgICAgZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5hZGQoJmlu
Zm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggZDU4NzQwMjQyNTc5NjA5NmFmYThkNTliNzU5
YmUzY2RjMmUwZjlkMC4uODg2NTNkOTE0Yjc3OGQ1MDAyOGQ1MzNiM2Y1NTc2YWM3ZjE4ZThlYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAtMTYx
LDcgKzE2MSw3IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzOjpHZXRSYXdUZW1wbGF0CiAgICAgICAgIHJldHVybiByZXN1
bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwotICAgIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9IGNyZWF0ZVJhd1RlbXBsYXRl
KCk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0gY3Jl
YXRlUmF3VGVtcGxhdGUoaXNvbGF0ZSk7CiAgICAgZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5hZGQo
JmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IGVlZjg2MjA0
ODI2OGRhNTMwOWVjM2M2ZjU5YzI4MjEyZWU4NGM3YTQuLmY3NmU3ZGM5MTVkZjM1NDA2NzA1Nzgz
ZWZiYzM0MmNkODYzOTJiYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC0yNzksNyArMjc5LDcgQEAgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZTo6R2V0UmEKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6
SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IHRlbXBsID0gY3JlYXRlUmF3VGVtcGxhdGUoKTsKKyAgICB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPSBjcmVhdGVSYXdUZW1wbGF0ZShpc29sYXRl
KTsKICAgICBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJl
dHVybiB0ZW1wbDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RP
TVdyYXBwZXJNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJNYXAu
aAppbmRleCBhZjBmODk2NzI3NmRlM2RiZDBkNDJjMTQxYmU5MTAwZDAxOGMyZmI3Li5mOThjZDM2
ZTVjZmFmNWI1YjFhNjdhYTMwZDk1Y2Q1MGNkNWNmNTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvRE9NV3JhcHBlck1hcC5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgZm9yICh0eXBlbmFtZSBNYXBUeXBlOjppdGVyYXRvciBpdCA9IG1fbWFwLmJlZ2luKCk7IGl0
ICE9IG1fbWFwLmVuZCgpOyArK2l0KSB7CiAgICAgICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6
T2JqZWN0PiB3cmFwcGVyID0gaXQtPnZhbHVlOwogICAgICAgICAgICAgdG9XcmFwcGVyVHlwZUlu
Zm8od3JhcHBlciktPmRlcmVmT2JqZWN0KGl0LT5rZXkpOwotICAgICAgICAgICAgd3JhcHBlci5E
aXNwb3NlKCk7CisgICAgICAgICAgICB3cmFwcGVyLkRpc3Bvc2UobV9pc29sYXRlKTsKICAgICAg
ICAgICAgIHdyYXBwZXIuQ2xlYXIoKTsKICAgICAgICAgfQogICAgICAgICBtX21hcC5jbGVhcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5jcHAKaW5k
ZXggM2FlNzFkNGQ5MGE4ZDg0ZTExYWVhM2FhNzZkNTQ5Y2U4MGZkZGExMi4uNmM3NDQxM2M4ZmVk
MWQ1MjRlNTFiM2ExY2YyZGUxNzEyYTNlNGE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9ET01XcmFwcGVyV29ybGQuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgRE9NV3Jh
cHBlcldvcmxkOjphc3NlcnRDb250ZXh0SGFzQ29ycmVjdFByb3RvdHlwZSh2ODo6SGFuZGxlPHY4
OjpDb250ZXh0PiBjCiAKIHN0YXRpYyB2b2lkIGlzb2xhdGVkV29ybGRXZWFrQ2FsbGJhY2sodjg6
Oklzb2xhdGUqIGlzb2xhdGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gb2JqZWN0LCB2b2lk
KiBwYXJhbWV0ZXIpCiB7Ci0gICAgb2JqZWN0LkRpc3Bvc2UoKTsKKyAgICBvYmplY3QuRGlzcG9z
ZShpc29sYXRlKTsKICAgICBvYmplY3QuQ2xlYXIoKTsKICAgICBzdGF0aWNfY2FzdDxET01XcmFw
cGVyV29ybGQqPihwYXJhbWV0ZXIpLT5kZXJlZigpOwogfQpAQCAtODQsNyArODQsOCBAQCB2b2lk
IERPTVdyYXBwZXJXb3JsZDo6bWFrZUNvbnRleHRXZWFrKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+
IGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKGlzSXNvbGF0ZWRXb3JsZCgpKTsKICAgICBBU1NFUlQo
aXNvbGF0ZWQoY29udGV4dCkgPT0gdGhpcyk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6OkNvbnRl
eHQ+OjpOZXcoY29udGV4dCkuTWFrZVdlYWsoY29udGV4dC0+R2V0SXNvbGF0ZSgpLCB0aGlzLCBp
c29sYXRlZFdvcmxkV2Vha0NhbGxiYWNrKTsKKyAgICB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IGNv
bnRleHQtPkdldElzb2xhdGUoKTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD46Ok5l
dyhpc29sYXRlLCBjb250ZXh0KS5NYWtlV2Vhayhpc29sYXRlLCB0aGlzLCBpc29sYXRlZFdvcmxk
V2Vha0NhbGxiYWNrKTsKICAgICAvLyBNYXRjaGluZyBkZXJlZiBpcyBpbiB3ZWFrIGNhbGxiYWNr
LgogICAgIHRoaXMtPnJlZigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvTlBWOE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9OUFY4T2Jq
ZWN0LmNwcAppbmRleCBlYjgxMTQ0NGE4MTM0YWFlNTIzZjk1NTY1MGY2NDVhNTc5M2NjYTM0Li41
YTg2ZjY0YjE3Y2NkMzY2YmY3YWZjZDcwODI0ZTcxY2JlNWFkYWZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcApAQCAtOTIsNyArOTIsNyBAQCBzdGF0aWMgdm9p
ZCBmcmVlVjhOUE9iamVjdChOUE9iamVjdCogbnBPYmplY3QpCiAgICAgICAgICAgICAgICAgdjhO
UE9iamVjdE1hcC0+cmVtb3ZlKHY4T2JqZWN0SGFzaCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAg
djhOcE9iamVjdC0+djhPYmplY3QuRGlzcG9zZSgpOworICAgIHY4TnBPYmplY3QtPnY4T2JqZWN0
LkRpc3Bvc2Uodjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKSk7CiAgICAgdjhOcE9iamVjdC0+djhP
YmplY3QuQ2xlYXIoKTsKICAgICBmcmVlKHY4TnBPYmplY3QpOwogfQpAQCAtMTY2LDcgKzE2Niw3
IEBAIE5QT2JqZWN0KiBucENyZWF0ZVY4U2NyaXB0T2JqZWN0KE5QUCBucHAsIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gb2JqZWN0LCBET01XaW5kCiAgICAgICAgIG9iamVjdFZlY3RvciA9ICZpdGVy
LT52YWx1ZTsKICAgICB9CiAgICAgVjhOUE9iamVjdCogdjhucE9iamVjdCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8VjhOUE9iamVjdCo+KF9OUE5fQ3JlYXRlT2JqZWN0KG5wcCwgJlY4TlBPYmplY3RDbGFz
cykpOwotICAgIHY4bnBPYmplY3QtPnY4T2JqZWN0ID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVj
dD46Ok5ldyhvYmplY3QpOworICAgIHY4bnBPYmplY3QtPnY4T2JqZWN0ID0gdjg6OlBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD46Ok5ldyh2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpLCBvYmplY3QpOwog
ICAgIHY4bnBPYmplY3QtPnJvb3RPYmplY3QgPSByb290OwogCiAgICAgaWYgKG9iamVjdFZlY3Rv
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjaGVkdWxlZEFjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY2hlZHVsZWRBY3Rpb24uY3BwCmlu
ZGV4IDQyNzFmOWVlNjViNjYwNGU2MjllNDcyNzhhZTU5MDkyM2E3YzA2ODguLjM4MWUxNDYyMjc2
NjJlNzllYjdmNjczNWMxNWNhY2I2MTZlYzQ1NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjaGVkdWxlZEFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmNwcApAQCAtNTQsMTUgKzU0LDE2IEBAIFNjaGVkdWxl
ZEFjdGlvbjo6U2NoZWR1bGVkQWN0aW9uKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQs
IHY4OjpIYW5kbGU8djg6CiAgICAgLCBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQogICAgICwgbV9jb2Rl
KFN0cmluZygpLCBLVVJMKCksIFRleHRQb3NpdGlvbjo6YmVsb3dSYW5nZVBvc2l0aW9uKCkpCiB7
CisgICAgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSBtX2NvbnRleHQtPkdldElzb2xhdGUoKTsKICAg
ICBtX2FyZ3MucmVzZXJ2ZUNhcGFjaXR5KGFyZ2MpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
YXJnYzsgKytpKQotICAgICAgICBtX2FyZ3MuYXBwZW5kKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1
ZT46Ok5ldyhhcmd2W2ldKSk7CisgICAgICAgIG1fYXJncy5hcHBlbmQodjg6OlBlcnNpc3RlbnQ8
djg6OlZhbHVlPjo6TmV3KGlzb2xhdGUsIGFyZ3ZbaV0pKTsKIH0KIAogU2NoZWR1bGVkQWN0aW9u
Ojp+U2NoZWR1bGVkQWN0aW9uKCkKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYXJn
cy5zaXplKCk7ICsraSkgewotICAgICAgICBtX2FyZ3NbaV0uRGlzcG9zZSgpOworICAgICAgICBt
X2FyZ3NbaV0uRGlzcG9zZShtX2NvbnRleHQtPkdldElzb2xhdGUoKSk7CiAgICAgICAgIG1fYXJn
c1tpXS5DbGVhcigpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Njb3BlZFBlcnNpc3RlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
b3BlZFBlcnNpc3RlbnQuaAppbmRleCBmY2NmNGFhNTliODg5YzllMjE2NjY5MThiZTY0ZmY2NmRl
MDVlMTQxLi4xNzYxMDM2YTIzM2FmYjdiMzZhMGNkY2JjMzljOThlM2M2NDc5MjQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY29wZWRQZXJzaXN0ZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NvcGVkUGVyc2lzdGVudC5oCkBAIC00Myw3ICs0
Myw3IEBAIHB1YmxpYzoKICAgICBTY29wZWRQZXJzaXN0ZW50KCkgeyB9CiAKICAgICBleHBsaWNp
dCBTY29wZWRQZXJzaXN0ZW50KHY4OjpIYW5kbGU8VD4gaGFuZGxlKQotICAgICAgICA6IG1faGFu
ZGxlKHY4OjpQZXJzaXN0ZW50PFQ+OjpOZXcoaGFuZGxlKSkKKyAgICAgICAgOiBtX2hhbmRsZSh2
ODo6UGVyc2lzdGVudDxUPjo6TmV3KHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCksIGhhbmRsZSkp
CiAgICAgewogICAgIH0KIApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXQo
djg6OkhhbmRsZTxUPiBoYW5kbGUpCiAgICAgewogICAgICAgICBjbGVhcigpOwotICAgICAgICBt
X2hhbmRsZSA9IHY4OjpQZXJzaXN0ZW50PFQ+OjpOZXcoaGFuZGxlKTsKKyAgICAgICAgbV9oYW5k
bGUgPSB2ODo6UGVyc2lzdGVudDxUPjo6TmV3KHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCksIGhh
bmRsZSk7CiAgICAgfQogCiAgICAgdm9pZCBhZG9wdCh2ODo6UGVyc2lzdGVudDxUPiBoYW5kbGUp
CkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmIChtX2hhbmRsZS5J
c0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1faGFuZGxlLkRpc3Bvc2Uo
KTsKKyAgICAgICAgbV9oYW5kbGUuRGlzcG9zZSh2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpKTsK
ICAgICAgICAgbV9oYW5kbGUuQ2xlYXIoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJsZS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0V3JhcHBhYmxlLmgKaW5kZXggMTZiYzc4YTk0NGM3MTIyODA1OTUzYzA4
YzBlY2I5NmIwZDBlZWYyNC4uYzM4YjhjMjZjOThlMjljNjJmYzk3MjM2OGU1MDI2MWNmMjFmODM2
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0V3JhcHBhYmxl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0V3JhcHBhYmxlLmgKQEAg
LTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0V3JhcHBlcih2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IHdyYXBwZXIsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBjb25zdCBXcmFwcGVyQ29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICB7CiAgICAgICAgIEFTU0VSVChtX21hc2tl
ZFdyYXBwZXIuSXNFbXB0eSgpKTsKLSAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4g
cGVyc2lzdGVudCA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcod3JhcHBlcik7Cisg
ICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHBlcnNpc3RlbnQgPSB2ODo6UGVyc2lz
dGVudDx2ODo6T2JqZWN0Pjo6TmV3KGlzb2xhdGUsIHdyYXBwZXIpOwogICAgICAgICBjb25maWd1
cmF0aW9uLmNvbmZpZ3VyZVdyYXBwZXIocGVyc2lzdGVudCwgaXNvbGF0ZSk7CiAgICAgICAgIHBl
cnNpc3RlbnQuTWFrZVdlYWsoaXNvbGF0ZSwgdGhpcywgd2Vha0NhbGxiYWNrKTsKICAgICAgICAg
bV9tYXNrZWRXcmFwcGVyID0gbWFza09yVW5tYXNrUG9pbnRlcigqcGVyc2lzdGVudCk7CkBAIC02
MiwxMSArNjIsMTEgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBpbmxpbmUgdm9p
ZCBkaXNwb3NlV3JhcHBlcih2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IHZhbHVlKQorICAgIGlu
bGluZSB2b2lkIGRpc3Bvc2VXcmFwcGVyKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gdmFsdWUs
IHY4OjpJc29sYXRlKiBpc29sYXRlKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFtX21hc2tlZFdy
YXBwZXIuSXNFbXB0eSgpKTsKICAgICAgICAgQVNTRVJUKCp2YWx1ZSA9PSBtYXNrT3JVbm1hc2tQ
b2ludGVyKCptX21hc2tlZFdyYXBwZXIpKTsKLSAgICAgICAgdmFsdWUuRGlzcG9zZSgpOworICAg
ICAgICB2YWx1ZS5EaXNwb3NlKGlzb2xhdGUpOwogICAgICAgICBtX21hc2tlZFdyYXBwZXIuQ2xl
YXIoKTsKICAgICB9CiAKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgQVNTRVJU
KHZhbHVlLT5Jc09iamVjdCgpKTsKICAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4g
d3JhcHBlciA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKTsKICAgICAg
ICAgQVNTRVJUKGtleS0+d3JhcHBlcigpID09IHdyYXBwZXIpOwotICAgICAgICBrZXktPmRpc3Bv
c2VXcmFwcGVyKHZhbHVlKTsKKyAgICAgICAga2V5LT5kaXNwb3NlV3JhcHBlcih2YWx1ZSwgaXNv
bGF0ZSk7CiAKICAgICAgICAgLy8gTm90ZTogfG9iamVjdHwgbWlnaHQgbm90IGJlIGVxdWFsIHRv
IHxrZXl8LCBlLmcuLCBpZiBTY3JpcHRXcmFwcGFibGUgaXNuJ3QgYSBsZWZ0LW1vc3QgYmFzZSBj
bGFzcy4KICAgICAgICAgdm9pZCogb2JqZWN0ID0gdG9OYXRpdmUod3JhcHBlcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAppbmRleCAxMWUzMmI0MmRhNzg1OWNkZDM0
MjJhMjIxNTQ1NzcwZjk3MWEyN2Q0Li5kZTdjMTgyNTczYmQxMmE1ZDdmOTg2OTk2MjVmNmMxYzhk
NmViN2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKQEAgLTE3
NCwxMSArMTc0LDExIEBAIHVpbnQzMl90IHRvVUludDMyKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2
YWx1ZSwgYm9vbCYgb2spCiAgICAgcmV0dXJuIHVpbnRWYWx1ZS0+VmFsdWUoKTsKIH0KIAotdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNyZWF0ZVJhd1RlbXBsYXRlKCkKK3Y4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjcmVhdGVSYXdUZW1wbGF0ZSh2ODo6
SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CiAgICAgdjg6
OkxvY2FsPHY4OjpGdW5jdGlvblRlbXBsYXRlPiByZXN1bHQgPSB2ODo6RnVuY3Rpb25UZW1wbGF0
ZTo6TmV3KFY4T2JqZWN0Q29uc3RydWN0b3I6OmlzVmFsaWRDb25zdHJ1Y3Rvck1vZGUpOwotICAg
IHJldHVybiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyhyZXN1bHQp
OworICAgIHJldHVybiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyhp
c29sYXRlLCByZXN1bHQpOwogfSAgICAgICAgCiAKIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4g
dG9ET01TdHJpbmdMaXN0KHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUq
IGlzb2xhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRp
bmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCmluZGV4IDE3ZWZh
YTI1NTQ4MDE3YTZiZmNhMjg2YzZiMzdmZDE0MWZjYzJjOGEuLjMyZjdjMjFhNDBiYTM2ZTJjM2Vm
NjExYjA2MmMwZjY1YWU1ODhhNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4QmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGlu
Zy5oCkBAIC00MjEsNyArNDIxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICByZXR1
cm4gaXNmaW5pdGUodmFsdWUpID8gdjg6OkRhdGU6Ok5ldyh2YWx1ZSkgOiB2OE51bGxXaXRoQ2hl
Y2soaXNvbGF0ZSk7CiAgICAgfQogCi0gICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IGNyZWF0ZVJhd1RlbXBsYXRlKCk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IGNyZWF0ZVJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKik7CiAKICAgICBQYXNz
UmVmUHRyPERPTVN0cmluZ0xpc3Q+IHRvRE9NU3RyaW5nTGlzdCh2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4sIHY4OjpJc29sYXRlKik7CiAgICAgUGFzc1JlZlB0cjxYUGF0aE5TUmVzb2x2ZXI+IHRvWFBh
dGhOU1Jlc29sdmVyKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcAppbmRleCAyODJjNDEw
N2I1YjMzOTkwYjdkZDFlZTE5MWM4MmFmZGFjYWRmMTVlLi41MWNiNGU4YWYzNDMzYjc2YzQ1MGNl
N2YzN2M1NTA4ODZjNWU5MDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEdDQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhH
Q0NvbnRyb2xsZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgcHVibGljOgogCiAgICAgICAgIEFT
U0VSVChWOERPTVdyYXBwZXI6Om1heWJlRE9NV3JhcHBlcih2YWx1ZSkpOwogCi0gICAgICAgIGlm
ICh2YWx1ZS5Jc0luZGVwZW5kZW50KCkpCisgICAgICAgIGlmICh2YWx1ZS5Jc0luZGVwZW5kZW50
KG1faXNvbGF0ZSkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgV3JhcHBlclR5cGVJ
bmZvKiB0eXBlID0gdG9XcmFwcGVyVHlwZUluZm8od3JhcHBlcik7CkBAIC0yMjMsNyArMjIzLDcg
QEAgcHVibGljOgogICAgICAgICBpZiAoY2xhc3NJZCA9PSB2OERPTU5vZGVDbGFzc0lkKSB7CiAg
ICAgICAgICAgICBVTlVTRURfUEFSQU0obV9pc29sYXRlKTsKICAgICAgICAgICAgIEFTU0VSVChW
OE5vZGU6Okhhc0luc3RhbmNlKHdyYXBwZXIsIG1faXNvbGF0ZSkpOwotICAgICAgICAgICAgQVNT
RVJUKCF3cmFwcGVyLklzSW5kZXBlbmRlbnQoKSk7CisgICAgICAgICAgICBBU1NFUlQoIXdyYXBw
ZXIuSXNJbmRlcGVuZGVudChtX2lzb2xhdGUpKTsKIAogICAgICAgICAgICAgTm9kZSogbm9kZSA9
IHN0YXRpY19jYXN0PE5vZGUqPihvYmplY3QpOwogCkBAIC0yNTQsNyArMjU0LDcgQEAgcHJpdmF0
ZToKIC8vIG1fZWRlbk5vZGVzIHN0b3JlcyBub2RlcyB0aGF0IGhhdmUgd3JhcHBlcnMgdGhhdCBo
YXZlIGJlZW4gY3JlYXRlZCBzaW5jZSB0aGUgbGFzdCBtaW5vci9tYWpvciBHQy4KIFZlY3RvcjxO
b2RlKj4qIFY4R0NDb250cm9sbGVyOjptX2VkZW5Ob2RlcyA9IDA7CiAKLXN0YXRpYyB2b2lkIGdj
VHJlZShOb2RlKiBzdGFydE5vZGUpCitzdGF0aWMgdm9pZCBnY1RyZWUodjg6Oklzb2xhdGUqIGlz
b2xhdGUsIE5vZGUqIHN0YXJ0Tm9kZSkKIHsKICAgICBWZWN0b3I8djg6OlBlcnNpc3RlbnQ8djg6
OlZhbHVlPiwgaW5pdGlhbE5vZGVWZWN0b3JTaXplPiBuZXdTcGFjZVdyYXBwZXJzOwogCkBAIC0y
OTksNyArMjk5LDcgQEAgc3RhdGljIHZvaWQgZ2NUcmVlKE5vZGUqIHN0YXJ0Tm9kZSkKICAgICAv
LyBzdG9yZWQgaW4gbmV3U3BhY2VXcmFwcGVycyBhbmQgYXJlIGV4cGVjdGVkIHRvIGV4aXN0IGlu
IHRoZSBuZXcgc3BhY2Ugb2YgVjguCiAgICAgLy8gV2UgcmVwb3J0IHRob3NlIHdyYXBwZXJzIHRv
IFY4IGFzIGFuIG9iamVjdCBncm91cC4KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5ld1Nw
YWNlV3JhcHBlcnMuc2l6ZSgpOyBpKyspCi0gICAgICAgIG5ld1NwYWNlV3JhcHBlcnNbaV0uTWFy
a1BhcnRpYWxseURlcGVuZGVudCgpOworICAgICAgICBuZXdTcGFjZVdyYXBwZXJzW2ldLk1hcmtQ
YXJ0aWFsbHlEZXBlbmRlbnQoaXNvbGF0ZSk7CiAgICAgaWYgKG5ld1NwYWNlV3JhcHBlcnMuc2l6
ZSgpID4gMCkKICAgICAgICAgdjg6OlY4OjpBZGRPYmplY3RHcm91cCgmbmV3U3BhY2VXcmFwcGVy
c1swXSwgbmV3U3BhY2VXcmFwcGVycy5zaXplKCkpOwogfQpAQCAtMzI2LDggKzMyNiwxMCBAQCB2
b2lkIFY4R0NDb250cm9sbGVyOjpkaWRDcmVhdGVXcmFwcGVyRm9yTm9kZShOb2RlKiBub2RlKQog
CiB2b2lkIFY4R0NDb250cm9sbGVyOjpnY1Byb2xvZ3VlKHY4OjpHQ1R5cGUgdHlwZSwgdjg6OkdD
Q2FsbGJhY2tGbGFncyBmbGFncykKIHsKKyAgICAvLyBJdCB3b3VsZCBiZSBuaWNlIGlmIHRoZSBH
QyBjYWxsYmFja3MgcGFzc2VkIHRoZSBJc29sYXRlIGRpcmVjdGx5Li4uLgorICAgIHY4OjpJc29s
YXRlKiBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBpZiAodHlwZSA9
PSB2ODo6a0dDVHlwZVNjYXZlbmdlKQotICAgICAgICBtaW5vckdDUHJvbG9ndWUoKTsKKyAgICAg
ICAgbWlub3JHQ1Byb2xvZ3VlKGlzb2xhdGUpOwogICAgIGVsc2UgaWYgKHR5cGUgPT0gdjg6OmtH
Q1R5cGVNYXJrU3dlZXBDb21wYWN0KQogICAgICAgICBtYWpvckdDUHJvbG9ndWUoKTsKIApAQCAt
MzM3LDcgKzMzOSw3IEBAIHZvaWQgVjhHQ0NvbnRyb2xsZXI6OmdjUHJvbG9ndWUodjg6OkdDVHlw
ZSB0eXBlLCB2ODo6R0NDYWxsYmFja0ZsYWdzIGZsYWdzKQogICAgIH0KIH0KIAotdm9pZCBWOEdD
Q29udHJvbGxlcjo6bWlub3JHQ1Byb2xvZ3VlKCkKK3ZvaWQgVjhHQ0NvbnRyb2xsZXI6Om1pbm9y
R0NQcm9sb2d1ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICBUUkFDRV9FVkVOVF9CRUdJ
TjAoInY4IiwgIkdDIik7CiAKQEAgLTM0NSw3ICszNDcsNyBAQCB2b2lkIFY4R0NDb250cm9sbGVy
OjptaW5vckdDUHJvbG9ndWUoKQogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZWRl
bk5vZGVzLT5zaXplKCk7IGkrKykgewogICAgICAgICAgICAgQVNTRVJUKCFtX2VkZW5Ob2Rlcy0+
YXQoaSktPndyYXBwZXIoKS5Jc0VtcHR5KCkpOwogICAgICAgICAgICAgaWYgKG1fZWRlbk5vZGVz
LT5hdChpKS0+aXNWOENvbGxlY3RhYmxlRHVyaW5nTWlub3JHQygpKSAvLyBUaGlzIGJyYW5jaCBp
cyBqdXN0IGZvciBwZXJmb3JtYW5jZS4KLSAgICAgICAgICAgICAgICBnY1RyZWUobV9lZGVuTm9k
ZXMtPmF0KGkpKTsKKyAgICAgICAgICAgICAgICBnY1RyZWUoaXNvbGF0ZSwgbV9lZGVuTm9kZXMt
PmF0KGkpKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEdDQ29udHJvbGxlci5oCmluZGV4IDMyZDFhMDhjMzAxNTA5NjhkMDUzOTZhYzc0ZmQwNDUw
M2QxOWNkZGUuLjEwOTE0NzFhNzJhNGFiYjczOWEwMjhkYmFmNGUyNGI4YTMyNGI0MTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuaApAQCAtNDIsNyArNDIs
NyBAQCBjbGFzcyBWOEdDQ29udHJvbGxlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZ2NQ
cm9sb2d1ZSh2ODo6R0NUeXBlLCB2ODo6R0NDYWxsYmFja0ZsYWdzKTsKICAgICBzdGF0aWMgdm9p
ZCBnY0VwaWxvZ3VlKHY4OjpHQ1R5cGUsIHY4OjpHQ0NhbGxiYWNrRmxhZ3MpOwotICAgIHN0YXRp
YyB2b2lkIG1pbm9yR0NQcm9sb2d1ZSgpOworICAgIHN0YXRpYyB2b2lkIG1pbm9yR0NQcm9sb2d1
ZSh2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyB2b2lkIG1pbm9yR0NFcGlsb2d1ZSgpOwogICAg
IHN0YXRpYyB2b2lkIG1ham9yR0NQcm9sb2d1ZSgpOwogICAgIHN0YXRpYyB2b2lkIG1ham9yR0NF
cGlsb2d1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRk
ZW5Qcm9wZXJ0eU5hbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Q
cm9wZXJ0eU5hbWUuY3BwCmluZGV4IDc0YzQ0YjNhYTc1M2QzNjlmMWI3NmRiN2IxMWNmNzVhNTQ0
OGYyOGMuLjVlYjExMmM4NjMwM2QxM2Y4YmRjMGQ0MTdmNjM4MzI5YWQ3YmRkNmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5jcHAK
QEAgLTczLDcgKzczLDcgQEAgdm9pZCBWOEhpZGRlblByb3BlcnR5TmFtZTo6c2V0TmFtZWRIaWRk
ZW5SZWZlcmVuY2Uodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBwYXJlbnQKIHY4OjpQZXJzaXN0ZW50
PHY4OjpTdHJpbmc+IFY4SGlkZGVuUHJvcGVydHlOYW1lOjpjcmVhdGVTdHJpbmcoY29uc3QgY2hh
cioga2V5KQogewogICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKLSAgICByZXR1cm4gdjg6OlBl
cnNpc3RlbnQ8djg6OlN0cmluZz46Ok5ldyh2ODo6U3RyaW5nOjpOZXdTeW1ib2woa2V5KSk7Cisg
ICAgcmV0dXJuIHY4OjpQZXJzaXN0ZW50PHY4OjpTdHJpbmc+OjpOZXcodjg6Oklzb2xhdGU6Okdl
dEN1cnJlbnQoKSwgdjg6OlN0cmluZzo6TmV3U3ltYm9sKGtleSkpOwogfQogCiB9ICAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhM
YXp5RXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOExhenlF
dmVudExpc3RlbmVyLmNwcAppbmRleCA3ODdmNDlkNDE5OTMyZmU5MWIxMzk3YmUyMDQ1MzY4YTk4
MmI5NDI1Li43NzQ4MjI3YWU3NDM1YjgwOWE2MjdlMjU3NDVmOWM2ZTBiZjFjZWMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOExhenlFdmVudExpc3RlbmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOExhenlFdmVudExpc3RlbmVyLmNwcApA
QCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgVjhMYXp5RXZlbnRMaXN0ZW5lcjo6cHJlcGFyZUxpc3Rl
bmVyT2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+JiB0b1N0cmluZ1RlbXBsYXRlID0KICAgICAgICAg
VjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT5sYXp5RXZlbnRMaXN0ZW5lclRvU3RyaW5nVGVt
cGxhdGUoKTsKICAgICBpZiAodG9TdHJpbmdUZW1wbGF0ZS5Jc0VtcHR5KCkpCi0gICAgICAgIHRv
U3RyaW5nVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5l
dyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4TGF6eUV2ZW50TGlzdGVuZXJUb1N0cmluZykp
OworICAgICAgICB0b1N0cmluZ1RlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExhenlF
dmVudExpc3RlbmVyVG9TdHJpbmcpKTsKICAgICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiB0b1N0
cmluZ0Z1bmN0aW9uOwogICAgIGlmICghdG9TdHJpbmdUZW1wbGF0ZS5Jc0VtcHR5KCkpCiAgICAg
ICAgIHRvU3RyaW5nRnVuY3Rpb24gPSB0b1N0cmluZ1RlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcAppbmRleCA0YzlkYjg1MDhj
ZDBhNjZkNmJkZjQ3MGRjYjYzMWQ2OTRlNGY0OGJhLi4yYmZiYmQ4MWVkYTRmZjk1OWNhYzY1NGIw
ZGU4NmNkNDVlMzEyNmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OE5QT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0
LmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBNYXBUeXBl
OjppdGVyYXRvciBpdCA9IG1fbWFwLmZpbmQoa2V5KTsKICAgICAgICAgQVNTRVJUKGl0ICE9IG1f
bWFwLmVuZCgpKTsKLSAgICAgICAgaXQtPnZhbHVlLkRpc3Bvc2UoKTsKKyAgICAgICAgaXQtPnZh
bHVlLkRpc3Bvc2UobV9pc29sYXRlKTsKICAgICAgICAgaXQtPnZhbHVlLkNsZWFyKCk7CiAgICAg
ICAgIG1fbWFwLnJlbW92ZShpdCk7CiAgICAgfQpAQCAtMjUwLDcgKzI1MCw3IEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnBPYmplY3RHZXRQcm9wZXJ0eSh2ODo6TG9jYWw8djg6Ok9i
amVjdD4gc2VsZiwgTlBJCiAgICAgICAgICAgICAvLyBDcmVhdGUgYSBuZXcgdGVtcGxhdGUuCiAg
ICAgICAgICAgICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXAgPSB2ODo6RnVu
Y3Rpb25UZW1wbGF0ZTo6TmV3KCk7CiAgICAgICAgICAgICB0ZW1wLT5TZXRDYWxsSGFuZGxlcihu
cE9iamVjdE1ldGhvZEhhbmRsZXIsIGtleSk7Ci0gICAgICAgICAgICBmdW5jdGlvblRlbXBsYXRl
ID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodGVtcCk7CisgICAg
ICAgICAgICBmdW5jdGlvblRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+OjpOZXcoaXNvbGF0ZSwgdGVtcCk7CiAgICAgICAgICAgICBWOE5QVGVtcGxhdGVNYXA6
OnNoYXJlZEluc3RhbmNlKGlzb2xhdGUpLnNldChpZCwgZnVuY3Rpb25UZW1wbGF0ZSk7CiAgICAg
ICAgIH0KIApAQCAtNDI4LDggKzQyOCw5IEBAIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBjcmVhdGVW
OE9iamVjdEZvck5QT2JqZWN0KE5QT2JqZWN0KiBvYmplY3QsIE5QT2JqZWN0KiByb290CiAgICAg
Ly8gRklYTUU6IHdlIHNob3VsZCBjcmVhdGUgYSBXcmFwcGVyIHR5cGUgYXMgYSBzdWJjbGFzcyBv
ZiBKU09iamVjdC4gSXQgaGFzIHR3byBpbnRlcm5hbCBmaWVsZHMsIGZpZWxkIDAgaXMgdGhlIHdy
YXBwZWQKICAgICAvLyBwb2ludGVyLCBhbmQgZmllbGQgMSBpcyB0aGUgdHlwZS4gVGhlcmUgc2hv
dWxkIGJlIGFuIGFwaSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdW51c2VkIHR5cGUgaWQuIFRoZSBz
YW1lIFdyYXBwZXIgdHlwZQogICAgIC8vIGNhbiBiZSB1c2VkIGJ5IERPTSBiaW5kaW5ncy4KKyAg
ICB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCk7CiAgICAg
aWYgKG5wT2JqZWN0RGVzYy5Jc0VtcHR5KCkpIHsKLSAgICAgICAgbnBPYmplY3REZXNjID0gdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxh
dGU6Ok5ldygpKTsKKyAgICAgICAgbnBPYmplY3REZXNjID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldygp
KTsKICAgICAgICAgbnBPYmplY3REZXNjLT5JbnN0YW5jZVRlbXBsYXRlKCktPlNldEludGVybmFs
RmllbGRDb3VudChucE9iamVjdEludGVybmFsRmllbGRDb3VudCk7CiAgICAgICAgIG5wT2JqZWN0
RGVzYy0+SW5zdGFuY2VUZW1wbGF0ZSgpLT5TZXROYW1lZFByb3BlcnR5SGFuZGxlcihucE9iamVj
dE5hbWVkUHJvcGVydHlHZXR0ZXIsIG5wT2JqZWN0TmFtZWRQcm9wZXJ0eVNldHRlciwgbnBPYmpl
Y3RRdWVyeVByb3BlcnR5LCAwLCBucE9iamVjdE5hbWVkUHJvcGVydHlFbnVtZXJhdG9yKTsKICAg
ICAgICAgbnBPYmplY3REZXNjLT5JbnN0YW5jZVRlbXBsYXRlKCktPlNldEluZGV4ZWRQcm9wZXJ0
eUhhbmRsZXIobnBPYmplY3RJbmRleGVkUHJvcGVydHlHZXR0ZXIsIG5wT2JqZWN0SW5kZXhlZFBy
b3BlcnR5U2V0dGVyLCAwLCAwLCBucE9iamVjdEluZGV4ZWRQcm9wZXJ0eUVudW1lcmF0b3IpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJDb250ZXh0RGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRhLmNwcAppbmRl
eCAwNTkxMDkwZDI0YWJjM2U2MWY3MzJkOGIzYjcxYjFhMTQzMzA4ZWM4Li5iMzkyMzIzYThmZGU3
ZWM3NGEzM2YwMmFhOTVjNjE2MmVhODY1NjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOFBlckNvbnRleHREYXRhLmNwcApAQCAtMzksMTMgKzM5LDE0IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIHZvaWQgVjhQZXJDb250ZXh0RGF0YTo6ZGlzcG9zZSgpCiB7CiAgICAgdjg6
OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworICAgIHY4OjpJc29sYXRlKiBpc29sYXRlID0gbV9j
b250ZXh0LT5HZXRJc29sYXRlKCk7CiAgICAgbV9jb250ZXh0LT5TZXRBbGlnbmVkUG9pbnRlcklu
RW1iZWRkZXJEYXRhKHY4Q29udGV4dFBlckNvbnRleHREYXRhSW5kZXgsIDApOwogCiAgICAgewog
ICAgICAgICBXcmFwcGVyQm9pbGVycGxhdGVNYXA6Oml0ZXJhdG9yIGl0ID0gbV93cmFwcGVyQm9p
bGVycGxhdGVzLmJlZ2luKCk7CiAgICAgICAgIGZvciAoOyBpdCAhPSBtX3dyYXBwZXJCb2lsZXJw
bGF0ZXMuZW5kKCk7ICsraXQpIHsKICAgICAgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmpl
Y3Q+IHdyYXBwZXIgPSBpdC0+dmFsdWU7Ci0gICAgICAgICAgICB3cmFwcGVyLkRpc3Bvc2UoKTsK
KyAgICAgICAgICAgIHdyYXBwZXIuRGlzcG9zZShpc29sYXRlKTsKICAgICAgICAgICAgIHdyYXBw
ZXIuQ2xlYXIoKTsKICAgICAgICAgfQogICAgICAgICBtX3dyYXBwZXJCb2lsZXJwbGF0ZXMuY2xl
YXIoKTsKQEAgLTU1LDcgKzU2LDcgQEAgdm9pZCBWOFBlckNvbnRleHREYXRhOjpkaXNwb3NlKCkK
ICAgICAgICAgQ29uc3RydWN0b3JNYXA6Oml0ZXJhdG9yIGl0ID0gbV9jb25zdHJ1Y3Rvck1hcC5i
ZWdpbigpOwogICAgICAgICBmb3IgKDsgaXQgIT0gbV9jb25zdHJ1Y3Rvck1hcC5lbmQoKTsgKytp
dCkgewogICAgICAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uPiB3cmFwcGVyID0g
aXQtPnZhbHVlOwotICAgICAgICAgICAgd3JhcHBlci5EaXNwb3NlKCk7CisgICAgICAgICAgICB3
cmFwcGVyLkRpc3Bvc2UoaXNvbGF0ZSk7CiAgICAgICAgICAgICB3cmFwcGVyLkNsZWFyKCk7CiAg
ICAgICAgIH0KICAgICAgICAgbV9jb25zdHJ1Y3Rvck1hcC5jbGVhcigpOwpAQCAtMTAyLDcgKzEw
Myw3IEBAIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBWOFBlckNvbnRleHREYXRhOjpjcmVhdGVXcmFw
cGVyRnJvbUNhY2hlU2xvd0Nhc2UoV3JhcHBlclR5CiAgICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlv
bj4gZnVuY3Rpb24gPSBjb25zdHJ1Y3RvckZvclR5cGUodHlwZSk7CiAgICAgdjg6OkxvY2FsPHY4
OjpPYmplY3Q+IGluc3RhbmNlID0gVjhPYmplY3RDb25zdHJ1Y3Rvcjo6bmV3SW5zdGFuY2UoZnVu
Y3Rpb24pOwogICAgIGlmICghaW5zdGFuY2UuSXNFbXB0eSgpKSB7Ci0gICAgICAgIG1fd3JhcHBl
ckJvaWxlcnBsYXRlcy5zZXQodHlwZSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhp
bnN0YW5jZSkpOworICAgICAgICBtX3dyYXBwZXJCb2lsZXJwbGF0ZXMuc2V0KHR5cGUsIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcobV9jb250ZXh0LT5HZXRJc29sYXRlKCksIGluc3Rh
bmNlKSk7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZS0+Q2xvbmUoKTsKICAgICB9CiAgICAgcmV0
dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0PigpOwpAQCAtMTMwLDcgKzEzMSw3IEBAIHY4OjpMb2Nh
bDx2ODo6RnVuY3Rpb24+IFY4UGVyQ29udGV4dERhdGE6OmNvbnN0cnVjdG9yRm9yVHlwZVNsb3dD
YXNlKFdyYXBwZXJUeXBlCiAgICAgICAgICAgICBwcm90b3R5cGVPYmplY3QtPlNldFByb3RvdHlw
ZShtX2Vycm9yUHJvdG90eXBlLmdldCgpKTsKICAgICB9CiAKLSAgICBtX2NvbnN0cnVjdG9yTWFw
LnNldCh0eXBlLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb24+OjpOZXcoZnVuY3Rpb24pKTsK
KyAgICBtX2NvbnN0cnVjdG9yTWFwLnNldCh0eXBlLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b24+OjpOZXcobV9jb250ZXh0LT5HZXRJc29sYXRlKCksIGZ1bmN0aW9uKSk7CiAKICAgICByZXR1
cm4gZnVuY3Rpb247CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OFZhbHVlQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhWYWx1ZUNhY2hl
LmNwcAppbmRleCBhZDk2NmZhYTNjZDdkYTdhZjc3YTUzYmFmYzI1ZWNhNDA2YjA1ZGY1Li41Yzg5
MWFiNDc1NjVkNDliNjg3ODdkOWEyNzRlYjA4YTA5ZDRkZGMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOFZhbHVlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4VmFsdWVDYWNoZS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgc3RhdGljIHZv
aWQgY2FjaGVkU3RyaW5nQ2FsbGJhY2sodjg6Oklzb2xhdGUqIGlzb2xhdGUsIHY4OjpQZXJzaXN0
ZW50PHY4OjpWYWx1ZT4KIHsKICAgICBTdHJpbmdJbXBsKiBzdHJpbmdJbXBsID0gc3RhdGljX2Nh
c3Q8U3RyaW5nSW1wbCo+KHBhcmFtZXRlcik7CiAgICAgVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVu
dCgpLT5zdHJpbmdDYWNoZSgpLT5yZW1vdmUoc3RyaW5nSW1wbCk7Ci0gICAgd3JhcHBlci5EaXNw
b3NlKCk7CisgICAgd3JhcHBlci5EaXNwb3NlKGlzb2xhdGUpOwogICAgIHdyYXBwZXIuQ2xlYXIo
KTsKICAgICBzdHJpbmdJbXBsLT5kZXJlZigpOwogfQpAQCAtODYsNyArODYsNyBAQCB2ODo6SGFu
ZGxlPHY4OjpTdHJpbmc+IFN0cmluZ0NhY2hlOjp2OEV4dGVybmFsU3RyaW5nU2xvdyhTdHJpbmdJ
bXBsKiBzdHJpbmdJbXBsLAogICAgICAgICByZXR1cm4gdjg6OlN0cmluZzo6RW1wdHkoaXNvbGF0
ZSk7CiAKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPiBjYWNoZWRWOFN0cmluZyA9IG1f
c3RyaW5nQ2FjaGUuZ2V0KHN0cmluZ0ltcGwpOwotICAgIGlmIChjYWNoZWRWOFN0cmluZy5Jc1dl
YWsoKSkgeworICAgIGlmIChjYWNoZWRWOFN0cmluZy5Jc1dlYWsoaXNvbGF0ZSkpIHsKICAgICAg
ICAgbV9sYXN0U3RyaW5nSW1wbCA9IHN0cmluZ0ltcGw7CiAgICAgICAgIG1fbGFzdFY4U3RyaW5n
ID0gY2FjaGVkVjhTdHJpbmc7CiAgICAgICAgIGlmIChoYW5kbGVUeXBlID09IFJldHVyblVuc2Fm
ZUhhbmRsZSkKQEAgLTk4LDEyICs5OCwxMiBAQCB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IFN0cmlu
Z0NhY2hlOjp2OEV4dGVybmFsU3RyaW5nU2xvdyhTdHJpbmdJbXBsKiBzdHJpbmdJbXBsLAogICAg
IGlmIChuZXdTdHJpbmcuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbmV3U3RyaW5nOwogCi0g
ICAgdjg6OlBlcnNpc3RlbnQ8djg6OlN0cmluZz4gd3JhcHBlciA9IHY4OjpQZXJzaXN0ZW50PHY4
OjpTdHJpbmc+OjpOZXcobmV3U3RyaW5nKTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5n
PiB3cmFwcGVyID0gdjg6OlBlcnNpc3RlbnQ8djg6OlN0cmluZz46Ok5ldyhpc29sYXRlLCBuZXdT
dHJpbmcpOwogICAgIGlmICh3cmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG5ld1N0
cmluZzsKIAogICAgIHN0cmluZ0ltcGwtPnJlZigpOwotICAgIHdyYXBwZXIuTWFya0luZGVwZW5k
ZW50KCk7CisgICAgd3JhcHBlci5NYXJrSW5kZXBlbmRlbnQoaXNvbGF0ZSk7CiAgICAgd3JhcHBl
ci5NYWtlV2Vhayhpc29sYXRlLCBzdHJpbmdJbXBsLCBjYWNoZWRTdHJpbmdDYWxsYmFjayk7CiAg
ICAgbV9zdHJpbmdDYWNoZS5zZXQoc3RyaW5nSW1wbCwgd3JhcHBlcik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dyYXBwZXJUeXBlSW5mby5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmgKaW5kZXggMTkzNGViMTAxNWMwNTRl
MWQ1NWZhYzUyMmFmM2U2MTMyMjE2ZDdjYy4uYjMxMGFmOWE3ZDJmODAxMjA0NDg3ODZhODkwZjNi
ZmE4NjI2NjUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBl
clR5cGVJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJ
bmZvLmgKQEAgLTE1MCw3ICsxNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAg
dm9pZCBjb25maWd1cmVXcmFwcGVyKHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIs
IHY4OjpJc29sYXRlKiBpc29sYXRlKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICB3cmFw
cGVyLlNldFdyYXBwZXJDbGFzc0lkKGNsYXNzSWQpOworICAgICAgICAgICAgd3JhcHBlci5TZXRX
cmFwcGVyQ2xhc3NJZChpc29sYXRlLCBjbGFzc0lkKTsKICAgICAgICAgICAgIGlmIChsaWZldGlt
ZSA9PSBJbmRlcGVuZGVudCkKICAgICAgICAgICAgICAgICB3cmFwcGVyLk1hcmtJbmRlcGVuZGVu
dChpc29sYXRlKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggNzUxNGNiNjIy
NzgzMTJjYmEwZTNkODBiN2NhM2Y3NDIyNTJlYjM0NS4uZmQwOWFjZjAxYWYyMTk3ZDg0YjY5NWVh
MWM1ZDJhN2VhZTEwZmUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCkBAIC01Niw3ICs1Niw3IEBA
IHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBWOEhUTUxEb2N1bWVudDo6d3JhcEluU2hhZG93T2JqZWN0
KHY4OjpMb2NhbDx2ODo6T2JqZWN0PiB3CiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTCh2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4sIHNoYWRvd1RlbXBsYXRlLCAoKSk7CiAg
ICAgaWYgKHNoYWRvd1RlbXBsYXRlLklzRW1wdHkoKSkgewotICAgICAgICBzaGFkb3dUZW1wbGF0
ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KHY4OjpGdW5jdGlv
blRlbXBsYXRlOjpOZXcoKSk7CisgICAgICAgIHNoYWRvd1RlbXBsYXRlID0gdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6OkZ1bmN0aW9uVGVtcGxh
dGU6Ok5ldygpKTsKICAgICAgICAgaWYgKHNoYWRvd1RlbXBsYXRlLklzRW1wdHkoKSkKICAgICAg
ICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKICAgICAgICAgc2hhZG93VGVt
cGxhdGUtPlNldENsYXNzTmFtZSh2ODo6U3RyaW5nOjpOZXdTeW1ib2woIkhUTUxEb2N1bWVudCIp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJ
bWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IDUwMjZhZGYyYWE5
YzI4MTNmZmY4Nzg4NTEwMDdlOGZlNzg3Mzg3ZjIuLmY1ZTQ4MTRkN2NkY2UyN2MzNWEzYjg3Mzky
MmYwNTkxNWU0NTEwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcApA
QCAtOTUsNyArOTUsNyBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhI
VE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKAogICAgIHJlc3VsdC0+U2V0
Q2xhc3NOYW1lKHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiSFRNTEltYWdlRWxlbWVudCIpKTsKICAg
ICByZXN1bHQtPkluaGVyaXQoVjhIVE1MSW1hZ2VFbGVtZW50OjpHZXRUZW1wbGF0ZShpc29sYXRl
KSk7CiAKLSAgICBjYWNoZWRUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPjo6TmV3KHJlc3VsdCk7CisgICAgY2FjaGVkVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyhpc29sYXRlLCByZXN1bHQpOwogICAgIHJldHVy
biBjYWNoZWRUZW1wbGF0ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggMWMx
ODkxODUyOTIzZWQ3MzZjOGM1MjcxYWIzOTE2MGQ3N2NiMDM3YS4uYjI5NjFlMzAwNDBkYWM2OGIy
MTRjYmE1YTQ4YjYzMGRkNDM5ZmI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC00
OSw3ICs0OSw3IEBAIHN0YXRpYyB2b2lkIFdlYWtSZWZlcmVuY2VDYWxsYmFjayh2ODo6SXNvbGF0
ZSogaXNvbGF0ZSwgdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlCiB7CiAgICAgSW5qZWN0ZWRTY3Jp
cHRIb3N0KiBuYXRpdmVPYmplY3QgPSBzdGF0aWNfY2FzdDxJbmplY3RlZFNjcmlwdEhvc3QqPihw
YXJhbWV0ZXIpOwogICAgIG5hdGl2ZU9iamVjdC0+ZGVyZWYoKTsKLSAgICBvYmplY3QuRGlzcG9z
ZSgpOworICAgIG9iamVjdC5EaXNwb3NlKGlzb2xhdGUpOwogICAgIG9iamVjdC5DbGVhcigpOwog
fQogCkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyB2ODo6TG9jYWw8djg6Ok9iamVjdD4gY3JlYXRl
SW5qZWN0ZWRTY3JpcHRIb3N0VjhXcmFwcGVyKEluamVjdGVkU2NyaXB0SG9zCiAgICAgLy8gQ3Jl
YXRlIGEgd2VhayByZWZlcmVuY2UgdG8gdGhlIHY4IHdyYXBwZXIgb2YgSW5zcGVjdG9yQmFja2Vu
ZCB0byBkZXJlZgogICAgIC8vIEluc3BlY3RvckJhY2tlbmQgd2hlbiB0aGUgd3JhcHBlciBpcyBn
YXJiYWdlIGNvbGxlY3RlZC4KICAgICBob3N0LT5yZWYoKTsKLSAgICB2ODo6UGVyc2lzdGVudDx2
ODo6T2JqZWN0PiB3ZWFrSGFuZGxlID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhp
bnN0YW5jZSk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd2Vha0hhbmRsZSA9IHY4
OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcoaXNvbGF0ZSwgaW5zdGFuY2UpOwogICAgIHdl
YWtIYW5kbGUuTWFrZVdlYWsoaXNvbGF0ZSwgaG9zdCwgJldlYWtSZWZlcmVuY2VDYWxsYmFjayk7
CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCmluZGV4IDY2ZjA3ZDM0ZDIzM2U3
MDI0NWJjNGFjZGUyOTEwZTkyZmNkOTYyODEuLjJhMTJhZWUzN2NhZGEyYzI3ZjUzNDI1ZTFjOTBm
YjlmYzIyOWViOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOExvY2F0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAKQEAgLTEzOCw4ICsxMzgsOSBAQCB2b2lkIFY4TG9j
YXRpb246OnNlYXJjaEFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2
ODo6TG9jYWw8djg6OgogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVsb2Fk
QWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCiB7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4TG9jYXRpb246OnJlbG9h
ZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6
R2V0UmF3VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCkpKSkpOwotICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hh
aW4oVjhMb2NhdGlvbjo6R2V0VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCkpKTsKKyAgICB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSA9IGluZm8uR2V0SXNvbGF0ZSgpOworICAgIHN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6OkZ1bmN0aW9uVGVt
cGxhdGU6Ok5ldyhWOExvY2F0aW9uOjpyZWxvYWRDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6
OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUpKSkpOwor
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0
YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6R2V0VGVtcGxhdGUoaXNvbGF0ZSkpOwog
ICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIGNhbiBvbmx5IHJlYWNoIGhl
cmUgYnkgJ29iamVjdC5fX3Byb3RvX18uZnVuYycsIGFuZCBpdCBzaG91bGQgcGFzc2VkCiAgICAg
ICAgIC8vIGRvbWFpbiBzZWN1cml0eSBjaGVjayBhbHJlYWR5CkBAIC0xNDcsNyArMTQ4LDcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJlbG9hZEFjY2Vzc29yR2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW0KICAgICB9CiAgICAgTG9jYXRpb24qIGltcCA9IFY4TG9j
YXRpb246OnRvTmF0aXZlKGhvbGRlcik7CiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3Vs
ZEFsbG93QWNjZXNzVG9GcmFtZShCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCksIGltcC0+ZnJhbWUo
KSwgRG9Ob3RSZXBvcnRTZWN1cml0eUVycm9yKSkgewotICAgICAgICBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhW
OExvY2F0aW9uOjpyZWxvYWRDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6
TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgpKSkpKTsKKyAg
ICAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzaGFyZWRU
ZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KGlzb2xh
dGUsIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhMb2NhdGlvbjo6cmVsb2FkQ2FsbGJhY2ss
IHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1w
bGF0ZShpc29sYXRlKSkpKTsKICAgICAgICAgcmV0dXJuIHNoYXJlZFRlbXBsYXRlLT5HZXRGdW5j
dGlvbigpOwogICAgIH0KICAgICByZXR1cm4gcHJpdmF0ZVRlbXBsYXRlLT5HZXRGdW5jdGlvbigp
OwpAQCAtMTU1LDggKzE1Niw5IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjpy
ZWxvYWRBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtCiAKIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjpyZXBsYWNlQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAg
c3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxh
dGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rp
b25UZW1wbGF0ZTo6TmV3KFY4TG9jYXRpb246OnJlcGxhY2VDYWxsYmFjaywgdjhVbmRlZmluZWQo
KSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKGluZm8uR2V0
SXNvbGF0ZSgpKSkpKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8u
VGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4TG9jYXRpb246OkdldFRlbXBs
YXRlKGluZm8uR2V0SXNvbGF0ZSgpKSk7CisgICAgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSBpbmZv
LkdldElzb2xhdGUoKTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPjo6TmV3KGlzb2xhdGUsIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhMb2NhdGlvbjo6
cmVwbGFjZUNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2Nh
dGlvbjo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSkpKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihW
OExvY2F0aW9uOjpHZXRUZW1wbGF0ZShpc29sYXRlKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5
KCkpIHsKICAgICAgICAgLy8gY2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJvdG9f
Xy5mdW5jJywgYW5kIGl0IHNob3VsZCBwYXNzZWQKICAgICAgICAgLy8gZG9tYWluIHNlY3VyaXR5
IGNoZWNrIGFscmVhZHkKQEAgLTE2NCw3ICsxNjYsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhMb2NhdGlvbjo6cmVwbGFjZUFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YQogICAgIH0KICAgICBMb2NhdGlvbiogaW1wID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUoaG9sZGVy
KTsKICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEJp
bmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSwgaW1wLT5mcmFtZSgpLCBEb05vdFJlcG9ydFNlY3VyaXR5
RXJyb3IpKSB7Ci0gICAgICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gc2hhcmVkVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4TG9jYXRpb246OnJlcGxhY2VDYWxs
YmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJh
d1RlbXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgpKSkpKTsKKyAgICAgICAgc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KGlzb2xhdGUsIHY4OjpGdW5jdGlvblRlbXBs
YXRlOjpOZXcoVjhMb2NhdGlvbjo6cmVwbGFjZUNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6
U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSkpKSk7CiAg
ICAgICAgIHJldHVybiBzaGFyZWRUZW1wbGF0ZS0+R2V0RnVuY3Rpb24oKTsKICAgICB9CiAgICAg
cmV0dXJuIHByaXZhdGVUZW1wbGF0ZS0+R2V0RnVuY3Rpb24oKTsKQEAgLTE3Miw5ICsxNzQsMTAg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJlcGxhY2VBY2Nlc3NvckdldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmEKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9j
YXRpb246OmFzc2lnbkFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogeworICAgIHY4OjpJc29sYXRlKiBpc29sYXRl
ID0gaW5mby5HZXRJc29sYXRlKCk7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPQotICAgICAgICB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4TG9j
YXRpb246OmFzc2lnbkNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXco
VjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCkpKSkpOwotICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUlu
UHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6R2V0VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCkp
KTsKKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNv
bGF0ZSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjphc3NpZ25DYWxsYmFj
aywgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1Rl
bXBsYXRlKGlzb2xhdGUpKSkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0g
aW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6R2V0
VGVtcGxhdGUoaXNvbGF0ZSkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7CiAgICAgICAg
IC8vIGNhbiBvbmx5IHJlYWNoIGhlcmUgYnkgJ29iamVjdC5fX3Byb3RvX18uZnVuYycsIGFuZCBp
dCBzaG91bGQgcGFzc2VkCiAgICAgICAgIC8vIGRvbWFpbiBzZWN1cml0eSBjaGVjayBhbHJlYWR5
CkBAIC0xODIsNyArMTg1LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OmFz
c2lnbkFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW0KICAgICB9CiAgICAg
TG9jYXRpb24qIGltcCA9IFY4TG9jYXRpb246OnRvTmF0aXZlKGhvbGRlcik7CiAgICAgaWYgKCFC
aW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShCaW5kaW5nU3RhdGU6Omlu
c3RhbmNlKCksIGltcC0+ZnJhbWUoKSwgRG9Ob3RSZXBvcnRTZWN1cml0eUVycm9yKSkgewotICAg
ICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRl
bXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1
bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjphc3NpZ25DYWxsYmFjaywgdjhVbmRlZmlu
ZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKGluZm8u
R2V0SXNvbGF0ZSgpKSkpKTsKKyAgICAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPjo6TmV3KGlzb2xhdGUsIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhMb2Nh
dGlvbjo6YXNzaWduQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhW
OExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSkpKTsKICAgICAgICAgcmV0dXJuIHNo
YXJlZFRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwogICAgIH0KICAgICByZXR1cm4gcHJpdmF0ZVRl
bXBsYXRlLT5HZXRGdW5jdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9X
ZWJGcmFtZVRlc3QuY3BwCmluZGV4IGVkNTFkMjcwYzc3NDZiZjU3ODQ2Y2MzODY2OTU5ZTRmNjE4
NWUyMjguLmEyNmFkMjcyMjM3NTAxMWQyMmJiM2M3ZTg2OTRlOWJmNzg3MDQ5ZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAKQEAgLTk4NywxNSAr
OTg3LDE1IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgTm90aWZpY2F0aW9uIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIE5vdGlmaWNhdGlvbihXZWJGcmFtZSogZnJhbWUsIHY4OjpIYW5kbGU8djg6OkNv
bnRleHQ+IGNvbnRleHQsIGludCB3b3JsZElkKQotICAgICAgICAgICAgOiBmcmFtZShmcmFtZSkg
LAotICAgICAgICAgICAgICBjb250ZXh0KHY4OjpQZXJzaXN0ZW50PHY4OjpDb250ZXh0Pjo6TmV3
KGNvbnRleHQpKSwKLSAgICAgICAgICAgICAgd29ybGRJZCh3b3JsZElkKQorICAgICAgICAgICAg
OiBmcmFtZShmcmFtZSkKKyAgICAgICAgICAgICwgY29udGV4dCh2ODo6UGVyc2lzdGVudDx2ODo6
Q29udGV4dD46Ok5ldyhjb250ZXh0LT5HZXRJc29sYXRlKCksIGNvbnRleHQpKQorICAgICAgICAg
ICAgLCB3b3JsZElkKHdvcmxkSWQpCiAgICAgICAgIHsKICAgICAgICAgfQogCiAgICAgICAgIH5O
b3RpZmljYXRpb24oKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LkRpc3Bvc2UoKTsK
KyAgICAgICAgICAgIGNvbnRleHQuRGlzcG9zZShjb250ZXh0LT5HZXRJc29sYXRlKCkpOwogICAg
ICAgICB9CiAKICAgICAgICAgYm9vbCBFcXVhbHMoTm90aWZpY2F0aW9uKiBvdGhlcikK
</data>

          </attachment>
      

    </bug>

</bugzilla>