<?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>157882</bug_id>
          
          <creation_ts>2016-05-18 21:18:27 -0700</creation_ts>
          <short_desc>Generate bindings code for EventTarget.addEventListener() / removeEventListener()</short_desc>
          <delta_ts>2016-05-23 17:16:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Bindings</component>
          <version>WebKit 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>
          
          <blocked>149466</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1194614</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-18 21:18:27 -0700</bug_when>
    <thetext>Generate bindings code for EventTarget.addEventListener() / removeEventListener(). Custom code is current hardcoded in the bindings generator, we need to clean this up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194638</commentid>
    <comment_count>1</comment_count>
      <attachid>279347</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-18 22:11:14 -0700</bug_when>
    <thetext>Created attachment 279347
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194643</commentid>
    <comment_count>2</comment_count>
      <attachid>279349</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-18 22:25:06 -0700</bug_when>
    <thetext>Created attachment 279349
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194645</commentid>
    <comment_count>3</comment_count>
      <attachid>279351</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-18 22:32:23 -0700</bug_when>
    <thetext>Created attachment 279351
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194648</commentid>
    <comment_count>4</comment_count>
      <attachid>279352</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-18 22:40:55 -0700</bug_when>
    <thetext>Created attachment 279352
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194649</commentid>
    <comment_count>5</comment_count>
      <attachid>279353</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-18 22:45:07 -0700</bug_when>
    <thetext>Created attachment 279353
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194652</commentid>
    <comment_count>6</comment_count>
      <attachid>279354</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-18 22:54:51 -0700</bug_when>
    <thetext>Created attachment 279354
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194657</commentid>
    <comment_count>7</comment_count>
      <attachid>279356</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-18 23:06:27 -0700</bug_when>
    <thetext>Created attachment 279356
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194660</commentid>
    <comment_count>8</comment_count>
      <attachid>279358</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-18 23:19:39 -0700</bug_when>
    <thetext>Created attachment 279358
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194961</commentid>
    <comment_count>9</comment_count>
      <attachid>279358</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-19 14:31:13 -0700</bug_when>
    <thetext>Comment on attachment 279358
Patch

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

&gt; Source/WebCore/dom/EventListenerMap.h:58
&gt; +    bool remove(const AtomicString&amp; eventType, EventListener&amp;, bool useCapture, size_t&amp; indexOfRemovedListener);

There’s no question that this is a step in the right direction. But really I think the remove functions should take a predicate (std::function, probably) telling them what to remove rather than an EventListener&amp;. Expressing that predicate as a == function on an EventListener object is not the best way to do it. We should talk about this in person at some point.

&gt; Source/WebCore/dom/RegisteredEventListener.h:34
&gt; +        RegisteredEventListener(Ref&lt;EventListener&gt; listener, bool useCapture)

Should this be Ref&amp;&amp; instead of just Ref?

&gt; LayoutTests/ChangeLog:11
&gt; +        Rebaseline existing test now that the &apos;length&apos; property of those functions
&gt; +        have changed. This is because the IDL has been updated to match our
&gt; +        implementation (all parameters are optional). While this does not match
&gt; +        the specification, the new length now matches our actual behavior.

I don’t think this is good. I’d prefer that we still return length 2. Is there some easy way to do that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1195033</commentid>
    <comment_count>10</comment_count>
      <attachid>279358</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-19 16:36:39 -0700</bug_when>
    <thetext>Comment on attachment 279358
Patch

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

&gt;&gt; LayoutTests/ChangeLog:11
&gt;&gt; +        the specification, the new length now matches our actual behavior.
&gt; 
&gt; I don’t think this is good. I’d prefer that we still return length 2. Is there some easy way to do that?

I don&apos;t think people actually rely on this. I do agree this is not great though.
The length computation relies on arguments being marked as optional or not in the IDL. Besides adding a new IDL extended attribute, I am not quite sure how to maintain the length.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1195046</commentid>
    <comment_count>11</comment_count>
      <attachid>279453</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-19 16:58:44 -0700</bug_when>
    <thetext>Created attachment 279453
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1195049</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-19 17:10:51 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Comment on attachment 279358 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=279358&amp;action=review
&gt; 
&gt; &gt;&gt; LayoutTests/ChangeLog:11
&gt; &gt;&gt; +        the specification, the new length now matches our actual behavior.
&gt; &gt; 
&gt; &gt; I don’t think this is good. I’d prefer that we still return length 2. Is there some easy way to do that?
&gt; 
&gt; I don&apos;t think people actually rely on this. I do agree this is not great
&gt; though.
&gt; The length computation relies on arguments being marked as optional or not
&gt; in the IDL. Besides adding a new IDL extended attribute, I am not quite sure
&gt; how to maintain the length.

I have&apos;t found an easy way to fix this one. Do you think it is worth maintaining the previous length at the cost of adding some kind of IDL attribute, e.g. [Length=2])?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1195071</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-19 18:46:40 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #10)
&gt; &gt; Comment on attachment 279358 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=279358&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; LayoutTests/ChangeLog:11
&gt; &gt; &gt;&gt; +        the specification, the new length now matches our actual behavior.
&gt; &gt; &gt; 
&gt; &gt; &gt; I don’t think this is good. I’d prefer that we still return length 2. Is there some easy way to do that?
&gt; &gt; 
&gt; &gt; I don&apos;t think people actually rely on this. I do agree this is not great
&gt; &gt; though.
&gt; &gt; The length computation relies on arguments being marked as optional or not
&gt; &gt; in the IDL. Besides adding a new IDL extended attribute, I am not quite sure
&gt; &gt; how to maintain the length.
&gt; 
&gt; I have&apos;t found an easy way to fix this one. Do you think it is worth
&gt; maintaining the previous length at the cost of adding some kind of IDL
&gt; attribute, e.g. [Length=2])?

Alternatively, we could align our behavior with the spec (and with Firefox and Chrome) and mark the 2 first parameters as mandatory. This is a bit riskier but this is right thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1195627</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-23 15:57:54 -0700</bug_when>
    <thetext>Seems like we can add a temporary IDL extended attribute or temporary hard coded exception in the bindings script. Then we can remove it when we change behavior to not have the arguments be optional. No reason to temporarily return 0 since we have always returned 2 and we think that 2 is the right value long term.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1195647</commentid>
    <comment_count>15</comment_count>
      <attachid>279605</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-23 16:29:50 -0700</bug_when>
    <thetext>Created attachment 279605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1195658</commentid>
    <comment_count>16</comment_count>
      <attachid>279605</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-23 17:15:58 -0700</bug_when>
    <thetext>Comment on attachment 279605
Patch

Clearing flags on attachment: 279605

Committed r201305: &lt;http://trac.webkit.org/changeset/201305&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1195659</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-23 17:16:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279347</attachid>
            <date>2016-05-18 22:11:14 -0700</date>
            <delta_ts>2016-05-18 22:25:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157882-20160518221213.patch</filename>
            <type>text/plain</type>
            <size>66180</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxMDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzczYWNlZjg4MjA4MzNi
MTc1ZjVmNGFkMjMyY2NjZjVhMzQ2MDUyYi4uNGI5NjcyZWJkZGRkNDU2ZDU5NWIxODA3NzBkNmE1
NDBkYjk4Zjk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxNi0wNS0xOCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEdlbmVyYXRlIGJpbmRpbmdz
IGNvZGUgZm9yIEV2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoKSAvIHJlbW92ZUV2ZW50TGlz
dGVuZXIoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU3ODgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
R2VuZXJhdGUgYmluZGluZ3MgY29kZSBmb3IgRXZlbnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigp
IC8gcmVtb3ZlRXZlbnRMaXN0ZW5lcigpCisgICAgICAgIGluc3RlYWQgb2YgaGFyZGNvZGluZyB0
aGVtIGluIHRoZSBiaW5kaW5ncyBnZW5lcmF0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBy
ZWJhc2VsaW5lZCBleGlzdGluZyB0ZXN0LiBUaGUgb25seSBXZWItRXhwb3NlZCBiZWhhdmlvciBj
aGFuZ2UKKyAgICAgICAgaXMgdGhhdCAnbGVuZ3RoJyBwcm9wZXJ0eSBvZiB0aG9zZSBmdW5jdGlv
bnMgaGF2ZSBjaGFuZ2VkLiBUaGlzIGlzIGJlY2F1c2UgdGhlCisgICAgICAgIElETCBoYXMgYmVl
biB1cGRhdGVkIHRvIG1hdGNoIG91ciBpbXBsZW1lbnRhdGlvbiAoYWxsIHBhcmFtZXRlcnMgYXJl
IG9wdGlvbmFsKS4KKyAgICAgICAgV2hpbGUgdGhpcyBkb2VzIG5vdCBtYXRjaCB0aGUgc3BlY2lm
aWNhdGlvbiwgdGhlIG5ldyBsZW5ndGggbm93IG1hdGNoZXMgb3VyCisgICAgICAgIGFjdHVhbCBi
ZWhhdmlvci4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3Vy
Y2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6
YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NjaGVkdWxlZFNvdXJj
ZU5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9T
Y3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nv
ck5vZGU6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvY2Vz
c29yTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9TY3JpcHRQcm9jZXNzb3JOb2RlLmg6CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9HT2Jq
ZWN0RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHT2JqZWN0RXZlbnRMaXN0
ZW5lcjo6b3BlcmF0b3I9PSk6CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZl
bnRMaXN0ZW5lci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAg
ICAoV2ViQ29yZTo6ZXZlbnRIYW5kbGVyQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRM
aXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6Y2Fz
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OmpzRnVuY3Rp
b24pOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL29iamMvT2JqQ0V2ZW50TGlzdGVuZXIu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL09iakNFdmVudExpc3RlbmVyLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6T2JqQ0V2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbik6CisgICAgICAgIChKU1ZhbHVlVG9OYXRpdmUpOgorICAgICAgICAoR2V0UGFy
ZW50Q2xhc3NOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEdldENhbGxiYWNrQ2xhc3NOYW1lKTog
RGVsZXRlZC4KKyAgICAgICAgKEdldEpTQ2FsbGJhY2tEYXRhVHlwZSk6IERlbGV0ZWQuCisgICAg
ICAgICogZG9tL0V2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lck1h
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRMaXN0ZW5lclRvVmVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50TGlzdGVuZXJNYXA6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpyZW1v
dmVMaXN0ZW5lckZyb21WZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRMaXN0ZW5lck1h
cDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlMaXN0ZW5lcnNOb3RDcmVhdGVkRnJv
bU1hcmt1cFRvVGFyZ2V0KToKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lck1hcC5oOgorICAg
ICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdl
dDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6YWRk
RXZlbnRMaXN0ZW5lckZvckJpbmRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0
OjpyZW1vdmVFdmVudExpc3RlbmVyRm9yQmluZGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRU
YXJnZXQ6OnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRUYXJnZXQ6OmNsZWFyQXR0cmlidXRlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogZG9tL0V2
ZW50VGFyZ2V0Lmg6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0LmlkbDoKKyAgICAgICAgKiBk
b20vTWVzc2FnZVBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmFkZEV2
ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5oOgorICAgICAgICAqIGRv
bS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyeUFkZEV2ZW50TGlzdGVuZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3Jl
Ojp0cnlSZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlbW92
ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogZG9tL1Jl
Z2lzdGVyZWRFdmVudExpc3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RlcmVkRXZl
bnRMaXN0ZW5lcjo6UmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGh0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojph
ZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJl
bW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURvY3VtZW50OjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGh0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHNBcHBsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQXBw
bGU6OnNob3dDbG9zZWRDYXB0aW9uVHJhY2tMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbHNBcHBsZTo6aGlkZUNsb3NlZENhcHRpb25UcmFja0xpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PSk6CisgICAg
ICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRv
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAg
ICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjphZGRFdmVudExpc3Rl
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIp
OgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjph
dHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI6OmRl
dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcjo6b3Bl
cmF0b3I9PSk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb25kaXRpb25FdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50Ojpjb25uZWN0Q29uZGl0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6ZGlzY29ubmVjdENvbmRpdGlvbnMpOgorCiAy
MDE2LTA1LTE4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBN
b2Rlcm4gSURCOiBNYWtlIFRlc3RSdW5uZXIuY2xlYXJBbGxEYXRhYmFzZXMgYWxzbyBkZWxldGUg
SW5kZXhlZERCIGRhdGFiYXNlcyAob25jZSBkb2luZyBzbyBpcyBzdXBwb3J0ZWQpLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hh
bmdlTG9nCmluZGV4IDNhNDBkMzUwN2JjNjc2YzJmNzhhOTk1MWU2NTU2YWVhNTY5ZGMwNWEuLjQ0
M2FkNGE5YWIxNDUyZGU5MWNjMTRiYmY2Mjk3YmY4NjQyOGMxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAxNi0wNS0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIEdlbmVyYXRlIGJpbmRpbmdzIGNvZGUgZm9yIEV2ZW50VGFyZ2V0LmFk
ZEV2ZW50TGlzdGVuZXIoKSAvIHJlbW92ZUV2ZW50TGlzdGVuZXIoKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3ODgyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2VuZXJhdGUgYmluZGluZ3MgY29kZSBm
b3IgRXZlbnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigpIC8gcmVtb3ZlRXZlbnRMaXN0ZW5lcigp
CisgICAgICAgIGluc3RlYWQgb2YgaGFyZGNvZGluZyB0aGVtIGluIHRoZSBiaW5kaW5ncyBnZW5l
cmF0b3IuCisKKyAgICAgICAgKiBET01FdmVudHNDbGFzc2VzLmNwcDoKKyAgICAgICAgKFdlYkV2
ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIERPTUV2ZW50c0NsYXNzZXMuaDoK
KwogMjAxNi0wNS0xNiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQgcm9sbG91dCByMjAwOTI0LiBDYXVzZWQganMvcmVncmVzcy9zdHJp
bmctcmVwbGFjZS1nZW5lcmljLmh0bWwgdG8gZmFpbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjMWVhOTQ0NzM5
ZmJiNTRlNmJhZmEzOGFlMzM5NDEzNGMyMmMxODQyLi45MWE1Y2EyZmFlNDQxZTBkMDdjZTdjOTIw
NzRkMTU5NWI2Zjg4Zjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTYtMDUtMTgg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBHZW5lcmF0ZSBiaW5k
aW5ncyBjb2RlIGZvciBFdmVudFRhcmdldC5hZGRFdmVudExpc3RlbmVyKCkgLyByZW1vdmVFdmVu
dExpc3RlbmVyKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1Nzg4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEdlbmVyYXRlIGJpbmRpbmdzIGNvZGUgZm9yIEV2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVu
ZXIoKSAvIHJlbW92ZUV2ZW50TGlzdGVuZXIoKQorICAgICAgICBpbnN0ZWFkIG9mIGhhcmRjb2Rp
bmcgdGhlbSBpbiB0aGUgYmluZGluZ3MgZ2VuZXJhdG9yLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW5Bbm5vdGF0aW9uOjphdHRhY2gpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5B
bm5vdGF0aW9uOjp+UERGUGx1Z2luQW5ub3RhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW5QYXNzd29yZEZpZWxkOjp+UERGUGx1Z2luUGFzc3dvcmRGaWVsZCk6CisgICAgICAg
IChXZWJLaXQ6OlBERlBsdWdpblBhc3N3b3JkRmllbGQ6OmNyZWF0ZUFubm90YXRpb25FbGVtZW50
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0
aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6flBERlBs
dWdpblRleHRBbm5vdGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luVGV4dEFubm90
YXRpb246OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KToKKwogMjAxNi0wNS0xOCAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kZXJuIElEQjogTWFrZSBUZXN0
UnVubmVyLmNsZWFyQWxsRGF0YWJhc2VzIGFsc28gZGVsZXRlIEluZGV4ZWREQiBkYXRhYmFzZXMg
KG9uY2UgZG9pbmcgc28gaXMgc3VwcG9ydGVkKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcAppbmRl
eCBiYzRlZmI0YjcyY2U2ZDdlYmNjY2UzOGViNjA5OTk1Mzk0MGU5YjUwLi40Y2E2YTA0NDJmZDNh
OTMxNTdjNzI1MTRmMzQ3YTFmYWM3ODM2NGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwCkBA
IC0yMDEsNyArMjAxLDcgQEAgdm9pZCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OmZpbmlzaCgp
CiAgICAgfQogfQogCi1ib29sIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6YWRkRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+
JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgQXVkaW9TY2hlZHVsZWRTb3VyY2VO
b2RlOjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8
RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIGJvb2wg
c3VjY2VzcyA9IEF1ZGlvTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdURk1vdmUo
bGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKICAgICBpZiAoc3VjY2VzcyAmJiBldmVudFR5cGUgPT0g
ZXZlbnROYW1lcygpLmVuZGVkRXZlbnQpCkBAIC0yMDksNyArMjA5LDcgQEAgYm9vbCBBdWRpb1Nj
aGVkdWxlZFNvdXJjZU5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIFIKICAgICByZXR1cm4gc3VjY2VzczsKIH0KIAotYm9vbCBBdWRpb1NjaGVkdWxl
ZFNvdXJjZU5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIEF1
ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVy
ZSkKIHsKICAgICBib29sIHN1Y2Nlc3MgPSBBdWRpb05vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIo
ZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CiAgICAgaWYgKHN1Y2Nlc3MgJiYgZXZl
bnRUeXBlID09IGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgKaW5k
ZXggZWNlZGUzOGEwODk0MjZkMDljZGU2MWQ0MGNiN2Y3NDNiOWM2MTA1NS4uY2I0ZGQzY2RlODIx
NzVjZDE2NTYzZDBkODhmZmNjMTE3Y2ExZDA5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCkBAIC0x
MDEsOCArMTAxLDggQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgVW5rbm93
blRpbWU7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0
dXJlKSBvdmVycmlkZTsKLSAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpIG92ZXJy
aWRlOworICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7Cisg
ICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBFdmVudExpc3RlbmVyJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKICAgICB2b2lkIHJl
bW92ZUFsbEV2ZW50TGlzdGVuZXJzKCkgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAppbmRl
eCA2ODVjNjczMDg0YzhjMWYxODMzMGZmOWZmMzY3NjUzMDljZDM5M2U1Li4wY2M0MWI3NTY4YmIw
NTEwZTE1NWVlOWNlYzEwMDU2MWViNzRiYTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKQEAgLTI3Myw3ICsy
NzMsNyBAQCBkb3VibGUgU2NyaXB0UHJvY2Vzc29yTm9kZTo6bGF0ZW5jeVRpbWUoKSBjb25zdAog
ICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7CiB9CiAK
LWJvb2wgU2NyaXB0UHJvY2Vzc29yTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wg
dXNlQ2FwdHVyZSkKK2Jvb2wgU2NyaXB0UHJvY2Vzc29yTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVu
ZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICBib29sIHN1Y2Nlc3MgPSBBdWRpb05vZGU6OmFk
ZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7
CiAgICAgaWYgKHN1Y2Nlc3MgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5hdWRpb3Byb2Nl
c3NFdmVudCkKQEAgLTI4MSw3ICsyODEsNyBAQCBib29sIFNjcmlwdFByb2Nlc3Nvck5vZGU6OmFk
ZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cgogICAg
IHJldHVybiBzdWNjZXNzOwogfQogCi1ib29sIFNjcmlwdFByb2Nlc3Nvck5vZGU6OnJlbW92ZUV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIq
IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIFNjcmlwdFByb2Nlc3Nvck5vZGU6OnJl
bW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlz
dGVuZXImIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgYm9vbCBzdWNjZXNzID0g
QXVkaW9Ob2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNh
cHR1cmUpOwogICAgIGlmIChzdWNjZXNzICYmIGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuYXVk
aW9wcm9jZXNzRXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oCmluZGV4IDZiNjVkMDE4ZWJmYWY2OTZhMDVkZDhkM2Rm
ODA0YTYzYzRiYWQ0MjQuLjEzMDYyNTkwOTBhZDQzYjJhZjVkNjM3MjJkNTVlMjQzM2Q4M2JiMmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vz
c29yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJv
Y2Vzc29yTm9kZS5oCkBAIC03Myw4ICs3Myw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGZpcmVQ
cm9jZXNzRXZlbnQoKTsKIAotICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVy
ZSkgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlk
ZTsKKyAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAg
IGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
RXZlbnRMaXN0ZW5lciYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1v
dmVBbGxFdmVudExpc3RlbmVycygpIG92ZXJyaWRlOwogCiAgICAgLy8gRG91YmxlIGJ1ZmZlcmlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZl
bnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RF
dmVudExpc3RlbmVyLmNwcAppbmRleCBkNGExZDE4MzUxY2YxYWQ0MTMzMmRlMTU3ZDA2YjI5MTQx
NzhiYWFjLi41Yjc4YjliMDFmMjcyNzAxNTkxNjRjNWIyMmNhMTJiYWEwYjg1YWMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RFdmVudExpc3RlbmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RFdmVudExp
c3RlbmVyLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIEdPYmplY3RFdmVudExpc3RlbmVyOjpo
YW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqIGV2ZW50KQogICAgIGdf
dmFsdWVfdW5zZXQocGFyYW1ldGVycyArIDEpOwogfQogCi1ib29sIEdPYmplY3RFdmVudExpc3Rl
bmVyOjpvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyKQorYm9vbCBHT2Jq
ZWN0RXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5l
cikgY29uc3QKIHsKICAgICBpZiAoY29uc3QgR09iamVjdEV2ZW50TGlzdGVuZXIqIGdvYmplY3RF
dmVudExpc3RlbmVyID0gR09iamVjdEV2ZW50TGlzdGVuZXI6OmNhc3QoJmxpc3RlbmVyKSkKICAg
ICAgICAgcmV0dXJuIG1fdGFyZ2V0ID09IGdvYmplY3RFdmVudExpc3RlbmVyLT5tX3RhcmdldApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZlbnRM
aXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZlbnRM
aXN0ZW5lci5oCmluZGV4IGUxMTdmNDBkNmVjZTVkNGY2NjhjMDk5YjgwOTU2YTczYjBmYzZjODYu
LjUyZDgzZTk5YWQxNjI0ZWU2NDEwMmU0ZGUzZmUyMDZkYjk3OTY4YTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVjdEV2ZW50TGlzdGVuZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RFdmVudExpc3RlbmVyLmgK
QEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgOiAwOwogICAgIH0KIAotICAg
IHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKTsKKyAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3RoZXIpIGNvbnN0IG92ZXJy
aWRlOwogCiBwcml2YXRlOgogICAgIEdPYmplY3RFdmVudExpc3RlbmVyKEdPYmplY3QqLCBFdmVu
dFRhcmdldCosIGNvbnN0IGNoYXIqIGRvbUV2ZW50TmFtZSwgR0Nsb3N1cmUqLCBib29sIGNhcHR1
cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3Rl
bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAK
aW5kZXggY2M1NGZkNGE4MTg0OTc3YTYwNGI1Zjk0YTU4NTIxMzJhMWQ4Njg3ZS4uYmZkNzhhODI5
NWU4MzgxMjE5YjNiMmRiYTVmNDRhYjA5MGUxNzY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCkBAIC0xNjMsMjAgKzE2MywxMyBAQCBib29s
IEpTRXZlbnRMaXN0ZW5lcjo6dmlydHVhbGlzQXR0cmlidXRlKCkgY29uc3QKICAgICByZXR1cm4g
bV9pc0F0dHJpYnV0ZTsKIH0KIAotYm9vbCBKU0V2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0oY29u
c3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpCitib29sIEpTRXZlbnRMaXN0ZW5lcjo6b3BlcmF0
b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikgY29uc3QKIHsKICAgICBpZiAoY29u
c3QgSlNFdmVudExpc3RlbmVyKiBqc0V2ZW50TGlzdGVuZXIgPSBKU0V2ZW50TGlzdGVuZXI6OmNh
c3QoJmxpc3RlbmVyKSkKICAgICAgICAgcmV0dXJuIG1fanNGdW5jdGlvbiA9PSBqc0V2ZW50TGlz
dGVuZXItPm1fanNGdW5jdGlvbiAmJiBtX2lzQXR0cmlidXRlID09IGpzRXZlbnRMaXN0ZW5lci0+
bV9pc0F0dHJpYnV0ZTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZjxKU0V2ZW50TGlzdGVu
ZXI+IGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvckFkZChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpT
Qzo6SlNPYmplY3QmIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0JiB3cmFwcGVyKQotewotICAgIC8v
IEZJWE1FOiBUaGlzIGFic3RyYWN0aW9uIGlzIG5vIGxvbmdlciBuZWVkZWQuIEl0IHdhcyBwYXJ0
IG9mIHN1cHBvcnQgZm9yIFNWR0VsZW1lbnRJbnN0YW5jZS4KLSAgICAvLyBXZSBzaG91bGQgcmVt
b3ZlIGl0IGFuZCBzaW1wbGlmeSB0aGUgYmluZGluZ3MgZ2VuZXJhdGlvbiBzY3JpcHRzLgotICAg
IHJldHVybiBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZSgmbGlzdGVuZXIsICZ3cmFwcGVyLCBmYWxz
ZSwgY3VycmVudFdvcmxkKCZzdGF0ZSkpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTQzo6SlNWYWx1
ZSBldmVudEhhbmRsZXJBdHRyaWJ1dGUoRXZlbnRMaXN0ZW5lciogYWJzdHJhY3RMaXN0ZW5lciwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAoIWFic3RyYWN0TGlz
dGVuZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlz
dGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCmlu
ZGV4IGEwMzk1NTM3MWJmMWNmM2NjYTgwMDBhMjQ2YjRiNjY2YTg5ZTJhOTUuLmU1NWEyNWIwZjY5
NDNlMjJiMjgzOWYxODkxODNlOTY3OGJiOTE3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCkBAIC00Myw2ICs0MywxNCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpTRXZlbnRMaXN0ZW5lcihsaXN0ZW5lciwgd3JhcHBl
ciwgaXNBdHRyaWJ1dGUsIHdvcmxkKSk7CiAgICAgfQogCisgICAgc3RhdGljIFJlZlB0cjxKU0V2
ZW50TGlzdGVuZXI+IGNyZWF0ZShKU0M6OkpTVmFsdWUgbGlzdGVuZXIsIEpTQzo6SlNPYmplY3Qm
IHdyYXBwZXIsIGJvb2wgaXNBdHRyaWJ1dGUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCisgICAg
eworICAgICAgICBpZiAoVU5MSUtFTFkoIWxpc3RlbmVyLmlzT2JqZWN0KCkpKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBKU0V2ZW50
TGlzdGVuZXIoSlNDOjphc09iamVjdChsaXN0ZW5lciksICZ3cmFwcGVyLCBpc0F0dHJpYnV0ZSwg
d29ybGQpKTsKKyAgICB9CisKICAgICBzdGF0aWMgY29uc3QgSlNFdmVudExpc3RlbmVyKiBjYXN0
KGNvbnN0IEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGxp
c3RlbmVyLT50eXBlKCkgPT0gSlNFdmVudExpc3RlbmVyVHlwZQpAQCAtNTIsNyArNjAsNyBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIH5KU0V2ZW50TGlzdGVuZXIoKTsKIAotICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgb3ZlcnJpZGU7CisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGV2ZW50IGxpc3RlbmVyIHdhcyBjcmVhdGVkIGZv
ciBhbiBldmVudCBoYW5kbGVyIGF0dHJpYnV0ZSwgbGlrZSAib25sb2FkIiBvciAib25jbGljayIu
CiAgICAgYm9vbCBpc0F0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNBdHRyaWJ1dGU7IH0K
QEAgLTk5LDkgKzEwNyw2IEBAIHZvaWQgc2V0RG9jdW1lbnRFdmVudEhhbmRsZXJBdHRyaWJ1dGUo
SlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTT2JqZWN0JiwgSFRNTEVsZW1lCiBKU0M6OkpTVmFsdWUg
ZG9jdW1lbnRFdmVudEhhbmRsZXJBdHRyaWJ1dGUoRG9jdW1lbnQmLCBjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSk7CiB2b2lkIHNldERvY3VtZW50RXZlbnRIYW5kbGVyQXR0cmlidXRlKEpT
Qzo6RXhlY1N0YXRlJiwgSlNDOjpKU09iamVjdCYsIERvY3VtZW50JiwgY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIEpTQzo6SlNWYWx1ZSk7CiAKLVJlZjxKU0V2ZW50TGlzdGVuZXI+IGNy
ZWF0ZUpTRXZlbnRMaXN0ZW5lckZvckFkZChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNPYmplY3Qm
IGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0JiB3cmFwcGVyKTsKLVJlZjxKU0V2ZW50TGlzdGVuZXI+
IGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvclJlbW92ZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNP
YmplY3QmIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0JiB3cmFwcGVyKTsKLQogaW5saW5lIEpTQzo6
SlNPYmplY3QqIEpTRXZlbnRMaXN0ZW5lcjo6anNGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSBjb25zdAogewogICAgIC8vIGluaXRpYWxpemVK
U0Z1bmN0aW9uIGNhbiB0cmlnZ2VyIGNvZGUgdGhhdCBkZWxldGVzIHRoaXMgZXZlbnQgbGlzdGVu
ZXIKQEAgLTEzMywxMSArMTM4LDYgQEAgaW5saW5lIEpTQzo6SlNPYmplY3QqIEpTRXZlbnRMaXN0
ZW5lcjo6anNGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHQKICAgICByZXR1
cm4gbV9qc0Z1bmN0aW9uLmdldCgpOwogfQogCi1pbmxpbmUgUmVmPEpTRXZlbnRMaXN0ZW5lcj4g
Y3JlYXRlSlNFdmVudExpc3RlbmVyRm9yUmVtb3ZlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlND
OjpKU09iamVjdCYgbGlzdGVuZXIsIEpTQzo6SlNPYmplY3QmIHdyYXBwZXIpCi17Ci0gICAgcmV0
dXJuIGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvckFkZChzdGF0ZSwgbGlzdGVuZXIsIHdyYXBwZXIp
OwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBKU0V2ZW50TGlzdGVu
ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9PYmpDRXZlbnRM
aXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9PYmpDRXZlbnRMaXN0ZW5l
ci5oCmluZGV4IGYzZTk4NDM3ZmJhYWQ3OWEyY2I1MzNkYmI4MzgxNDMzNjFmM2E1M2EuLjIzYzk4
NDU1NTRmZTk4ZTcwNzBmOWY5YTFkYmNmODdkNTc0MzQ1NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ0V2ZW50TGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL09iakNFdmVudExpc3RlbmVyLmgKQEAgLTUyLDcgKzUyLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIE9iakNFdmVudExpc3RlbmVyKE9iakNMaXN0
ZW5lcik7CiAgICAgICAgIHZpcnR1YWwgfk9iakNFdmVudExpc3RlbmVyKCk7Ci0gICAgICAgIHZp
cnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImKTsKKyAgICAgICAgdmly
dHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYpIGNvbnN0OwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50
Kik7CiAKICAgICAgICAgUmV0YWluUHRyPE9iakNMaXN0ZW5lcj4gbV9saXN0ZW5lcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ0V2ZW50TGlzdGVuZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL09iakNFdmVudExpc3RlbmVyLm1tCmluZGV4
IDA5OWQ0NTVjMGNhNWI0NzU4NzQ0OTdlZGYyOWUyNzE2YjFmNDA2YzMuLjMyZmU2ZTY1MWIxNTA1
MWMyMTMyM2M3OWM2MDM5NDhiMjU0MGE0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL29iamMvT2JqQ0V2ZW50TGlzdGVuZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9PYmpDRXZlbnRMaXN0ZW5lci5tbQpAQCAtNzksNyArNzksNyBAQCB2b2lkIE9i
akNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZl
bnQqIGV2ZW50KQogICAgIFtsaXN0ZW5lciBoYW5kbGVFdmVudDpraXQoZXZlbnQpXTsKIH0KIAot
Ym9vbCBPYmpDRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBs
aXN0ZW5lcikKK2Jvb2wgT2JqQ0V2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRM
aXN0ZW5lciYgbGlzdGVuZXIpIGNvbnN0CiB7CiAgICAgaWYgKGNvbnN0IE9iakNFdmVudExpc3Rl
bmVyKiBvYmpDRXZlbnRMaXN0ZW5lciA9IE9iakNFdmVudExpc3RlbmVyOjpjYXN0KCZsaXN0ZW5l
cikpCiAgICAgICAgIHJldHVybiBtX2xpc3RlbmVyID09IG9iakNFdmVudExpc3RlbmVyLT5tX2xp
c3RlbmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQppbmRleCBmNzE3OGQxNTAxNDE2M2IwMTVkMWZmYWViZGYzYjA0YWM2Y2FkODMy
Li41MTVkYzRmNjJkOGU0OWU2NWMxOTE1ZGVjYzUxZjVmNGJiMzYwZjg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTQz
LDI2ICsxNDMsNiBAQCBzdWIgRXZlbnRIYW5kbGVyQXR0cmlidXRlRXZlbnROYW1lCiAgICAgcmV0
dXJuICJldmVudE5hbWVzKCkuJHtldmVudFR5cGV9RXZlbnQiOwogfQogCi1zdWIgR2VuZXJhdGVF
dmVudExpc3RlbmVyQ2FsbAotewotICAgIG15ICRmdW5jdGlvbk5hbWUgPSBzaGlmdDsKLSAgICBt
eSAkc3VmZml4ID0gdWNmaXJzdCAkZnVuY3Rpb25OYW1lOwotICAgIG15ICRwYXNzUmVmUHRySGFu
ZGxpbmcgPSAoJGZ1bmN0aW9uTmFtZSBlcSAiYWRkIikgPyAiIiA6ICIucHRyKCkiOwotCi0gICAg
JGltcGxJbmNsdWRlc3siSlNFdmVudExpc3RlbmVyLmgifSA9IDE7Ci0KLSAgICBteSBAR2VuZXJh
dGVFdmVudExpc3RlbmVySW1wbCA9ICgpOwotCi0gICAgcHVzaChAR2VuZXJhdGVFdmVudExpc3Rl
bmVySW1wbCwgPDxFTkQpOwotICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBzdGF0ZS0+YXJndW1lbnQo
MSk7Ci0gICAgaWYgKFVOTElLRUxZKCFsaXN0ZW5lci5pc09iamVjdCgpKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBpbXBsLiR7ZnVuY3Rpb25O
YW1lfUV2ZW50TGlzdGVuZXIoc3RhdGUtPmFyZ3VtZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dG9B
dG9taWNTdHJpbmcoc3RhdGUpLCBjcmVhdGVKU0V2ZW50TGlzdGVuZXJGb3Ikc3VmZml4KCpzdGF0
ZSwgKmFzT2JqZWN0KGxpc3RlbmVyKSwgKmNhc3RlZFRoaXMpJHBhc3NSZWZQdHJIYW5kbGluZywg
c3RhdGUtPmFyZ3VtZW50KDIpLnRvQm9vbGVhbihzdGF0ZSkpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci1FTkQKLSAgICByZXR1cm4gQEdlbmVyYXRlRXZlbnRM
aXN0ZW5lckltcGw7Ci19Ci0KIHN1YiBHZXRQYXJlbnRDbGFzc05hbWUKIHsKICAgICBteSAkaW50
ZXJmYWNlID0gc2hpZnQ7CkBAIC0zMjE5LDMwICszMTk5LDI0IEBAIEVORAogICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICAjIEZvciBjb21wYXRpYmlsaXR5IHdpdGggbGVnYWN5IGNvbnRlbnQs
IHRoZSBFdmVudExpc3RlbmVyIGNhbGxzIGFyZSBnZW5lcmF0ZWQgd2l0aG91dCBHZW5lcmF0ZUFy
Z3VtZW50c0NvdW50Q2hlY2suCi0gICAgICAgICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNp
Z25hdHVyZS0+bmFtZSBlcSAiYWRkRXZlbnRMaXN0ZW5lciIpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUV2ZW50TGlzdGVuZXJDYWxsKCJhZGQi
KSk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5u
YW1lIGVxICJyZW1vdmVFdmVudExpc3RlbmVyIikgewotICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRlRXZlbnRMaXN0ZW5lckNhbGwoInJlbW92ZSIpKTsK
LSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEdl
bmVyYXRlQXJndW1lbnRzQ291bnRDaGVjayhcQGltcGxDb250ZW50LCAkZnVuY3Rpb24sICRpbnRl
cmZhY2UpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHJhaXNlc0V4Y2VwdGlvbldp
dGhNZXNzYWdlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlIGVjO1xuIik7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB9IGVsc2lmICgkcmFpc2VzRXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgR2Vu
ZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKFxAaW1wbENvbnRlbnQsICRmdW5jdGlvbiwgJGludGVy
ZmFjZSk7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrU2VjdXJpdHlGb3JOb2RlIn0pIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIXNob3Vs
ZEFsbG93QWNjZXNzVG9Ob2RlKHN0YXRlLCBpbXBsLiIgLiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+
bmFtZSAuICIoIiAuICgkcmFpc2VzRXhjZXB0aW9uID8gImVjIiA6ICIiKSAuIikpKVxuIik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNET01CaW5kaW5nLmgifSA9IDE7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICgkcmFpc2VzRXhjZXB0aW9u
V2l0aE1lc3NhZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSBlYztcbiIpOworICAgICAgICAgICAgICAg
ICAgICB9IGVsc2lmICgkcmFpc2VzRXhjZXB0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpOworICAg
ICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIG15ICRudW1QYXJh
bWV0ZXJzID0gQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OwotICAgICAgICAgICAgICAgICAgICAg
ICAgbXkgKCRmdW5jdGlvblN0cmluZywgJGR1bW15KSA9IEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNr
KFxAaW1wbENvbnRlbnQsICRmdW5jdGlvbiwgJGludGVyZmFjZSwgJG51bVBhcmFtZXRlcnMsICRm
dW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSwgJHN2Z1Byb3BlcnR5VHlwZSwgJHN2Z1Byb3BlcnR5
T3JMaXN0UHJvcGVydHlUeXBlLCAkc3ZnTGlzdFByb3BlcnR5VHlwZSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKCRmdW5jdGlvbiwg
JGZ1bmN0aW9uU3RyaW5nLCAiICAgICIsICRzdmdQcm9wZXJ0eVR5cGUsICRpbnRlcmZhY2UpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5Rm9yTm9kZSJ9KSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9Ob2Rl
KHN0YXRlLCBpbXBsLiIgLiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSAuICIoIiAuICgkcmFp
c2VzRXhjZXB0aW9uID8gImVjIiA6ICIiKSAuIikpKVxuIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c051bGwoKSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpT
RE9NQmluZGluZy5oIn0gPSAxOwogICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICAgICAgbXkgJG51bVBhcmFtZXRlcnMgPSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc307Cisg
ICAgICAgICAgICAgICAgICAgIG15ICgkZnVuY3Rpb25TdHJpbmcsICRkdW1teSkgPSBHZW5lcmF0
ZVBhcmFtZXRlcnNDaGVjayhcQGltcGxDb250ZW50LCAkZnVuY3Rpb24sICRpbnRlcmZhY2UsICRu
dW1QYXJhbWV0ZXJzLCAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUsICRzdmdQcm9wZXJ0eVR5
cGUsICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSwgJHN2Z0xpc3RQcm9wZXJ0eVR5cGUp
OworICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxs
KCRmdW5jdGlvbiwgJGZ1bmN0aW9uU3RyaW5nLCAiICAgICIsICRzdmdQcm9wZXJ0eVR5cGUsICRp
bnRlcmZhY2UpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIApAQCAtNDQ1Myw2
ICs0NDI3LDkgQEAgc3ViIEpTVmFsdWVUb05hdGl2ZQogCiAgICAgQWRkVG9JbXBsSW5jbHVkZXMo
IkpTJHR5cGUuaCIsICRjb25kaXRpb25hbCk7CiAKKyAgICAjIEZJWE1FOiBFdmVudExpc3RlbmVy
IHNob3VsZCBiZSBhIGNhbGxiYWNrIGludGVyZmFjZS4KKyAgICByZXR1cm4gIkpTRXZlbnRMaXN0
ZW5lcjo6Y3JlYXRlKCR2YWx1ZSwgKmNhc3RlZFRoaXMsIGZhbHNlLCBjdXJyZW50V29ybGQoc3Rh
dGUpKSIgaWYgJHR5cGUgZXEgIkV2ZW50TGlzdGVuZXIiOworCiAgICAgbXkgJGV4dGVuZGVkQXR0
cmlidXRlcyA9ICRjb2RlR2VuZXJhdG9yLT5nZXRJbnRlcmZhY2VFeHRlbmRlZEF0dHJpYnV0ZXNG
cm9tTmFtZSgkdHlwZSk7CiAgICAgcmV0dXJuICgiSlMke3R5cGV9Ojp0b1dyYXBwZWQoKnN0YXRl
LCAkdmFsdWUpIiwgMSkgaWYgJGV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbVRvTmF0aXZl
T2JqZWN0In07CiAgICAgcmV0dXJuICgiSlMke3R5cGV9Ojp0b1dyYXBwZWQoJHZhbHVlKSIsIDAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmgKaW5kZXggYmI0ZjlmMDJkZWFkNWVkMzEzY2U3
NjQwNmE2ZDE5ZWQ4Yzg2ZjZkMS4uMjI0MzUyOTU1OWQ4MzAzMzc1NGZiMGU3MmJkZGM2NGM4Yzk1
M2E3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5oCkBAIC00OCw3ICs0OCw3IEBAIHB1
YmxpYzoKICAgICB9OwogCiAgICAgdmlydHVhbCB+RXZlbnRMaXN0ZW5lcigpIHsgfQotICAgIHZp
cnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImKSA9IDA7CisgICAgdmly
dHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50
KikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCB3YXNDcmVhdGVkRnJvbU1hcmt1cCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExp
c3RlbmVyTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcApp
bmRleCBmMTk3YzIwNjAxMWM4YmFhNDhkMzA4MWRkZmJjMjAxYTA1ZTM4OTA4Li5iMDRlMTIxM2E1
NWNiNjVjMmYyZTUyMzg5ZWU0NjRkN2Y4NDVlZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
TGlzdGVuZXJNYXAuY3BwCkBAIC05NSw5ICs5NSw5IEBAIFZlY3RvcjxBdG9taWNTdHJpbmc+IEV2
ZW50TGlzdGVuZXJNYXA6OmV2ZW50VHlwZXMoKSBjb25zdAogICAgIHJldHVybiB0eXBlczsKIH0K
IAotc3RhdGljIGJvb2wgYWRkTGlzdGVuZXJUb1ZlY3RvcihFdmVudExpc3RlbmVyVmVjdG9yKiB2
ZWN0b3IsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVy
ZSkKK3N0YXRpYyBib29sIGFkZExpc3RlbmVyVG9WZWN0b3IoRXZlbnRMaXN0ZW5lclZlY3Rvciog
dmVjdG9yLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQog
ewotICAgIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyIHJlZ2lzdGVyZWRMaXN0ZW5lcihsaXN0ZW5l
ciwgdXNlQ2FwdHVyZSk7CisgICAgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIgcmVnaXN0ZXJlZExp
c3RlbmVyKFdURk1vdmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKIAogICAgIGlmICh2ZWN0b3It
PmZpbmQocmVnaXN0ZXJlZExpc3RlbmVyKSAhPSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOyAvLyBEdXBsaWNhdGUgbGlzdGVuZXIuCkBAIC0xMDYsMjAgKzEwNiwyMCBAQCBzdGF0aWMg
Ym9vbCBhZGRMaXN0ZW5lclRvVmVjdG9yKEV2ZW50TGlzdGVuZXJWZWN0b3IqIHZlY3RvciwgUGFz
c1JlZlB0cjxFdmVudExpcwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEV2ZW50TGlzdGVu
ZXJNYXA6OmFkZChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVu
dExpc3RlbmVyPiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBFdmVudExpc3RlbmVy
TWFwOjphZGQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVy
PiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgYXNzZXJ0Tm9BY3RpdmVJdGVy
YXRvcnMoKTsKIAogICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2VudHJpZXMpIHsKICAgICAgICAg
aWYgKGVudHJ5LmZpcnN0ID09IGV2ZW50VHlwZSkKLSAgICAgICAgICAgIHJldHVybiBhZGRMaXN0
ZW5lclRvVmVjdG9yKGVudHJ5LnNlY29uZC5nZXQoKSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOwor
ICAgICAgICAgICAgcmV0dXJuIGFkZExpc3RlbmVyVG9WZWN0b3IoZW50cnkuc2Vjb25kLmdldCgp
LCBXVEZNb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiAgICAgfQogCiAgICAgbV9lbnRyaWVz
LmFwcGVuZChzdGQ6Om1ha2VfcGFpcihldmVudFR5cGUsIHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRM
aXN0ZW5lclZlY3Rvcj4oKSkpOwotICAgIHJldHVybiBhZGRMaXN0ZW5lclRvVmVjdG9yKG1fZW50
cmllcy5sYXN0KCkuc2Vjb25kLmdldCgpLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CisgICAgcmV0
dXJuIGFkZExpc3RlbmVyVG9WZWN0b3IobV9lbnRyaWVzLmxhc3QoKS5zZWNvbmQuZ2V0KCksIFdU
Rk1vdmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKIH0KIAotc3RhdGljIGJvb2wgcmVtb3ZlTGlz
dGVuZXJGcm9tVmVjdG9yKEV2ZW50TGlzdGVuZXJWZWN0b3IqIGxpc3RlbmVyVmVjdG9yLCBFdmVu
dExpc3RlbmVyKiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlLCBzaXplX3QmIGluZGV4T2ZSZW1v
dmVkTGlzdGVuZXIpCitzdGF0aWMgYm9vbCByZW1vdmVMaXN0ZW5lckZyb21WZWN0b3IoRXZlbnRM
aXN0ZW5lclZlY3RvciogbGlzdGVuZXJWZWN0b3IsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBi
b29sIHVzZUNhcHR1cmUsIHNpemVfdCYgaW5kZXhPZlJlbW92ZWRMaXN0ZW5lcikKIHsKICAgICBS
ZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciByZWdpc3RlcmVkTGlzdGVuZXIobGlzdGVuZXIsIHVzZUNh
cHR1cmUpOwogICAgIGluZGV4T2ZSZW1vdmVkTGlzdGVuZXIgPSBsaXN0ZW5lclZlY3Rvci0+Zmlu
ZChyZWdpc3RlcmVkTGlzdGVuZXIpOwpAQCAtMTI5LDcgKzEyOSw3IEBAIHN0YXRpYyBib29sIHJl
bW92ZUxpc3RlbmVyRnJvbVZlY3RvcihFdmVudExpc3RlbmVyVmVjdG9yKiBsaXN0ZW5lclZlY3Rv
ciwgRXZlbnRMCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRXZlbnRMaXN0ZW5lck1hcDo6
cmVtb3ZlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiBsaXN0
ZW5lciwgYm9vbCB1c2VDYXB0dXJlLCBzaXplX3QmIGluZGV4T2ZSZW1vdmVkTGlzdGVuZXIpCiti
b29sIEV2ZW50TGlzdGVuZXJNYXA6OnJlbW92ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSwgc2l6ZV90JiBpbmRl
eE9mUmVtb3ZlZExpc3RlbmVyKQogewogICAgIGFzc2VydE5vQWN0aXZlSXRlcmF0b3JzKCk7CiAK
QEAgLTE4NSw3ICsxODUsNyBAQCBzdGF0aWMgdm9pZCBjb3B5TGlzdGVuZXJzTm90Q3JlYXRlZEZy
b21NYXJrdXBUb1RhcmdldChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VAogICAgICAgICAvLyBF
dmVudCBsaXN0ZW5lcnMgY3JlYXRlZCBmcm9tIG1hcmt1cCBoYXZlIGFscmVhZHkgYmVlbiB0cmFu
c2ZlcmVkIHRvIHRoZSBzaGFkb3cgdHJlZSBkdXJpbmcgY2xvbmluZy4KICAgICAgICAgaWYgKGxp
c3RlbmVyLmxpc3RlbmVyLT53YXNDcmVhdGVkRnJvbU1hcmt1cCgpKQogICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgIHRhcmdldC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3Rl
bmVyLmxpc3RlbmVyLmNvcHlSZWYoKSwgbGlzdGVuZXIudXNlQ2FwdHVyZSk7CisgICAgICAgIHRh
cmdldC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsICpsaXN0ZW5lci5saXN0ZW5lciwgbGlz
dGVuZXIudXNlQ2FwdHVyZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVu
ZXJNYXAuaAppbmRleCA4OWZmNjY2OGQ3MmZmOTAxZDY4N2QzYjc3ZmIzNDFiM2M2YjgxN2YwLi4x
ZWZlNmFiZjhjZWVkMmQ5NjNhYzc2MzE5MWMwYTJhOGZmOWI2MzMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudExpc3RlbmVyTWFwLmgKQEAgLTU0LDggKzU0LDggQEAgcHVibGljOgogICAgIGJvb2wg
Y29udGFpbnNDYXB0dXJpbmcoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpIGNvbnN0Owog
CiAgICAgdm9pZCBjbGVhcigpOwotICAgIGJvb2wgYWRkKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUpOwotICAg
IGJvb2wgcmVtb3ZlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVy
KiwgYm9vbCB1c2VDYXB0dXJlLCBzaXplX3QmIGluZGV4T2ZSZW1vdmVkTGlzdGVuZXIpOworICAg
IGJvb2wgYWRkKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5l
cj4mJiwgYm9vbCB1c2VDYXB0dXJlKTsKKyAgICBib29sIHJlbW92ZShjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYsIGJvb2wgdXNlQ2FwdHVyZSwgc2l6ZV90JiBp
bmRleE9mUmVtb3ZlZExpc3RlbmVyKTsKICAgICBFdmVudExpc3RlbmVyVmVjdG9yKiBmaW5kKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKTsKICAgICBWZWN0b3I8QXRvbWljU3RyaW5nPiBl
dmVudFR5cGVzKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCmluZGV4IGVj
MjEwOTg2N2FjMzBkMGMzMWJlNjkyNjE2MzFjMzI1MTZmZWEzY2UuLmQyNDgzODU5M2QxN2Y2YWI1
NmQ2ZDkwOTk1ODU5MjkwNTZiMGUwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcApA
QCAtNzUsMTIgKzc1LDI4IEBAIGJvb2wgRXZlbnRUYXJnZXQ6OmlzTWVzc2FnZVBvcnQoKSBjb25z
dAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+
JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgRXZlbnRUYXJnZXQ6OmFkZEV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVy
PiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgcmV0dXJuIGVuc3VyZUV2ZW50
VGFyZ2V0RGF0YSgpLmV2ZW50TGlzdGVuZXJNYXAuYWRkKGV2ZW50VHlwZSwgV1RGTW92ZShsaXN0
ZW5lciksIHVzZUNhcHR1cmUpOwogfQogCi1ib29sIEV2ZW50VGFyZ2V0OjpyZW1vdmVFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiBsaXN0
ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQordm9pZCBFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5l
ckZvckJpbmRpbmdzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQoreworICAgIC8vIEZJWE1FOiBs
aXN0ZW5lciBpcyBub3Qgc3VwcG9zZWQgdG8gYmUgbnVsbGFibGUuCisgICAgaWYgKCFsaXN0ZW5l
cikKKyAgICAgICAgcmV0dXJuOworICAgIGFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0
ZW5lci5yZWxlYXNlTm9uTnVsbCgpLCB1c2VDYXB0dXJlKTsKK30KKwordm9pZCBFdmVudFRhcmdl
dDo6cmVtb3ZlRXZlbnRMaXN0ZW5lckZvckJpbmRpbmdzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJl
KQoreworICAgIC8vIEZJWE1FOiBsaXN0ZW5lciBpcyBub3Qgc3VwcG9zZWQgdG8gYmUgbnVsbGFi
bGUuCisgICAgaWYgKCFsaXN0ZW5lcikKKyAgICAgICAgcmV0dXJuOworICAgIHJlbW92ZUV2ZW50
TGlzdGVuZXIoZXZlbnRUeXBlLCAqbGlzdGVuZXIsIHVzZUNhcHR1cmUpOworfQorCitib29sIEV2
ZW50VGFyZ2V0OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIEV2
ZW50VGFyZ2V0RGF0YSogZCA9IGV2ZW50VGFyZ2V0RGF0YSgpOwogICAgIGlmICghZCkKQEAgLTEx
MCwxMiArMTI2LDEyIEBAIGJvb2wgRXZlbnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgRXZlbnRUYXJnZXQ6OnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVu
ZXIpCitib29sIEV2ZW50VGFyZ2V0OjpzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lcikK
IHsKICAgICBjbGVhckF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlKTsKICAgICBpZiAo
IWxpc3RlbmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGFkZEV2ZW50TGlz
dGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgZmFsc2UpOworICAgIHJldHVybiBhZGRFdmVudExp
c3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIucmVsZWFzZU5vbk51bGwoKSwgZmFsc2UpOwogfQog
CiBFdmVudExpc3RlbmVyKiBFdmVudFRhcmdldDo6Z2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkKQEAgLTEzMiw3ICsxNDgsNyBAQCBib29sIEV2
ZW50VGFyZ2V0OjpjbGVhckF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUpCiAgICAgRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIgPSBnZXRBdHRyaWJ1dGVF
dmVudExpc3RlbmVyKGV2ZW50VHlwZSk7CiAgICAgaWYgKCFsaXN0ZW5lcikKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIHJldHVybiByZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlz
dGVuZXIsIGZhbHNlKTsKKyAgICByZXR1cm4gcmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUs
ICpsaXN0ZW5lciwgZmFsc2UpOwogfQogCiBib29sIEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50
Rm9yQmluZGluZ3MoRXZlbnQqIGV2ZW50LCBFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50VGFyZ2V0LmgKaW5kZXggZjliMGYyMTE3NGY1NDE4ZDUxZjdkNTQzODFiMDFjODc4MjEyZWFh
Zi4uMWIxZGVkMTlhNWQ5Y2E1NjY0ZTUwYTk5OWQ2YzNlZmI5MmE3ZWU5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0LmgKQEAgLTEyMSwxNSArMTIxLDE4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IERPTVdpbmRvdyogdG9ET01XaW5kb3coKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNNZXNzYWdlUG9y
dCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNh
cHR1cmUpOwotICAgIHZpcnR1YWwgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKTsKKyAg
ICB2b2lkIGFkZEV2ZW50TGlzdGVuZXJGb3JCaW5kaW5ncyhjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSk7CisgICAg
dm9pZCByZW1vdmVFdmVudExpc3RlbmVyRm9yQmluZGluZ3MoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpOworICAg
IHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKTsKKyAgICB2aXJ0dWFs
IGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
RXZlbnRMaXN0ZW5lciYsIGJvb2wgdXNlQ2FwdHVyZSk7CisKICAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChF
dmVudCYpOwogICAgIGJvb2wgZGlzcGF0Y2hFdmVudEZvckJpbmRpbmdzKEV2ZW50KiwgRXhjZXB0
aW9uQ29kZSYpOyAvLyBET00gQVBJCiAgICAgdmlydHVhbCB2b2lkIHVuY2F1Z2h0RXhjZXB0aW9u
SW5FdmVudEhhbmRsZXIoKTsKIAogICAgIC8vIFVzZWQgZm9yIGxlZ2FjeSAib25FdmVudCIgYXR0
cmlidXRlIEFQSXMuCi0gICAgYm9vbCBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+KTsKKyAgICBi
b29sIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmKTsKICAgICBib29sIGNsZWFyQXR0cmlidXRlRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7CiAgICAgRXZlbnRMaXN0
ZW5lciogZ2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaWRsCmluZGV4IDU5M2U0YzA2ODZhMDhi
OTBjMTNlYmViZjZjZWMyODJmNGI3NmU4NWQuLmM1OTQ1ODk2ZTAwYTY2NzU2MzkwMzlhMDg2MWZm
NjY1NzVlZGJlMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmlkbApAQCAtMjUsOCArMjUs
MTAgQEAKICAgICBKU0N1c3RvbVRvTmF0aXZlT2JqZWN0LAogICAgIE9iakNQcm90b2NvbCwKIF0g
aW50ZXJmYWNlIEV2ZW50VGFyZ2V0IHsKLSAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJz
XSB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoRE9NU3RyaW5nIHR5cGUsIEV2ZW50TGlzdGVuZXI/IGxp
c3RlbmVyLCBvcHRpb25hbCBib29sZWFuIHVzZUNhcHR1cmUgPSBmYWxzZSk7Ci0gICAgW09iakNM
ZWdhY3lVbm5hbWVkUGFyYW1ldGVyc10gdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKERPTVN0cmlu
ZyB0eXBlLCBFdmVudExpc3RlbmVyPyBsaXN0ZW5lciwgb3B0aW9uYWwgYm9vbGVhbiB1c2VDYXB0
dXJlID0gZmFsc2UpOworICAgIC8vIEZJWE1FOiBUaGUgJ3R5cGUnIGFuZCAnbGlzdGVuZXInIHBh
cmFtZXRlcnMgc2hvdWxkIG5vdCBiZSBvcHRpb25hbC4KKyAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQ
YXJhbWV0ZXJzLCBJbXBsZW1lbnRlZEFzPWFkZEV2ZW50TGlzdGVuZXJGb3JCaW5kaW5nc10gdm9p
ZCBhZGRFdmVudExpc3RlbmVyKFtBdG9taWNTdHJpbmddIG9wdGlvbmFsIERPTVN0cmluZyB0eXBl
ID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIEV2ZW50TGlzdGVuZXI/IGxpc3RlbmVyLCBvcHRpb25h
bCBib29sZWFuIHVzZUNhcHR1cmUgPSBmYWxzZSk7CisgICAgW09iakNMZWdhY3lVbm5hbWVkUGFy
YW1ldGVycywgSW1wbGVtZW50ZWRBcz1yZW1vdmVFdmVudExpc3RlbmVyRm9yQmluZGluZ3NdIHZv
aWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihbQXRvbWljU3RyaW5nXSBvcHRpb25hbCBET01TdHJpbmcg
dHlwZSA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCBFdmVudExpc3RlbmVyPyBsaXN0ZW5lciwgb3B0
aW9uYWwgYm9vbGVhbiB1c2VDYXB0dXJlID0gZmFsc2UpOworCiAgICAgLy8gRklYTUU6IGV2ZW50
IHNob3VsZCBub3QgYmUgbnVsbGFibGUuCiAgICAgW0ltcGxlbWVudGVkQXM9ZGlzcGF0Y2hFdmVu
dEZvckJpbmRpbmdzLCBSYWlzZXNFeGNlcHRpb25dIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChFdmVu
dD8gZXZlbnQpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9y
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCmluZGV4IDVhODRhNDRh
MjA4YWJlYmU0MTNiOTlmMTFlNmY1MDExOWRhNDAyYjguLjNkNzg0N2NhZWRiMjkyMGUzYjI2NGI2
NTJiYzU0Y2JjMzQ3OGEzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdl
UG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcApAQCAtMjIx
LDkgKzIyMSw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydEFycmF5PiBNZXNzYWdlUG9y
dDo6ZW50YW5nbGVQb3J0cyhTY3JpcHRFeGVjdXRpb25Db250CiAgICAgcmV0dXJuIHBvcnRBcnJh
eTsKIH0KIAotYm9vbCBNZXNzYWdlUG9ydDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wg
dXNlQ2FwdHVyZSkKK2Jvb2wgTWVzc2FnZVBvcnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29s
IHVzZUNhcHR1cmUpCiB7Ci0gICAgaWYgKGxpc3RlbmVyICYmIGxpc3RlbmVyLT5pc0F0dHJpYnV0
ZSgpICYmIGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkubWVzc2FnZUV2ZW50KQorICAgIGlmIChs
aXN0ZW5lci0+aXNBdHRyaWJ1dGUoKSAmJiBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLm1lc3Nh
Z2VFdmVudCkKICAgICAgICAgc3RhcnQoKTsKICAgICByZXR1cm4gRXZlbnRUYXJnZXRXaXRoSW5s
aW5lRGF0YTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdURk1vdmUobGlzdGVuZXIpLCB1
c2VDYXB0dXJlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9y
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKaW5kZXggYmFlMDFkNWI5NTFk
ZDc4MjM3YWZkZjg3MjMxNGY4MjRkMTU3YjE2ZS4uOWNhMTI0ZjRhMmVmYzk4MWRmNTU2M2JiYmI3
NTA0NmY3OWNmY2RlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKQEAgLTkyLDcgKzkyLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBBIHBvcnQgZ2V0cyBuZXV0ZXJlZCB3
aGVuIGl0IGlzIHRyYW5zZmVycmVkIHRvIGEgbmV3IG93bmVyIHZpYSBwb3N0TWVzc2FnZSgpLgog
ICAgICAgICBib29sIGlzTmV1dGVyZWQoKSB7IHJldHVybiAhbV9lbnRhbmdsZWRDaGFubmVsOyB9
CiAKLSAgICAgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlk
ZTsKKyAgICAgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0IE1lc3NhZ2VQb3J0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA0YzQ3NTEwNGI3MjI2MDJhMzkzODhi
ZTEyMzlhOGU0NjM3ZjViYjVkLi5kMGM1ZDRjNDJlYWMzZTM2YmZiZjgwNTkzNzkxNmNlODcyYTNm
NzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xOTYwLDcgKzE5NjAsNyBAQCB2b2lkIE5vZGU6OmRp
ZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkKICAgICB9CiB9CiAKLXN0
YXRpYyBpbmxpbmUgYm9vbCB0cnlBZGRFdmVudExpc3RlbmVyKE5vZGUqIHRhcmdldE5vZGUsIGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0
ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorc3RhdGljIGlubGluZSBib29sIHRyeUFkZEV2ZW50TGlz
dGVuZXIoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJl
ZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgaWYg
KCF0YXJnZXROb2RlLT5FdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxp
c3RlbmVyLmNvcHlSZWYoKSwgdXNlQ2FwdHVyZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTE5OTYsMTIgKzE5OTYsMTIgQEAgc3RhdGljIGlubGluZSBib29sIHRyeUFkZEV2ZW50TGlzdGVu
ZXIoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBldmUKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBOb2RlOjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VD
YXB0dXJlKQorYm9vbCBOb2RlOjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJl
KQogewogICAgIHJldHVybiB0cnlBZGRFdmVudExpc3RlbmVyKHRoaXMsIGV2ZW50VHlwZSwgV1RG
TW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgdHJ5
UmVtb3ZlRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK3N0
YXRpYyBpbmxpbmUgYm9vbCB0cnlSZW1vdmVFdmVudExpc3RlbmVyKE5vZGUqIHRhcmdldE5vZGUs
IGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwg
Ym9vbCB1c2VDYXB0dXJlKQogewogICAgIGlmICghdGFyZ2V0Tm9kZS0+RXZlbnRUYXJnZXQ6OnJl
bW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTIwMzcsNyArMjAzNyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCB0cnlSZW1vdmVFdmVudExpc3RlbmVyKE5vZGUqIHRhcmdldE5vZGUsIGNvbnN0IEF0b21pY1N0
cmluZyYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBOb2RlOjpyZW1vdmVFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiBsaXN0ZW5l
ciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBOb2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCB1
c2VDYXB0dXJlKQogewogICAgIHJldHVybiB0cnlSZW1vdmVFdmVudExpc3RlbmVyKHRoaXMsIGV2
ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggNTU3ZGRj
YzExNzMxOTRhOGYwZGQxOTRjYjM2YjE3NjcwZTA0ZTM0OS4uMjA4ZTI4OGYxNzk3NzJkYzlmOTIw
MDc1YzQyNjdhMmI0ZWRlNDU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC01MDYsOCArNTA2LDggQEAgcHVi
bGljOgogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpIGNvbnN0IGZpbmFsOyAvLyBJbXBsZW1lbnRlZCBpbiBEb2N1bWVudC5oCiAKLSAg
ICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJl
ZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwotICAgIGJv
b2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZl
bnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CisgICAgYm9vbCBhZGRFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5l
cj4mJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKKyAgICBib29sIHJlbW92ZUV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBib29s
IHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogCiAgICAgdXNpbmcgRXZlbnRUYXJnZXQ6OmRpc3BhdGNo
RXZlbnQ7CiAgICAgYm9vbCBkaXNwYXRjaEV2ZW50KEV2ZW50Jikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oCmluZGV4IDEyNDgzZmE2MTE4
OWUyZWUzZjQ0ODI2NGE2NWY1OTNlMjRjMDg5ZGIuLjFjYzY5Y2EyZTI4MWU1ZTY1OGIzOGJhODY1
YWI3MzBiMWU3YjU3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWdpc3RlcmVk
RXZlbnRMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWdpc3RlcmVkRXZlbnRM
aXN0ZW5lci5oCkBAIC0zMSw4ICszMSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNs
YXNzIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFJlZ2lz
dGVyZWRFdmVudExpc3RlbmVyKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIsIGJv
b2wgdXNlQ2FwdHVyZSkKLSAgICAgICAgICAgIDogbGlzdGVuZXIobGlzdGVuZXIpCisgICAgICAg
IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyKFJlZjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciwgYm9v
bCB1c2VDYXB0dXJlKQorICAgICAgICAgICAgOiBsaXN0ZW5lcihXVEZNb3ZlKGxpc3RlbmVyKSkK
ICAgICAgICAgICAgICwgdXNlQ2FwdHVyZSh1c2VDYXB0dXJlKQogICAgICAgICB7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDg3ZTgwM2Iz
ZmM2NzM3ZmI0ZGY4YWNjMGE1YmU2MjE4MWM3ZmI1YTUuLjM4YmU0NGIyNzhhZDk0ZThkNGM0ZTE5
YWY0MzhiYWZmMWQyNDA2M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcApAQCAtNTIxNiw3ICs1MjE2LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpkaXNwYXRj
aEV2ZW50KEV2ZW50JiBldmVudCkKICAgICByZXR1cm4gSFRNTEVsZW1lbnQ6OmRpc3BhdGNoRXZl
bnQoZXZlbnQpOwogfQogCi1ib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxp
c3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVy
PiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgaWYgKGV2ZW50VHlwZSAhPSBl
dmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkRXZlbnQp
CiAgICAgICAgIHJldHVybiBOb2RlOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgV1RGTW92
ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOwpAQCAtNTIzNiw3ICs1MjM2LDcgQEAgYm9vbCBIVE1M
TWVkaWFFbGVtZW50OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBSZWZQdHI8RXYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBIVE1MTWVkaWFFbGVt
ZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBF
dmVudExpc3RlbmVyKiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBIVE1MTWVkaWFF
bGVtZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIGlmIChl
dmVudFR5cGUgIT0gZXZlbnROYW1lcygpLndlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5
Y2hhbmdlZEV2ZW50KQogICAgICAgICByZXR1cm4gTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihl
dmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgKaW5kZXggYjM4OTM5OGIzM2FkNjdhMjgyY2ExMjNjOTUyODlmNTJhNGE1MGYz
Ni4uNjY3OThhY2NjNzE3NmY2ODQwZTEwNmE4NWFiZDRlNDE5ZGI5ZWRjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTM0NCw4ICszNDQsOCBAQCBwdWJsaWM6CiAK
ICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHZvaWQgd2Via2l0U2hv
d1BsYXliYWNrVGFyZ2V0UGlja2VyKCk7Ci0gICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1
c2VDYXB0dXJlKSBvdmVycmlkZTsKLSAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUp
IG92ZXJyaWRlOworICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJp
ZGU7CisgICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBFdmVudExpc3RlbmVyJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgd2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICBi
b29sIGNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKSBjb25zdCBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IDJmMzViMjliMzliNjcyOGRlMGJh
ODU3NWVkNzU2ODg4M2U1NzdjZTYuLjdmZDJjN2M5ZTU3NmE5NWFiMTRmOWNkN2JlOWJjN2EwODBl
M2ZhZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcApAQCAtNjQsNyArNjQs
NyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
RXZlbnRMaXN0ZW5lciYpIG92ZXJyaWRlOworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVu
dExpc3RlbmVyJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgRXZlbnQqKSBvdmVycmlkZTsKIAogICAgIEltYWdlRG9jdW1lbnQm
IG1fZG9jdW1lbnQ7CkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBJbWFnZURvY3VtZW50OjpjcmVh
dGVEb2N1bWVudFN0cnVjdHVyZSgpCiAgICAgICAgIC8vIFNldCB0aGUgdmlld3BvcnQgdG8gYmUg
aW4gZGV2aWNlIHBpeGVscyAocmF0aGVyIHRoYW4gdGhlIGRlZmF1bHQgb2YgOTgwKS4KICAgICAg
ICAgcHJvY2Vzc1ZpZXdwb3J0KEFTQ0lJTGl0ZXJhbCgid2lkdGg9ZGV2aWNlLXdpZHRoIiksIFZp
ZXdwb3J0QXJndW1lbnRzOjpJbWFnZURvY3VtZW50KTsKICNlbHNlCi0gICAgICAgIFJlZlB0cjxF
dmVudExpc3RlbmVyPiBsaXN0ZW5lciA9IEltYWdlRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKCp0aGlz
KTsKKyAgICAgICAgYXV0byBsaXN0ZW5lciA9IEltYWdlRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKCp0
aGlzKTsKICAgICAgICAgaWYgKERPTVdpbmRvdyogd2luZG93ID0gdGhpcy0+ZG9tV2luZG93KCkp
CiAgICAgICAgICAgICB3aW5kb3ctPmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIGxpc3RlbmVy
LmNvcHlSZWYoKSwgZmFsc2UpOwogICAgICAgICBpbWFnZUVsZW1lbnQtPmFkZEV2ZW50TGlzdGVu
ZXIoImNsaWNrIiwgV1RGTW92ZShsaXN0ZW5lciksIGZhbHNlKTsKQEAgLTQwNyw3ICs0MDcsNyBA
QCB2b2lkIEltYWdlRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIEV2ZW50KiBldmVudCkKICAgICB9CiB9CiAKLWJvb2wgSW1hZ2VFdmVudExpc3RlbmVy
OjpvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKQorYm9vbCBJbWFnZUV2ZW50
TGlzdGVuZXI6Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3RoZXIpIGNvbnN0CiB7
CiAgICAgLy8gQWxsIEltYWdlRXZlbnRMaXN0ZW5lciBvYmplY3RzIGNvbXBhcmUgYXMgZXF1YWw7
IE9LIHNpbmNlIHRoZXJlIGlzIG9ubHkgb25lIHBlciBkb2N1bWVudC4KICAgICByZXR1cm4gb3Ro
ZXIudHlwZSgpID09IEltYWdlRXZlbnRMaXN0ZW5lclR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcAppbmRleCBjZjdhYzRiY2ZmNzMy
NGU5ZTAwMmE5YzcwNGYzMDIyZjkzMThmNjAyLi5kOTdkYTc4ZTU2MTEzNzFhY2I0ZDI5ZGIwMGUw
ZWUwYmNjNzQ3ZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xzQXBwbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbHNBcHBsZS5jcHAKQEAgLTUwOSwxNSArNTA5LDE1IEBAIHZvaWQgTWVkaWFDb250cm9s
c0FwcGxlOjpzaG93Q2xvc2VkQ2FwdGlvblRyYWNrTGlzdCgpCiAgICAgbV9wYW5lbC0+c2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHMsIENTU1ZhbHVlTm9uZSk7
CiAKICAgICBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXIoKTsKLSAgICBt
X2Nsb3NlZENhcHRpb25zQ29udGFpbmVyLT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS53
aGVlbEV2ZW50LCAmbGlzdGVuZXIsIHRydWUpOworICAgIG1fY2xvc2VkQ2FwdGlvbnNDb250YWlu
ZXItPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLndoZWVsRXZlbnQsIGxpc3RlbmVyLCB0
cnVlKTsKIAogICAgIC8vIFRyYWNrIGNsaWNrIGV2ZW50cyBpbiB0aGUgY2FwdHVyZSBwaGFzZSBh
dCB0d28gbGV2ZWxzLCBmaXJzdCBhdCB0aGUgZG9jdW1lbnQgbGV2ZWwKICAgICAvLyBzdWNoIHRo
YXQgYSBjbGljayBvdXRzaWRlIG9mIHRoZSA8dmlkZW8+IG1heSBkaXNtaXNzIHRoZSB0cmFjayBs
aXN0LCBzZWNvbmQgYXQgdGhlCiAgICAgLy8gbWVkaWEgY29udHJvbHMgbGV2ZWwgc3VjaCB0aGF0
IGEgY2xpY2sgYW55d2hlcmUgb3V0c2lkZSBvZiB0aGUgdHJhY2sgbGlzdCBoaWRlcyB0aGUKICAg
ICAvLyB0cmFjayBsaXN0LiBUaGVzZSB0d28gbGV2ZWxzIGFyZSBuZWNlc3Nhcnkgc2luY2UgaXQg
d291bGQgbm90IGJlIHBvc3NpYmxlIHRvIGdldCBhCiAgICAgLy8gcmVmZXJlbmNlIHRvIHRoZSB0
cmFjayBsaXN0IHdoZW4gaGFuZGxpbmcgdGhlIGV2ZW50IG91dHNpZGUgb2YgdGhlIHNoYWRvdyB0
cmVlLgotICAgIGRvY3VtZW50KCkuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tF
dmVudCwgJmxpc3RlbmVyLCB0cnVlKTsKLSAgICBhZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMo
KS5jbGlja0V2ZW50LCAmbGlzdGVuZXIsIHRydWUpOworICAgIGRvY3VtZW50KCkuYWRkRXZlbnRM
aXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgbGlzdGVuZXIsIHRydWUpOworICAgIGFk
ZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIGxpc3RlbmVyLCB0cnVlKTsK
IH0KIAogdm9pZCBNZWRpYUNvbnRyb2xzQXBwbGU6OmhpZGVDbG9zZWRDYXB0aW9uVHJhY2tMaXN0
KCkKQEAgLTUzMSw5ICs1MzEsOSBAQCB2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6aGlkZUNsb3Nl
ZENhcHRpb25UcmFja0xpc3QoKQogICAgIG1fcGFuZWwtPnJlbW92ZUlubGluZVN0eWxlUHJvcGVy
dHkoQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzKTsKIAogICAgIEV2ZW50TGlzdGVuZXImIGxpc3Rl
bmVyID0gZXZlbnRMaXN0ZW5lcigpOwotICAgIG1fY2xvc2VkQ2FwdGlvbnNDb250YWluZXItPnJl
bW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLndoZWVsRXZlbnQsICZsaXN0ZW5lciwgdHJ1
ZSk7Ci0gICAgZG9jdW1lbnQoKS5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jbGlj
a0V2ZW50LCAmbGlzdGVuZXIsIHRydWUpOwotICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLmNsaWNrRXZlbnQsICZsaXN0ZW5lciwgdHJ1ZSk7CisgICAgbV9jbG9zZWRDYXB0aW9u
c0NvbnRhaW5lci0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkud2hlZWxFdmVudCwg
bGlzdGVuZXIsIHRydWUpOworICAgIGRvY3VtZW50KCkucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkuY2xpY2tFdmVudCwgbGlzdGVuZXIsIHRydWUpOworICAgIHJlbW92ZUV2ZW50TGlz
dGVuZXIoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIGxpc3RlbmVyLCB0cnVlKTsKIH0KIAogdm9p
ZCBNZWRpYUNvbnRyb2xzQXBwbGU6OnNldEZ1bGxzY3JlZW5TbGlkZXJWb2x1bWUoKQpAQCAtNTk1
LDcgKzU5NSw3IEBAIHZvaWQgTWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0ZW5lcjo6aGFuZGxl
RXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50CiAgICAgfQogfQogCi1ib29sIE1l
ZGlhQ29udHJvbHNBcHBsZUV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0
ZW5lciYgbGlzdGVuZXIpCitib29sIE1lZGlhQ29udHJvbHNBcHBsZUV2ZW50TGlzdGVuZXI6Om9w
ZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpIGNvbnN0CiB7CiAgICAgaWYg
KGNvbnN0IE1lZGlhQ29udHJvbHNBcHBsZUV2ZW50TGlzdGVuZXIqIG1lZGlhQ29udHJvbHNBcHBs
ZUV2ZW50TGlzdGVuZXIgPSBNZWRpYUNvbnRyb2xzQXBwbGVFdmVudExpc3RlbmVyOjpjYXN0KCZs
aXN0ZW5lcikpCiAgICAgICAgIHJldHVybiBtX21lZGlhQ29udHJvbHMgPT0gbWVkaWFDb250cm9s
c0FwcGxlRXZlbnRMaXN0ZW5lci0+bV9tZWRpYUNvbnRyb2xzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuaAppbmRleCA2OThjYzM4OWQ5ZjJkNzIw
MmJmMjQxZGNjMWJhZjczZjAzYmYwNDI5Li5mMjhkZDZiN2Y1MTQxMGIxY2RlZWQ0MmM4MzNlMGNm
ZjkzZDFjYzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xzQXBwbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xzQXBwbGUuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICA6IDA7CiAg
ICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKSBv
dmVycmlkZTsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3RoZXIp
IGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIE1lZGlhQ29udHJvbHNBcHBsZUV2ZW50
TGlzdGVuZXIoTWVkaWFDb250cm9sc0FwcGxlKiBtZWRpYUNvbnRyb2xzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXgg
NDQxNTQzMjE0NDhkMTE1NDVmMjExNDIyYzFkZmQ4MDM5ZjhlNjQ3MC4uYWMwZWRkNDg2YWRmNGMy
ZGUwN2M4MmFhYWFjNmIzMTMxMDAyY2JlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB+T3BlbkRhdGFiYXNlQ2FsbGJhY2soKSB7IH0KIAotICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgb3ZlcnJpZGUKKyAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3RoZXIpIGNvbnN0IG92ZXJy
aWRlCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcyA9PSAmb3RoZXI7CiAgICAgfQpAQCAtMzcx
LDcgKzM3MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfk9wZW5DdXJzb3JDYWxsYmFjaygp
IHsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKSBv
dmVycmlkZQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikg
Y29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzID09ICZvdGhlcjsKICAg
ICB9CkBAIC02NjAsNyArNjYwLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+Q2xlYXJPYmpl
Y3RTdG9yZUxpc3RlbmVyKCkgeyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRM
aXN0ZW5lciYgb3RoZXIpIG92ZXJyaWRlCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50
TGlzdGVuZXImIG90aGVyKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMgPT0gJm90aGVyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCBlNzgx
YjdjYzRiOTFiYWJkZjMxZmQ3ODYyYjk4ODUxNzNiYWZiZTgwLi5iNzU0MWVkMzg0MWM4NThiZjQw
NzNiYjQ5YmYzYjljM2RiZWI5MTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0x
NzI0LDcgKzE3MjQsNyBAQCBib29sIERPTVdpbmRvdzo6aXNTYW1lU2VjdXJpdHlPcmlnaW5Bc01h
aW5GcmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIERPTVdpbmRvdzo6
YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2
ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgRE9NV2luZG93
OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZl
bnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIGlmICghRXZl
bnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwg
dXNlQ2FwdHVyZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE4MjcsNyArMTgyNyw3IEBA
IHZvaWQgRE9NV2luZG93OjpyZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbigpCiAjZW5kaWYK
IH0KIAotYm9vbCBET01XaW5kb3c6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUp
Citib29sIERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsK
ICAgICBpZiAoIUV2ZW50VGFyZ2V0OjpyZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlz
dGVuZXIsIHVzZUNhcHR1cmUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaAppbmRleCA0YjI0Yjk5ODEzNzczMjc2MzhiNjRlNjg3ZDc1ZmUyZmQ4ZDg3MmVlLi4w
MTU4ZTE0MDY2Mjc0OGZjODk0ZjkyNTgxNGQ0NjI0ODFiZmFmNDFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmgKQEAgLTI3OSw4ICsyNzksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAg
ICAgLy8gRXZlbnRzCiAgICAgICAgIC8vIEV2ZW50VGFyZ2V0IEFQSQotICAgICAgICBib29sIGFk
ZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVu
dExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwotICAgICAgICBib29sIHJl
bW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlz
dGVuZXIqLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgICAgICBib29sIGFkZEV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVy
PiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgICAgICBib29sIHJlbW92ZUV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBi
b29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIHJlbW92ZUFsbEV2ZW50TGlz
dGVuZXJzKCkgb3ZlcnJpZGU7CiAKICAgICAgICAgdXNpbmcgRXZlbnRUYXJnZXQ6OmRpc3BhdGNo
RXZlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaAppbmRleCA5YjU3Mzlj
YmE4MTY5YTA0ZmZhMTJlMTQ5MzI4YjdjMzQ1MzAwMmU5Li4wZGNhMDYzZjk4ZmU1Y2M4MzExMTY0
OTM0ZTliYzg2YzExMTM5ZGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50
LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBo
YW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViQ29yZTo6RXZl
bnQqKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUZvckV2ZW50TmFtZShjb25zdCBXVEY6OkF0b21p
Y1N0cmluZyYpOwotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiByaHMp
IGZpbmFsIHsgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIqPih0aGlz
KSA9PSAmcmhzOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIHJo
cykgY29uc3QgZmluYWwgeyByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RXZlbnRMaXN0ZW5l
cio+KHRoaXMpID09ICZyaHM7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGxheSgpIGZp
bmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGF1c2UoKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oCmluZGV4IDcxOWEyNTcwYzBmZGI4MjdkMGU2ZDNmZmEx
ZTZiZTMzNGQ4MjNmZGEuLjY2NWJlMWVhODE5OGViMWNiNWNlZmE4N2E4YzAxMDg3ZGQwMTgwZjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaApAQCAtNTksOCArNTksNyBA
QCBwdWJsaWM6CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVFdmVudChXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViQ29yZTo6RXZlbnQqKSBvdmVycmlkZTsK
ICAgICB2b2lkIHVwZGF0ZUZvckV2ZW50TmFtZShjb25zdCBXVEY6OkF0b21pY1N0cmluZyYpOwot
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiByaHMpIG92ZXJyaWRlCi0g
ICAgICAgIHtyZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RXZlbnRMaXN0ZW5lcio+KHRoaXMp
ID09ICZyaHM7fQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiByaHMp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6OkV2ZW50TGlzdGVu
ZXIqPih0aGlzKSA9PSAmcmhzOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcXVlc3RG
dWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUp
IG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKEZs
b2F0UmVjdCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggZmM4MzFl
Njc2NThiYTA5Yjg5YTgzYjFlNzU4OWEwMDFjYmI1OTU1MS4uYWIyNDVkNTdmNTg5YmRiZDA1NDE0
YTc4ODQyOTdiODIyZDBjZDY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtNTI4
LDcgKzUyOCw3IEBAIGJvb2wgU1ZHRWxlbWVudDo6aGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2Vz
KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBTVkdFbGVtZW50OjphZGRFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4m
JiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBTVkdFbGVtZW50OjphZGRFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4m
JiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogeyAgIAogICAgIC8vIEFkZCBldmVudCBsaXN0
ZW5lciB0byByZWd1bGFyIERPTSBlbGVtZW50CiAgICAgaWYgKCFOb2RlOjphZGRFdmVudExpc3Rl
bmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIuY29weVJlZigpLCB1c2VDYXB0dXJlKSkKQEAgLTU0OCw3
ICs1NDgsNyBAQCBib29sIFNWR0VsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpcwogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFNWR0VsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiti
b29sIFNWR0VsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAg
ICAgaWYgKGNvbnRhaW5pbmdTaGFkb3dSb290KCkpCiAgICAgICAgIHJldHVybiBOb2RlOjpyZW1v
dmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOwpAQCAtNTU4
LDcgKzU1OCw3IEBAIGJvb2wgU1ZHRWxlbWVudDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lCiAgICAgLy8gZXZlbnQgbGlzdGVu
ZXIgaW4gYSBjYWNoZS4gSWYgd2Ugd2FudCB0byBiZSBhYmxlIHRvIGNhbGwgcmVtb3ZlRXZlbnRM
aXN0ZW5lcigpIG11bHRpcGxlCiAgICAgLy8gdGltZXMgb24gZGlmZmVyZW50IG5vZGVzLCB3ZSBo
YXZlIHRvIGRlbGF5IGl0cyBpbW1lZGlhdGUgZGVzdHJ1Y3Rpb24sIHdoaWNoIHdvdWxkIGhhcHBl
bgogICAgIC8vIGFmdGVyIHRoZSBmaXJzdCBjYWxsIGJlbG93LgotICAgIFJlZlB0cjxFdmVudExp
c3RlbmVyPiBwcm90ZWN0b3IobGlzdGVuZXIpOworICAgIFJlZjxFdmVudExpc3RlbmVyPiBwcm90
ZWN0b3IobGlzdGVuZXIpOwogCiAgICAgLy8gUmVtb3ZlIGV2ZW50IGxpc3RlbmVyIGZyb20gcmVn
dWxhciBET00gZWxlbWVudAogICAgIGlmICghTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVu
dFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKSkKQEAgLTU3Myw3ICs1NzMsNyBAQCBib29sIFNW
R0VsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIEV2ZW50TGlzdGVuZQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgLy8gVGhp
cyBjYXNlIGNhbiBvbmx5IGJlIGhpdCBmb3IgZXZlbnQgbGlzdGVuZXJzIGNyZWF0ZWQgZnJvbSBt
YXJrdXAKLSAgICAgICAgQVNTRVJUKGxpc3RlbmVyLT53YXNDcmVhdGVkRnJvbU1hcmt1cCgpKTsK
KyAgICAgICAgQVNTRVJUKGxpc3RlbmVyLndhc0NyZWF0ZWRGcm9tTWFya3VwKCkpOwogCiAgICAg
ICAgIC8vIElmIHRoZSBldmVudCBsaXN0ZW5lciAnbGlzdGVuZXInIGhhcyBiZWVuIGNyZWF0ZWQg
ZnJvbSBtYXJrdXAgYW5kIGhhcyBiZWVuIGZpcmVkIGJlZm9yZQogICAgICAgICAvLyB0aGVuIEpT
TGF6eUV2ZW50TGlzdGVuZXI6OnBhcnNlQ29kZSgpIGhhcyBiZWVuIGNhbGxlZCBhbmQgbV9qc0Z1
bmN0aW9uIG9mIHRoYXQgbGlzdGVuZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCmluZGV4IDM4MTY4
MTAyYWY1ZWU3NWFmNzg3Y2IwZmUxNWE4ZTdhMmJhNzFjZmIuLjk2ZDZjOTA0NjMxYWIwOTQ4OGZi
NWI2YWFiYWVlMjBmYzYyYzM3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApAQCAtMTMzLDgg
KzEzMyw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBoYXZlTG9hZGVkUmVxdWlyZWRS
ZXNvdXJjZXMoKTsKIAotICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkg
b3ZlcnJpZGU7Ci0gICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsK
KyAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IFJlZjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgIGJv
b2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZl
bnRMaXN0ZW5lciYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCBoYXNGb2N1
c0V2ZW50TGlzdGVuZXJzKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAppbmRleCBjN2Q4NDZlYTIzMWFlMTUwZGE4MTJk
ZmE3ODU5NzM4MTFlZWMzNmFhLi42ZGRiYjc2MjdkYTRmNzljNDFlZmNlNDY2YWE2NTY4ZWQ3ZDNm
Y2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKQEAgLTczLDcgKzczLDcg
QEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcihTVkdU
UmVmRWxlbWVudCYgdHJlZkVsZW1lbnQpOwogCiAgICAgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgRXZlbnQqKSBvdmVycmlkZTsKLSAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgRXZlbnRMaXN0ZW5lciYpIG92ZXJyaWRlOworICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBFdmVudExpc3RlbmVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBTVkdUUmVmRWxlbWVudCYg
bV90cmVmRWxlbWVudDsKICAgICBSZWZQdHI8RWxlbWVudD4gbV90YXJnZXQ7CkBAIC05Miw4ICs5
Miw4IEBAIHZvaWQgU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI6OmF0dGFjaChSZWZQdHI8RWxl
bWVudD4mJiB0YXJnZXQpCiAgICAgQVNTRVJUKHRhcmdldC5nZXQoKSk7CiAgICAgQVNTRVJUKHRh
cmdldC0+aW5Eb2N1bWVudCgpKTsKIAotICAgIHRhcmdldC0+YWRkRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkuRE9NU3VidHJlZU1vZGlmaWVkRXZlbnQsIHRoaXMsIGZhbHNlKTsKLSAgICB0YXJn
ZXQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLkRPTU5vZGVSZW1vdmVkRnJvbURvY3Vt
ZW50RXZlbnQsIHRoaXMsIGZhbHNlKTsKKyAgICB0YXJnZXQtPmFkZEV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lcygpLkRPTVN1YnRyZWVNb2RpZmllZEV2ZW50LCAqdGhpcywgZmFsc2UpOworICAgIHRh
cmdldC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuRE9NTm9kZVJlbW92ZWRGcm9tRG9j
dW1lbnRFdmVudCwgKnRoaXMsIGZhbHNlKTsKICAgICBtX3RhcmdldCA9IFdURk1vdmUodGFyZ2V0
KTsKIH0KIApAQCAtMTAyLDEyICsxMDIsMTIgQEAgdm9pZCBTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0
ZW5lcjo6ZGV0YWNoKCkKICAgICBpZiAoIWlzQXR0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV90YXJnZXQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLkRPTVN1YnRy
ZWVNb2RpZmllZEV2ZW50LCB0aGlzLCBmYWxzZSk7Ci0gICAgbV90YXJnZXQtPnJlbW92ZUV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLkRPTU5vZGVSZW1vdmVkRnJvbURvY3VtZW50RXZlbnQsIHRo
aXMsIGZhbHNlKTsKKyAgICBtX3RhcmdldC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVz
KCkuRE9NU3VidHJlZU1vZGlmaWVkRXZlbnQsICp0aGlzLCBmYWxzZSk7CisgICAgbV90YXJnZXQt
PnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLkRPTU5vZGVSZW1vdmVkRnJvbURvY3Vt
ZW50RXZlbnQsICp0aGlzLCBmYWxzZSk7CiAgICAgbV90YXJnZXQgPSBudWxscHRyOwogfQogCi1i
b29sIFNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlz
dGVuZXImIGxpc3RlbmVyKQorYm9vbCBTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcjo6b3BlcmF0
b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikgY29uc3QKIHsKICAgICBpZiAoY29u
c3QgU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXIqIHRhcmdldExpc3RlbmVyID0gU1ZHVFJlZlRh
cmdldEV2ZW50TGlzdGVuZXI6OmNhc3QoJmxpc3RlbmVyKSkKICAgICAgICAgcmV0dXJuICZtX3Ry
ZWZFbGVtZW50ID09ICZ0YXJnZXRMaXN0ZW5lci0+bV90cmVmRWxlbWVudDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKaW5kZXggN2IyOTg3MGYz
ZTJkNGNmYzUwYjBkMTI0Y2IxMjM5ZjRjM2U3NTRlNi4uMGQyNGE2MTc0ZmJmMWE5NGJmMmFkN2Q5
OTBkZTMwNDI1ODg4MjBjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlv
bi9TVkdTTUlMRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9T
VkdTTUlMRWxlbWVudC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
OiBudWxscHRyOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3Rl
bmVyJiBvdGhlcikgb3ZlcnJpZGU7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlz
dGVuZXImIG90aGVyKSBjb25zdCBvdmVycmlkZTsKICAgICAKICAgICB2b2lkIGRpc2Nvbm5lY3RB
bmltYXRpb24oKQogICAgIHsKQEAgLTk3LDcgKzk3LDcgQEAgcHJpdmF0ZToKICAgICBTVkdTTUlM
RWxlbWVudDo6Q29uZGl0aW9uKiBtX2NvbmRpdGlvbjsKIH07CiAKLWJvb2wgQ29uZGl0aW9uRXZl
bnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikKK2Jv
b2wgQ29uZGl0aW9uRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVy
JiBsaXN0ZW5lcikgY29uc3QKIHsKICAgICBpZiAoY29uc3QgQ29uZGl0aW9uRXZlbnRMaXN0ZW5l
ciogY29uZGl0aW9uRXZlbnRMaXN0ZW5lciA9IENvbmRpdGlvbkV2ZW50TGlzdGVuZXI6OmNhc3Qo
Jmxpc3RlbmVyKSkKICAgICAgICAgcmV0dXJuIG1fYW5pbWF0aW9uID09IGNvbmRpdGlvbkV2ZW50
TGlzdGVuZXItPm1fYW5pbWF0aW9uICYmIG1fY29uZGl0aW9uID09IGNvbmRpdGlvbkV2ZW50TGlz
dGVuZXItPm1fY29uZGl0aW9uOwpAQCAtNTQ1LDcgKzU0NSw3IEBAIHZvaWQgU1ZHU01JTEVsZW1l
bnQ6OmNvbm5lY3RDb25kaXRpb25zKCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgIEFTU0VSVCghY29uZGl0aW9uLm1fZXZlbnRMaXN0ZW5lcik7CiAgICAgICAgICAgICBj
b25kaXRpb24ubV9ldmVudExpc3RlbmVyID0gQ29uZGl0aW9uRXZlbnRMaXN0ZW5lcjo6Y3JlYXRl
KHRoaXMsICZjb25kaXRpb24pOwotICAgICAgICAgICAgZXZlbnRCYXNlLT5hZGRFdmVudExpc3Rl
bmVyKGNvbmRpdGlvbi5tX25hbWUsIGNvbmRpdGlvbi5tX2V2ZW50TGlzdGVuZXIsIGZhbHNlKTsK
KyAgICAgICAgICAgIGV2ZW50QmFzZS0+YWRkRXZlbnRMaXN0ZW5lcihjb25kaXRpb24ubV9uYW1l
LCAqY29uZGl0aW9uLm1fZXZlbnRMaXN0ZW5lciwgZmFsc2UpOwogICAgICAgICB9IGVsc2UgaWYg
KGNvbmRpdGlvbi5tX3R5cGUgPT0gQ29uZGl0aW9uOjpTeW5jYmFzZSkgewogICAgICAgICAgICAg
QVNTRVJUKCFjb25kaXRpb24ubV9iYXNlSUQuaXNFbXB0eSgpKTsKICAgICAgICAgICAgIGNvbmRp
dGlvbi5tX3N5bmNiYXNlID0gdHJlZVNjb3BlKCkuZ2V0RWxlbWVudEJ5SWQoY29uZGl0aW9uLm1f
YmFzZUlEKTsKQEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lkIFNWR1NNSUxFbGVtZW50OjpkaXNjb25u
ZWN0Q29uZGl0aW9ucygpCiAgICAgICAgICAgICAvLyBvdXIgY29uZGl0aW9uIGV2ZW50IGxpc3Rl
bmVyLCBpbiBjYXNlIGl0IGxhdGVyIGZpcmVzLgogICAgICAgICAgICAgRWxlbWVudCogZXZlbnRC
YXNlID0gZXZlbnRCYXNlRm9yKGNvbmRpdGlvbik7CiAgICAgICAgICAgICBpZiAoZXZlbnRCYXNl
KQotICAgICAgICAgICAgICAgIGV2ZW50QmFzZS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25kaXRp
b24ubV9uYW1lLCBjb25kaXRpb24ubV9ldmVudExpc3RlbmVyLmdldCgpLCBmYWxzZSk7CisgICAg
ICAgICAgICAgICAgZXZlbnRCYXNlLT5yZW1vdmVFdmVudExpc3RlbmVyKGNvbmRpdGlvbi5tX25h
bWUsICpjb25kaXRpb24ubV9ldmVudExpc3RlbmVyLCBmYWxzZSk7CiAgICAgICAgICAgICBjb25k
aXRpb24ubV9ldmVudExpc3RlbmVyLT5kaXNjb25uZWN0QW5pbWF0aW9uKCk7CiAgICAgICAgICAg
ICBjb25kaXRpb24ubV9ldmVudExpc3RlbmVyID0gbnVsbHB0cjsKICAgICAgICAgfSBlbHNlIGlm
IChjb25kaXRpb24ubV90eXBlID09IENvbmRpdGlvbjo6U3luY2Jhc2UpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2luL0RPTUV2ZW50c0NsYXNzZXMuY3BwIGIvU291cmNlL1dlYktpdC93
aW4vRE9NRXZlbnRzQ2xhc3Nlcy5jcHAKaW5kZXggODBiNGQyZWFjYmI1Y2ZkN2MzZTVlZmM3MWVh
OWExZWExNGZjYTNiZS4uZjBiMzEwMDRiZThlMzYzMzdhZTZmZTdiOTRiZTlhZDhmMWIyZWY1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vRE9NRXZlbnRzQ2xhc3Nlcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC93aW4vRE9NRXZlbnRzQ2xhc3Nlcy5jcHAKQEAgLTY4LDcgKzY4LDcgQEAg
V2ViRXZlbnRMaXN0ZW5lcjo6fldlYkV2ZW50TGlzdGVuZXIoKQogICAgIG1faURPTUV2ZW50TGlz
dGVuZXItPlJlbGVhc2UoKTsKIH0KIAotYm9vbCBXZWJFdmVudExpc3RlbmVyOjpvcGVyYXRvcj09
KGNvbnN0IFdlYkNvcmU6OkV2ZW50TGlzdGVuZXImIG90aGVyKQorYm9vbCBXZWJFdmVudExpc3Rl
bmVyOjpvcGVyYXRvcj09KGNvbnN0IFdlYkNvcmU6OkV2ZW50TGlzdGVuZXImIG90aGVyKSBjb25z
dAogewogICAgIHJldHVybiAob3RoZXIudHlwZSgpID09IENQUEV2ZW50TGlzdGVuZXJUeXBlIAog
ICAgICAgICAmJiByZWludGVycHJldF9jYXN0PGNvbnN0IFdlYkV2ZW50TGlzdGVuZXIqPigmb3Ro
ZXIpLT5tX2lET01FdmVudExpc3RlbmVyID09IG1faURPTUV2ZW50TGlzdGVuZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93aW4vRE9NRXZlbnRzQ2xhc3Nlcy5oIGIvU291cmNlL1dlYktp
dC93aW4vRE9NRXZlbnRzQ2xhc3Nlcy5oCmluZGV4IDRhYjJjZWUxYzFmMzJhOTliNzA5Y2NmNDgy
Nzg3MjA1OGUxNmRjNWUuLjE1MjZmOWQ3NmQxMjFmNTc5NmVjOGI0MjJhYTQyOTZlYTEzMjQyYWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUV2ZW50c0NsYXNzZXMuaAorKysgYi9T
b3VyY2UvV2ViS2l0L3dpbi9ET01FdmVudHNDbGFzc2VzLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xh
c3MgV2ViRXZlbnRMaXN0ZW5lciA6IHB1YmxpYyBXZWJDb3JlOjpFdmVudExpc3RlbmVyIHsKIHB1
YmxpYzoKICAgICBXZWJFdmVudExpc3RlbmVyKElET01FdmVudExpc3RlbmVyKik7CiAgICAgfldl
YkV2ZW50TGlzdGVuZXIoKTsKLSAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVu
dExpc3RlbmVyJik7CisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0
ZW5lciYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgV2ViQ29yZTo6RXZlbnQqKTsKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxXZWJFdmVudExpc3RlbmVyPiBjcmVhdGUoSURPTUV2ZW50TGlzdGVuZXIqKTsKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbkFubm90YXRpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luQW5ub3RhdGlvbi5oCmluZGV4IDYzYTQ4YWM1NjA2Yjc0NGE5NTExYTI3ZTY2
MmM4MTgwNTJmZWIxM2UuLmY2MzM5NzAxZTY2MDEwOWUyOTFhOGZjMGM1YjkxYTQ5ODlhMzRlYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luQW5ub3RhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luQW5ub3RhdGlvbi5oCkBAIC04NCw3ICs4NCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQREZQbHVnaW5Bbm5vdGF0aW9uRXZlbnRMaXN0
ZW5lcihhbm5vdGF0aW9uKSk7CiAgICAgICAgIH0KIAotICAgICAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpIG92ZXJyaWRlIHsgcmV0dXJuIHRoaXMgPT0g
Jmxpc3RlbmVyOyB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVy
JiBsaXN0ZW5lcikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdGhpcyA9PSAmbGlzdGVuZXI7IH0K
IAogICAgICAgICB2b2lkIHNldEFubm90YXRpb24oUERGUGx1Z2luQW5ub3RhdGlvbiogYW5ub3Rh
dGlvbikgeyBtX2Fubm90YXRpb24gPSBhbm5vdGF0aW9uOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbSBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlv
bi5tbQppbmRleCA0N2JhOWMyOTM1MTg0YTU1ODBkOWU2NzVjNzI1ZWMyN2FjYmYzYTNjLi4zY2E3
ZTQ4OTg4N2NmZTU4YzQzYzhlYTc0MzQ2ZTFjNDc4N2NlYTRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24ubW0KKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0
aW9uLm1tCkBAIC02OSw4ICs2OSw4IEBAIHZvaWQgUERGUGx1Z2luQW5ub3RhdGlvbjo6YXR0YWNo
KEVsZW1lbnQqIHBhcmVudCkKICAgICBtX2VsZW1lbnQgPSBjcmVhdGVBbm5vdGF0aW9uRWxlbWVu
dCgpOwogCiAgICAgbV9lbGVtZW50LT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCAiYW5ub3RhdGlv
biIpOwotICAgIG1fZWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2hhbmdl
RXZlbnQsIG1fZXZlbnRMaXN0ZW5lciwgZmFsc2UpOwotICAgIG1fZWxlbWVudC0+YWRkRXZlbnRM
aXN0ZW5lcihldmVudE5hbWVzKCkuYmx1ckV2ZW50LCBtX2V2ZW50TGlzdGVuZXIsIGZhbHNlKTsK
KyAgICBtX2VsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNoYW5nZUV2ZW50
LCAqbV9ldmVudExpc3RlbmVyLCBmYWxzZSk7CisgICAgbV9lbGVtZW50LT5hZGRFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQsICptX2V2ZW50TGlzdGVuZXIsIGZhbHNlKTsKIAog
ICAgIHVwZGF0ZUdlb21ldHJ5KCk7CiAKQEAgLTg3LDggKzg3LDggQEAgdm9pZCBQREZQbHVnaW5B
bm5vdGF0aW9uOjpjb21taXQoKQogCiBQREZQbHVnaW5Bbm5vdGF0aW9uOjp+UERGUGx1Z2luQW5u
b3RhdGlvbigpCiB7Ci0gICAgbV9lbGVtZW50LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFt
ZXMoKS5jaGFuZ2VFdmVudCwgbV9ldmVudExpc3RlbmVyLmdldCgpLCBmYWxzZSk7Ci0gICAgbV9l
bGVtZW50LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQsIG1fZXZl
bnRMaXN0ZW5lci5nZXQoKSwgZmFsc2UpOworICAgIG1fZWxlbWVudC0+cmVtb3ZlRXZlbnRMaXN0
ZW5lcihldmVudE5hbWVzKCkuY2hhbmdlRXZlbnQsICptX2V2ZW50TGlzdGVuZXIsIGZhbHNlKTsK
KyAgICBtX2VsZW1lbnQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJsdXJFdmVu
dCwgKm1fZXZlbnRMaXN0ZW5lciwgZmFsc2UpOwogCiAgICAgbV9ldmVudExpc3RlbmVyLT5zZXRB
bm5vdGF0aW9uKDApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQubW0KaW5kZXggYjJhM2M3
ZjBmZWZhNWJiMGY1N2YxMzVkM2IzNmFjNzAyMTdlZGQ3Yi4uNjc3NjQ3NTcyZDZmYTIwMWRjMzI5
MzNkYjMxYjA2ZGZjOTFiMDgxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5tbQpAQCAt
NDksMTQgKzQ5LDE0IEBAIFJlZjxQREZQbHVnaW5QYXNzd29yZEZpZWxkPiBQREZQbHVnaW5QYXNz
d29yZEZpZWxkOjpjcmVhdGUoUERGTGF5ZXJDb250cm9sbGVyICpwCiAKIFBERlBsdWdpblBhc3N3
b3JkRmllbGQ6On5QREZQbHVnaW5QYXNzd29yZEZpZWxkKCkKIHsKLSAgICBlbGVtZW50KCktPnJl
bW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleXVwRXZlbnQsIGV2ZW50TGlzdGVuZXIo
KSwgZmFsc2UpOworICAgIGVsZW1lbnQoKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVz
KCkua2V5dXBFdmVudCwgKmV2ZW50TGlzdGVuZXIoKSwgZmFsc2UpOwogfQogCiBQYXNzUmVmUHRy
PEVsZW1lbnQ+IFBERlBsdWdpblBhc3N3b3JkRmllbGQ6OmNyZWF0ZUFubm90YXRpb25FbGVtZW50
KCkKIHsKICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IFBERlBsdWdpblRleHRBbm5vdGF0
aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpOwogICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0
ZSh0eXBlQXR0ciwgInBhc3N3b3JkIik7Ci0gICAgZWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkua2V5dXBFdmVudCwgZXZlbnRMaXN0ZW5lcigpLCBmYWxzZSk7CisgICAgZWxl
bWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkua2V5dXBFdmVudCwgKmV2ZW50TGlz
dGVuZXIoKSwgZmFsc2UpOwogICAgIHJldHVybiBlbGVtZW50OwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0
aW9uLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5U
ZXh0QW5ub3RhdGlvbi5tbQppbmRleCBmYmVkM2E2ZmRhNjg5M2Q4ZDJlNTUzNWRiNDMzZGQyOTQ3
MTZmYjE3Li44YzA3NDY5YzZkNThhYjE3NjI4MTgwODhkYmUxOTU2MmMzNzhmY2JmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRB
bm5vdGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0KQEAgLTc4LDcgKzc4LDcgQEAgUmVmPFBERlBsdWdp
blRleHRBbm5vdGF0aW9uPiBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6Y3JlYXRlKFBERkFubm90
YXRpb24gKmFubm8KIAogUERGUGx1Z2luVGV4dEFubm90YXRpb246On5QREZQbHVnaW5UZXh0QW5u
b3RhdGlvbigpCiB7Ci0gICAgZWxlbWVudCgpLT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFt
ZXMoKS5rZXlkb3duRXZlbnQsIGV2ZW50TGlzdGVuZXIoKSwgZmFsc2UpOworICAgIGVsZW1lbnQo
KS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50LCAqZXZlbnRM
aXN0ZW5lcigpLCBmYWxzZSk7CiB9CiAKIFBhc3NSZWZQdHI8RWxlbWVudD4gUERGUGx1Z2luVGV4
dEFubm90YXRpb246OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkKQEAgLTk3LDcgKzk3LDcgQEAg
UGFzc1JlZlB0cjxFbGVtZW50PiBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6Y3JlYXRlQW5ub3Rh
dGlvbkVsZW1lbnQoKQogICAgIGVsc2UKICAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoaW5wdXRUYWcsIGZhbHNlKTsKIAotICAgIGVsZW1lbnQtPmFkZEV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLmtleWRvd25FdmVudCwgZXZlbnRMaXN0ZW5lcigpLCBmYWxzZSk7Cisg
ICAgZWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50LCAq
ZXZlbnRMaXN0ZW5lcigpLCBmYWxzZSk7CiAKICAgICBTdHlsZWRFbGVtZW50KiBzdHlsZWRFbGVt
ZW50ID0gc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KGVsZW1lbnQuZ2V0KCkpOwogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggZjkxZTgzYzIyMWZlMTc3ZmFlMTc4YWU4OWVkZGEwNGNjZjI2NTZmYi4uZDA3MmVlYjgxNTVj
NjBkNTc1ZDM0MTczOTg4NzNkZDcyYThjMjhhMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE2
LTA1LTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgR2VuZXJh
dGUgYmluZGluZ3MgY29kZSBmb3IgRXZlbnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigpIC8gcmVt
b3ZlRXZlbnRMaXN0ZW5lcigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTc4ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZWJhc2VsaW5lIGV4aXN0aW5nIHRlc3Qgbm93IHRoYXQgdGhlICdsZW5ndGgn
IHByb3BlcnR5IG9mIHRob3NlIGZ1bmN0aW9ucworICAgICAgICBoYXZlIGNoYW5nZWQuIFRoaXMg
aXMgYmVjYXVzZSB0aGUgSURMIGhhcyBiZWVuIHVwZGF0ZWQgdG8gbWF0Y2ggb3VyCisgICAgICAg
IGltcGxlbWVudGF0aW9uIChhbGwgcGFyYW1ldGVycyBhcmUgb3B0aW9uYWwpLiBXaGlsZSB0aGlz
IGRvZXMgbm90IG1hdGNoCisgICAgICAgIHRoZSBzcGVjaWZpY2F0aW9uLCB0aGUgbmV3IGxlbmd0
aCBub3cgbWF0Y2hlcyBvdXIgYWN0dWFsIGJlaGF2aW9yLgorCisgICAgICAgICoganMvZG9tL2Z1
bmN0aW9uLWxlbmd0aC1leHBlY3RlZC50eHQ6CisKIDIwMTYtMDUtMTggIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KIAogICAgICAgICBTeW5jIERPTSBleGNlcHRp
b24gdHlwZXMgd2l0aCBXZWJJREwgYW5kIHVwZGF0ZSBwcm9taXNlIHJlamVjdGlvbnMKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9mdW5jdGlvbi1sZW5ndGgtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvanMvZG9tL2Z1bmN0aW9uLWxlbmd0aC1leHBlY3RlZC50eHQKaW5kZXggNGEz
NmI5OGY2YjhjMjIwODI0YmI5MmVhMDg1YWMxM2E2MDRiNDdlYS4uZTk1YmU1MGU1MDY1YWQ3NzE2
Y2I1ODkzMGY0OGUyMzE3NGE0YTk1OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvZG9tL2Z1
bmN0aW9uLWxlbmd0aC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2Z1bmN0
aW9uLWxlbmd0aC1leHBlY3RlZC50eHQKQEAgLTgsNyArOCw3IEBAIFBBU1Mgd2luZG93Lm9wZW4u
bGVuZ3RoIGlzIDIKIFBBU1Mgd2luZG93LnNob3dNb2RhbERpYWxvZy5sZW5ndGggaXMgMQogUEFT
UyB3aW5kb3cuc2V0VGltZW91dC5sZW5ndGggaXMgMQogUEFTUyB3aW5kb3cuY2xlYXJUaW1lb3V0
Lmxlbmd0aCBpcyAwCi1QQVNTIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyLmxlbmd0aCBpcyAyCitG
QUlMIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyLmxlbmd0aCBzaG91bGQgYmUgMi4gV2FzIDAuCiBQ
QVNTIEFycmF5LnByb3RvdHlwZS5jb25jYXQubGVuZ3RoIGlzIDEKIFBBU1MgQXJyYXkucHJvdG90
eXBlLmpvaW4ubGVuZ3RoIGlzIDEKIFBBU1MgQXJyYXkucHJvdG90eXBlLnB1c2gubGVuZ3RoIGlz
IDEK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279349</attachid>
            <date>2016-05-18 22:25:06 -0700</date>
            <delta_ts>2016-05-18 22:32:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157882-20160518222605.patch</filename>
            <type>text/plain</type>
            <size>67315</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxMDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzczYWNlZjg4MjA4MzNi
MTc1ZjVmNGFkMjMyY2NjZjVhMzQ2MDUyYi4uNGI5NjcyZWJkZGRkNDU2ZDU5NWIxODA3NzBkNmE1
NDBkYjk4Zjk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxNi0wNS0xOCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEdlbmVyYXRlIGJpbmRpbmdz
IGNvZGUgZm9yIEV2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoKSAvIHJlbW92ZUV2ZW50TGlz
dGVuZXIoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU3ODgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
R2VuZXJhdGUgYmluZGluZ3MgY29kZSBmb3IgRXZlbnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigp
IC8gcmVtb3ZlRXZlbnRMaXN0ZW5lcigpCisgICAgICAgIGluc3RlYWQgb2YgaGFyZGNvZGluZyB0
aGVtIGluIHRoZSBiaW5kaW5ncyBnZW5lcmF0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBy
ZWJhc2VsaW5lZCBleGlzdGluZyB0ZXN0LiBUaGUgb25seSBXZWItRXhwb3NlZCBiZWhhdmlvciBj
aGFuZ2UKKyAgICAgICAgaXMgdGhhdCAnbGVuZ3RoJyBwcm9wZXJ0eSBvZiB0aG9zZSBmdW5jdGlv
bnMgaGF2ZSBjaGFuZ2VkLiBUaGlzIGlzIGJlY2F1c2UgdGhlCisgICAgICAgIElETCBoYXMgYmVl
biB1cGRhdGVkIHRvIG1hdGNoIG91ciBpbXBsZW1lbnRhdGlvbiAoYWxsIHBhcmFtZXRlcnMgYXJl
IG9wdGlvbmFsKS4KKyAgICAgICAgV2hpbGUgdGhpcyBkb2VzIG5vdCBtYXRjaCB0aGUgc3BlY2lm
aWNhdGlvbiwgdGhlIG5ldyBsZW5ndGggbm93IG1hdGNoZXMgb3VyCisgICAgICAgIGFjdHVhbCBi
ZWhhdmlvci4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3Vy
Y2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6
YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NjaGVkdWxlZFNvdXJj
ZU5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9T
Y3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nv
ck5vZGU6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvY2Vz
c29yTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9TY3JpcHRQcm9jZXNzb3JOb2RlLmg6CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9HT2Jq
ZWN0RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHT2JqZWN0RXZlbnRMaXN0
ZW5lcjo6b3BlcmF0b3I9PSk6CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZl
bnRMaXN0ZW5lci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAg
ICAoV2ViQ29yZTo6ZXZlbnRIYW5kbGVyQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRM
aXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6Y2Fz
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OmpzRnVuY3Rp
b24pOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL29iamMvT2JqQ0V2ZW50TGlzdGVuZXIu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL09iakNFdmVudExpc3RlbmVyLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6T2JqQ0V2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbik6CisgICAgICAgIChKU1ZhbHVlVG9OYXRpdmUpOgorICAgICAgICAoR2V0UGFy
ZW50Q2xhc3NOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEdldENhbGxiYWNrQ2xhc3NOYW1lKTog
RGVsZXRlZC4KKyAgICAgICAgKEdldEpTQ2FsbGJhY2tEYXRhVHlwZSk6IERlbGV0ZWQuCisgICAg
ICAgICogZG9tL0V2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lck1h
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRMaXN0ZW5lclRvVmVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50TGlzdGVuZXJNYXA6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpyZW1v
dmVMaXN0ZW5lckZyb21WZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRMaXN0ZW5lck1h
cDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlMaXN0ZW5lcnNOb3RDcmVhdGVkRnJv
bU1hcmt1cFRvVGFyZ2V0KToKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lck1hcC5oOgorICAg
ICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdl
dDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6YWRk
RXZlbnRMaXN0ZW5lckZvckJpbmRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0
OjpyZW1vdmVFdmVudExpc3RlbmVyRm9yQmluZGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRU
YXJnZXQ6OnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRUYXJnZXQ6OmNsZWFyQXR0cmlidXRlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogZG9tL0V2
ZW50VGFyZ2V0Lmg6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0LmlkbDoKKyAgICAgICAgKiBk
b20vTWVzc2FnZVBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmFkZEV2
ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5oOgorICAgICAgICAqIGRv
bS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyeUFkZEV2ZW50TGlzdGVuZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3Jl
Ojp0cnlSZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlbW92
ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogZG9tL1Jl
Z2lzdGVyZWRFdmVudExpc3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RlcmVkRXZl
bnRMaXN0ZW5lcjo6UmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGh0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojph
ZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJl
bW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURvY3VtZW50OjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGh0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHNBcHBsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQXBw
bGU6OnNob3dDbG9zZWRDYXB0aW9uVHJhY2tMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbHNBcHBsZTo6aGlkZUNsb3NlZENhcHRpb25UcmFja0xpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PSk6CisgICAg
ICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRv
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAg
ICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjphZGRFdmVudExpc3Rl
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIp
OgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjph
dHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI6OmRl
dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcjo6b3Bl
cmF0b3I9PSk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb25kaXRpb25FdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50Ojpjb25uZWN0Q29uZGl0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6ZGlzY29ubmVjdENvbmRpdGlvbnMpOgorCiAy
MDE2LTA1LTE4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBN
b2Rlcm4gSURCOiBNYWtlIFRlc3RSdW5uZXIuY2xlYXJBbGxEYXRhYmFzZXMgYWxzbyBkZWxldGUg
SW5kZXhlZERCIGRhdGFiYXNlcyAob25jZSBkb2luZyBzbyBpcyBzdXBwb3J0ZWQpLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hh
bmdlTG9nCmluZGV4IDNhNDBkMzUwN2JjNjc2YzJmNzhhOTk1MWU2NTU2YWVhNTY5ZGMwNWEuLjQ0
M2FkNGE5YWIxNDUyZGU5MWNjMTRiYmY2Mjk3YmY4NjQyOGMxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAxNi0wNS0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIEdlbmVyYXRlIGJpbmRpbmdzIGNvZGUgZm9yIEV2ZW50VGFyZ2V0LmFk
ZEV2ZW50TGlzdGVuZXIoKSAvIHJlbW92ZUV2ZW50TGlzdGVuZXIoKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3ODgyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2VuZXJhdGUgYmluZGluZ3MgY29kZSBm
b3IgRXZlbnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigpIC8gcmVtb3ZlRXZlbnRMaXN0ZW5lcigp
CisgICAgICAgIGluc3RlYWQgb2YgaGFyZGNvZGluZyB0aGVtIGluIHRoZSBiaW5kaW5ncyBnZW5l
cmF0b3IuCisKKyAgICAgICAgKiBET01FdmVudHNDbGFzc2VzLmNwcDoKKyAgICAgICAgKFdlYkV2
ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIERPTUV2ZW50c0NsYXNzZXMuaDoK
KwogMjAxNi0wNS0xNiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQgcm9sbG91dCByMjAwOTI0LiBDYXVzZWQganMvcmVncmVzcy9zdHJp
bmctcmVwbGFjZS1nZW5lcmljLmh0bWwgdG8gZmFpbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjMWVhOTQ0NzM5
ZmJiNTRlNmJhZmEzOGFlMzM5NDEzNGMyMmMxODQyLi45MWE1Y2EyZmFlNDQxZTBkMDdjZTdjOTIw
NzRkMTU5NWI2Zjg4Zjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTYtMDUtMTgg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBHZW5lcmF0ZSBiaW5k
aW5ncyBjb2RlIGZvciBFdmVudFRhcmdldC5hZGRFdmVudExpc3RlbmVyKCkgLyByZW1vdmVFdmVu
dExpc3RlbmVyKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1Nzg4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEdlbmVyYXRlIGJpbmRpbmdzIGNvZGUgZm9yIEV2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVu
ZXIoKSAvIHJlbW92ZUV2ZW50TGlzdGVuZXIoKQorICAgICAgICBpbnN0ZWFkIG9mIGhhcmRjb2Rp
bmcgdGhlbSBpbiB0aGUgYmluZGluZ3MgZ2VuZXJhdG9yLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW5Bbm5vdGF0aW9uOjphdHRhY2gpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5B
bm5vdGF0aW9uOjp+UERGUGx1Z2luQW5ub3RhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW5QYXNzd29yZEZpZWxkOjp+UERGUGx1Z2luUGFzc3dvcmRGaWVsZCk6CisgICAgICAg
IChXZWJLaXQ6OlBERlBsdWdpblBhc3N3b3JkRmllbGQ6OmNyZWF0ZUFubm90YXRpb25FbGVtZW50
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0
aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6flBERlBs
dWdpblRleHRBbm5vdGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luVGV4dEFubm90
YXRpb246OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KToKKwogMjAxNi0wNS0xOCAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kZXJuIElEQjogTWFrZSBUZXN0
UnVubmVyLmNsZWFyQWxsRGF0YWJhc2VzIGFsc28gZGVsZXRlIEluZGV4ZWREQiBkYXRhYmFzZXMg
KG9uY2UgZG9pbmcgc28gaXMgc3VwcG9ydGVkKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcAppbmRl
eCBiYzRlZmI0YjcyY2U2ZDdlYmNjY2UzOGViNjA5OTk1Mzk0MGU5YjUwLi40Y2E2YTA0NDJmZDNh
OTMxNTdjNzI1MTRmMzQ3YTFmYWM3ODM2NGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwCkBA
IC0yMDEsNyArMjAxLDcgQEAgdm9pZCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OmZpbmlzaCgp
CiAgICAgfQogfQogCi1ib29sIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6YWRkRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+
JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgQXVkaW9TY2hlZHVsZWRTb3VyY2VO
b2RlOjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8
RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIGJvb2wg
c3VjY2VzcyA9IEF1ZGlvTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdURk1vdmUo
bGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKICAgICBpZiAoc3VjY2VzcyAmJiBldmVudFR5cGUgPT0g
ZXZlbnROYW1lcygpLmVuZGVkRXZlbnQpCkBAIC0yMDksNyArMjA5LDcgQEAgYm9vbCBBdWRpb1Nj
aGVkdWxlZFNvdXJjZU5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIFIKICAgICByZXR1cm4gc3VjY2VzczsKIH0KIAotYm9vbCBBdWRpb1NjaGVkdWxl
ZFNvdXJjZU5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIEF1
ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVy
ZSkKIHsKICAgICBib29sIHN1Y2Nlc3MgPSBBdWRpb05vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIo
ZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CiAgICAgaWYgKHN1Y2Nlc3MgJiYgZXZl
bnRUeXBlID09IGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgKaW5k
ZXggZWNlZGUzOGEwODk0MjZkMDljZGU2MWQ0MGNiN2Y3NDNiOWM2MTA1NS4uY2I0ZGQzY2RlODIx
NzVjZDE2NTYzZDBkODhmZmNjMTE3Y2ExZDA5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCkBAIC0x
MDEsOCArMTAxLDggQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgVW5rbm93
blRpbWU7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0
dXJlKSBvdmVycmlkZTsKLSAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpIG92ZXJy
aWRlOworICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7Cisg
ICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBFdmVudExpc3RlbmVyJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKICAgICB2b2lkIHJl
bW92ZUFsbEV2ZW50TGlzdGVuZXJzKCkgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAppbmRl
eCA2ODVjNjczMDg0YzhjMWYxODMzMGZmOWZmMzY3NjUzMDljZDM5M2U1Li4wY2M0MWI3NTY4YmIw
NTEwZTE1NWVlOWNlYzEwMDU2MWViNzRiYTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKQEAgLTI3Myw3ICsy
NzMsNyBAQCBkb3VibGUgU2NyaXB0UHJvY2Vzc29yTm9kZTo6bGF0ZW5jeVRpbWUoKSBjb25zdAog
ICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7CiB9CiAK
LWJvb2wgU2NyaXB0UHJvY2Vzc29yTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wg
dXNlQ2FwdHVyZSkKK2Jvb2wgU2NyaXB0UHJvY2Vzc29yTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVu
ZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICBib29sIHN1Y2Nlc3MgPSBBdWRpb05vZGU6OmFk
ZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7
CiAgICAgaWYgKHN1Y2Nlc3MgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5hdWRpb3Byb2Nl
c3NFdmVudCkKQEAgLTI4MSw3ICsyODEsNyBAQCBib29sIFNjcmlwdFByb2Nlc3Nvck5vZGU6OmFk
ZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cgogICAg
IHJldHVybiBzdWNjZXNzOwogfQogCi1ib29sIFNjcmlwdFByb2Nlc3Nvck5vZGU6OnJlbW92ZUV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIq
IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIFNjcmlwdFByb2Nlc3Nvck5vZGU6OnJl
bW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlz
dGVuZXImIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgYm9vbCBzdWNjZXNzID0g
QXVkaW9Ob2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNh
cHR1cmUpOwogICAgIGlmIChzdWNjZXNzICYmIGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuYXVk
aW9wcm9jZXNzRXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oCmluZGV4IDZiNjVkMDE4ZWJmYWY2OTZhMDVkZDhkM2Rm
ODA0YTYzYzRiYWQ0MjQuLjEzMDYyNTkwOTBhZDQzYjJhZjVkNjM3MjJkNTVlMjQzM2Q4M2JiMmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vz
c29yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJv
Y2Vzc29yTm9kZS5oCkBAIC03Myw4ICs3Myw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGZpcmVQ
cm9jZXNzRXZlbnQoKTsKIAotICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVy
ZSkgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlk
ZTsKKyAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAg
IGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
RXZlbnRMaXN0ZW5lciYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1v
dmVBbGxFdmVudExpc3RlbmVycygpIG92ZXJyaWRlOwogCiAgICAgLy8gRG91YmxlIGJ1ZmZlcmlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZl
bnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RF
dmVudExpc3RlbmVyLmNwcAppbmRleCBkNGExZDE4MzUxY2YxYWQ0MTMzMmRlMTU3ZDA2YjI5MTQx
NzhiYWFjLi41Yjc4YjliMDFmMjcyNzAxNTkxNjRjNWIyMmNhMTJiYWEwYjg1YWMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RFdmVudExpc3RlbmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RFdmVudExp
c3RlbmVyLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIEdPYmplY3RFdmVudExpc3RlbmVyOjpo
YW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqIGV2ZW50KQogICAgIGdf
dmFsdWVfdW5zZXQocGFyYW1ldGVycyArIDEpOwogfQogCi1ib29sIEdPYmplY3RFdmVudExpc3Rl
bmVyOjpvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyKQorYm9vbCBHT2Jq
ZWN0RXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5l
cikgY29uc3QKIHsKICAgICBpZiAoY29uc3QgR09iamVjdEV2ZW50TGlzdGVuZXIqIGdvYmplY3RF
dmVudExpc3RlbmVyID0gR09iamVjdEV2ZW50TGlzdGVuZXI6OmNhc3QoJmxpc3RlbmVyKSkKICAg
ICAgICAgcmV0dXJuIG1fdGFyZ2V0ID09IGdvYmplY3RFdmVudExpc3RlbmVyLT5tX3RhcmdldApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZlbnRM
aXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZlbnRM
aXN0ZW5lci5oCmluZGV4IGUxMTdmNDBkNmVjZTVkNGY2NjhjMDk5YjgwOTU2YTczYjBmYzZjODYu
LjIwNmJiZDc4OWUzMTA5NzBlZmRkMmNhN2Q4MmZjNzFiYWM5NmZiZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVjdEV2ZW50TGlzdGVuZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RFdmVudExpc3RlbmVyLmgK
QEAgLTM1LDE0ICszNSwxNCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBhZGRFdmVudExp
c3RlbmVyKEdPYmplY3QqIHRhcmdldCwgRXZlbnRUYXJnZXQqIGNvcmVUYXJnZXQsIGNvbnN0IGNo
YXIqIGRvbUV2ZW50TmFtZSwgR0Nsb3N1cmUqIGhhbmRsZXIsIGJvb2wgdXNlQ2FwdHVyZSkKICAg
ICB7Ci0gICAgICAgIFJlZlB0cjxHT2JqZWN0RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIoYWRvcHRS
ZWYobmV3IEdPYmplY3RFdmVudExpc3RlbmVyKHRhcmdldCwgY29yZVRhcmdldCwgZG9tRXZlbnRO
YW1lLCBoYW5kbGVyLCB1c2VDYXB0dXJlKSkpOwotICAgICAgICByZXR1cm4gY29yZVRhcmdldC0+
YWRkRXZlbnRMaXN0ZW5lcihkb21FdmVudE5hbWUsIGxpc3RlbmVyLnJlbGVhc2UoKSwgdXNlQ2Fw
dHVyZSk7CisgICAgICAgIFJlZjxHT2JqZWN0RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIoYWRvcHRS
ZWYoKm5ldyBHT2JqZWN0RXZlbnRMaXN0ZW5lcih0YXJnZXQsIGNvcmVUYXJnZXQsIGRvbUV2ZW50
TmFtZSwgaGFuZGxlciwgdXNlQ2FwdHVyZSkpKTsKKyAgICAgICAgcmV0dXJuIGNvcmVUYXJnZXQt
PmFkZEV2ZW50TGlzdGVuZXIoZG9tRXZlbnROYW1lLCBXVEZNb3ZlKGxpc3RlbmVyKSwgdXNlQ2Fw
dHVyZSk7CiAgICAgfQogCiAgICAgc3RhdGljIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihHT2Jq
ZWN0KiB0YXJnZXQsIEV2ZW50VGFyZ2V0KiBjb3JlVGFyZ2V0LCBjb25zdCBjaGFyKiBkb21FdmVu
dE5hbWUsIEdDbG9zdXJlKiBoYW5kbGVyLCBib29sIHVzZUNhcHR1cmUpCiAgICAgewogICAgICAg
ICBHT2JqZWN0RXZlbnRMaXN0ZW5lciBrZXkodGFyZ2V0LCBjb3JlVGFyZ2V0LCBkb21FdmVudE5h
bWUsIGhhbmRsZXIsIHVzZUNhcHR1cmUpOwotICAgICAgICByZXR1cm4gY29yZVRhcmdldC0+cmVt
b3ZlRXZlbnRMaXN0ZW5lcihkb21FdmVudE5hbWUsICZrZXksIHVzZUNhcHR1cmUpOworICAgICAg
ICByZXR1cm4gY29yZVRhcmdldC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihkb21FdmVudE5hbWUsIGtl
eSwgdXNlQ2FwdHVyZSk7CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgZ29iamVjdERlc3Ryb3ll
ZENhbGxiYWNrKEdPYmplY3RFdmVudExpc3RlbmVyKiBsaXN0ZW5lciwgR09iamVjdCopCkBAIC01
Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIDogMDsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcik7CisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKSBjb25zdCBvdmVycmlkZTsK
IAogcHJpdmF0ZToKICAgICBHT2JqZWN0RXZlbnRMaXN0ZW5lcihHT2JqZWN0KiwgRXZlbnRUYXJn
ZXQqLCBjb25zdCBjaGFyKiBkb21FdmVudE5hbWUsIEdDbG9zdXJlKiwgYm9vbCBjYXB0dXJlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCmluZGV4
IGNjNTRmZDRhODE4NDk3N2E2MDRiNWY5NGE1ODUyMTMyYTFkODY4N2UuLmJmZDc4YTgyOTVlODM4
MTIxOWIzYjJkYmE1ZjQ0YWIwOTBlMTc2NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNFdmVudExpc3RlbmVyLmNwcApAQCAtMTYzLDIwICsxNjMsMTMgQEAgYm9vbCBKU0V2
ZW50TGlzdGVuZXI6OnZpcnR1YWxpc0F0dHJpYnV0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1faXNB
dHRyaWJ1dGU7CiB9CiAKLWJvb2wgSlNFdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IEV2
ZW50TGlzdGVuZXImIGxpc3RlbmVyKQorYm9vbCBKU0V2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0o
Y29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpIGNvbnN0CiB7CiAgICAgaWYgKGNvbnN0IEpT
RXZlbnRMaXN0ZW5lcioganNFdmVudExpc3RlbmVyID0gSlNFdmVudExpc3RlbmVyOjpjYXN0KCZs
aXN0ZW5lcikpCiAgICAgICAgIHJldHVybiBtX2pzRnVuY3Rpb24gPT0ganNFdmVudExpc3RlbmVy
LT5tX2pzRnVuY3Rpb24gJiYgbV9pc0F0dHJpYnV0ZSA9PSBqc0V2ZW50TGlzdGVuZXItPm1faXNB
dHRyaWJ1dGU7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWY8SlNFdmVudExpc3RlbmVyPiBj
cmVhdGVKU0V2ZW50TGlzdGVuZXJGb3JBZGQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpT
T2JqZWN0JiBsaXN0ZW5lciwgSlNDOjpKU09iamVjdCYgd3JhcHBlcikKLXsKLSAgICAvLyBGSVhN
RTogVGhpcyBhYnN0cmFjdGlvbiBpcyBubyBsb25nZXIgbmVlZGVkLiBJdCB3YXMgcGFydCBvZiBz
dXBwb3J0IGZvciBTVkdFbGVtZW50SW5zdGFuY2UuCi0gICAgLy8gV2Ugc2hvdWxkIHJlbW92ZSBp
dCBhbmQgc2ltcGxpZnkgdGhlIGJpbmRpbmdzIGdlbmVyYXRpb24gc2NyaXB0cy4KLSAgICByZXR1
cm4gSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoJmxpc3RlbmVyLCAmd3JhcHBlciwgZmFsc2UsIGN1
cnJlbnRXb3JsZCgmc3RhdGUpKTsKLX0KLQogc3RhdGljIGlubGluZSBKU0M6OkpTVmFsdWUgZXZl
bnRIYW5kbGVyQXR0cmlidXRlKEV2ZW50TGlzdGVuZXIqIGFic3RyYWN0TGlzdGVuZXIsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgaWYgKCFhYnN0cmFjdExpc3RlbmVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaAppbmRleCBh
MDM5NTUzNzFiZjFjZjNjY2E4MDAwYTI0NmI0YjY2NmE4OWUyYTk1Li5lNTVhMjViMGY2OTQzZTIy
YjI4MzlmMTg5MTgzZTk2NzhiYjkxNzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0V2ZW50TGlzdGVuZXIuaApAQCAtNDMsNiArNDMsMTQgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBKU0V2ZW50TGlzdGVuZXIobGlzdGVuZXIsIHdyYXBwZXIsIGlz
QXR0cmlidXRlLCB3b3JsZCkpOwogICAgIH0KIAorICAgIHN0YXRpYyBSZWZQdHI8SlNFdmVudExp
c3RlbmVyPiBjcmVhdGUoSlNDOjpKU1ZhbHVlIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0JiB3cmFw
cGVyLCBib29sIGlzQXR0cmlidXRlLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQorICAgIHsKKyAg
ICAgICAgaWYgKFVOTElLRUxZKCFsaXN0ZW5lci5pc09iamVjdCgpKSkKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNFdmVudExpc3Rl
bmVyKEpTQzo6YXNPYmplY3QobGlzdGVuZXIpLCAmd3JhcHBlciwgaXNBdHRyaWJ1dGUsIHdvcmxk
KSk7CisgICAgfQorCiAgICAgc3RhdGljIGNvbnN0IEpTRXZlbnRMaXN0ZW5lciogY2FzdChjb25z
dCBFdmVudExpc3RlbmVyKiBsaXN0ZW5lcikKICAgICB7CiAgICAgICAgIHJldHVybiBsaXN0ZW5l
ci0+dHlwZSgpID09IEpTRXZlbnRMaXN0ZW5lclR5cGUKQEAgLTUyLDcgKzYwLDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB+SlNFdmVudExpc3RlbmVyKCk7CiAKLSAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3RoZXIpIG92ZXJyaWRlOworICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAv
LyBSZXR1cm5zIHRydWUgaWYgdGhpcyBldmVudCBsaXN0ZW5lciB3YXMgY3JlYXRlZCBmb3IgYW4g
ZXZlbnQgaGFuZGxlciBhdHRyaWJ1dGUsIGxpa2UgIm9ubG9hZCIgb3IgIm9uY2xpY2siLgogICAg
IGJvb2wgaXNBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBtX2lzQXR0cmlidXRlOyB9CkBAIC05
OSw5ICsxMDcsNiBAQCB2b2lkIHNldERvY3VtZW50RXZlbnRIYW5kbGVyQXR0cmlidXRlKEpTQzo6
RXhlY1N0YXRlJiwgSlNDOjpKU09iamVjdCYsIEhUTUxFbGVtZQogSlNDOjpKU1ZhbHVlIGRvY3Vt
ZW50RXZlbnRIYW5kbGVyQXR0cmlidXRlKERvY3VtZW50JiwgY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUpOwogdm9pZCBzZXREb2N1bWVudEV2ZW50SGFuZGxlckF0dHJpYnV0ZShKU0M6OkV4
ZWNTdGF0ZSYsIEpTQzo6SlNPYmplY3QmLCBEb2N1bWVudCYsIGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBKU0M6OkpTVmFsdWUpOwogCi1SZWY8SlNFdmVudExpc3RlbmVyPiBjcmVhdGVK
U0V2ZW50TGlzdGVuZXJGb3JBZGQoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTT2JqZWN0JiBsaXN0
ZW5lciwgSlNDOjpKU09iamVjdCYgd3JhcHBlcik7Ci1SZWY8SlNFdmVudExpc3RlbmVyPiBjcmVh
dGVKU0V2ZW50TGlzdGVuZXJGb3JSZW1vdmUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTT2JqZWN0
JiBsaXN0ZW5lciwgSlNDOjpKU09iamVjdCYgd3JhcHBlcik7Ci0KIGlubGluZSBKU0M6OkpTT2Jq
ZWN0KiBKU0V2ZW50TGlzdGVuZXI6OmpzRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgY29uc3QKIHsKICAgICAvLyBpbml0aWFsaXplSlNGdW5j
dGlvbiBjYW4gdHJpZ2dlciBjb2RlIHRoYXQgZGVsZXRlcyB0aGlzIGV2ZW50IGxpc3RlbmVyCkBA
IC0xMzMsMTEgKzEzOCw2IEBAIGlubGluZSBKU0M6OkpTT2JqZWN0KiBKU0V2ZW50TGlzdGVuZXI6
OmpzRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0CiAgICAgcmV0dXJuIG1f
anNGdW5jdGlvbi5nZXQoKTsKIH0KIAotaW5saW5lIFJlZjxKU0V2ZW50TGlzdGVuZXI+IGNyZWF0
ZUpTRXZlbnRMaXN0ZW5lckZvclJlbW92ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNP
YmplY3QmIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0JiB3cmFwcGVyKQotewotICAgIHJldHVybiBj
cmVhdGVKU0V2ZW50TGlzdGVuZXJGb3JBZGQoc3RhdGUsIGxpc3RlbmVyLCB3cmFwcGVyKTsKLX0K
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSlNFdmVudExpc3RlbmVyX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ0V2ZW50TGlzdGVu
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ0V2ZW50TGlzdGVuZXIuaApp
bmRleCBmM2U5ODQzN2ZiYWFkNzlhMmNiNTMzZGJiODM4MTQzMzYxZjNhNTNhLi4yM2M5ODQ1NTU0
ZmU5OGU3MDcwZjlmOWExZGJjZjg3ZDU3NDM0NTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL09iakNFdmVudExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvb2JqYy9PYmpDRXZlbnRMaXN0ZW5lci5oCkBAIC01Miw3ICs1Miw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBPYmpDRXZlbnRMaXN0ZW5lcihPYmpDTGlzdGVuZXIp
OwogICAgICAgICB2aXJ0dWFsIH5PYmpDRXZlbnRMaXN0ZW5lcigpOwotICAgICAgICB2aXJ0dWFs
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJik7CisgICAgICAgIHZpcnR1YWwg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImKSBjb25zdDsKICAgICAgICAgdmly
dHVhbCB2b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCopOwog
CiAgICAgICAgIFJldGFpblB0cjxPYmpDTGlzdGVuZXI+IG1fbGlzdGVuZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL09iakNFdmVudExpc3RlbmVyLm1tIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9PYmpDRXZlbnRMaXN0ZW5lci5tbQppbmRleCAwOTlk
NDU1YzBjYTViNDc1ODc0NDk3ZWRmMjllMjcxNmIxZjQwNmMzLi4zMmZlNmU2NTFiMTUwNTFjMjEz
MjNjNzljNjAzOTQ4YjI1NDBhNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9vYmpjL09iakNFdmVudExpc3RlbmVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L29iamMvT2JqQ0V2ZW50TGlzdGVuZXIubW0KQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBPYmpDRXZl
bnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50KiBl
dmVudCkKICAgICBbbGlzdGVuZXIgaGFuZGxlRXZlbnQ6a2l0KGV2ZW50KV07CiB9CiAKLWJvb2wg
T2JqQ0V2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVu
ZXIpCitib29sIE9iakNFdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVu
ZXImIGxpc3RlbmVyKSBjb25zdAogewogICAgIGlmIChjb25zdCBPYmpDRXZlbnRMaXN0ZW5lciog
b2JqQ0V2ZW50TGlzdGVuZXIgPSBPYmpDRXZlbnRMaXN0ZW5lcjo6Y2FzdCgmbGlzdGVuZXIpKQog
ICAgICAgICByZXR1cm4gbV9saXN0ZW5lciA9PSBvYmpDRXZlbnRMaXN0ZW5lci0+bV9saXN0ZW5l
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0KaW5kZXggZjcxNzhkMTUwMTQxNjNiMDE1ZDFmZmFlYmRmM2IwNGFjNmNhZDgzMi4uNTE1
ZGM0ZjYyZDhlNDllNjVjMTkxNWRlY2M1MWY1ZjRiYjM2MGY4OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTE0MywyNiAr
MTQzLDYgQEAgc3ViIEV2ZW50SGFuZGxlckF0dHJpYnV0ZUV2ZW50TmFtZQogICAgIHJldHVybiAi
ZXZlbnROYW1lcygpLiR7ZXZlbnRUeXBlfUV2ZW50IjsKIH0KIAotc3ViIEdlbmVyYXRlRXZlbnRM
aXN0ZW5lckNhbGwKLXsKLSAgICBteSAkZnVuY3Rpb25OYW1lID0gc2hpZnQ7Ci0gICAgbXkgJHN1
ZmZpeCA9IHVjZmlyc3QgJGZ1bmN0aW9uTmFtZTsKLSAgICBteSAkcGFzc1JlZlB0ckhhbmRsaW5n
ID0gKCRmdW5jdGlvbk5hbWUgZXEgImFkZCIpID8gIiIgOiAiLnB0cigpIjsKLQotICAgICRpbXBs
SW5jbHVkZXN7IkpTRXZlbnRMaXN0ZW5lci5oIn0gPSAxOwotCi0gICAgbXkgQEdlbmVyYXRlRXZl
bnRMaXN0ZW5lckltcGwgPSAoKTsKLQotICAgIHB1c2goQEdlbmVyYXRlRXZlbnRMaXN0ZW5lcklt
cGwsIDw8RU5EKTsKLSAgICBKU1ZhbHVlIGxpc3RlbmVyID0gc3RhdGUtPmFyZ3VtZW50KDEpOwot
ICAgIGlmIChVTkxJS0VMWSghbGlzdGVuZXIuaXNPYmplY3QoKSkpCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgaW1wbC4ke2Z1bmN0aW9uTmFtZX1F
dmVudExpc3RlbmVyKHN0YXRlLT5hcmd1bWVudCgwKS50b1N0cmluZyhzdGF0ZSktPnRvQXRvbWlj
U3RyaW5nKHN0YXRlKSwgY3JlYXRlSlNFdmVudExpc3RlbmVyRm9yJHN1ZmZpeCgqc3RhdGUsICph
c09iamVjdChsaXN0ZW5lciksICpjYXN0ZWRUaGlzKSRwYXNzUmVmUHRySGFuZGxpbmcsIHN0YXRl
LT5hcmd1bWVudCgyKS50b0Jvb2xlYW4oc3RhdGUpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwotRU5ECi0gICAgcmV0dXJuIEBHZW5lcmF0ZUV2ZW50TGlzdGVu
ZXJJbXBsOwotfQotCiBzdWIgR2V0UGFyZW50Q2xhc3NOYW1lCiB7CiAgICAgbXkgJGludGVyZmFj
ZSA9IHNoaWZ0OwpAQCAtMzIxOSwzMCArMzE5OSwyNCBAQCBFTkQKICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgIyBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIGxlZ2FjeSBjb250ZW50LCB0aGUg
RXZlbnRMaXN0ZW5lciBjYWxscyBhcmUgZ2VuZXJhdGVkIHdpdGhvdXQgR2VuZXJhdGVBcmd1bWVu
dHNDb3VudENoZWNrLgotICAgICAgICAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPm5hbWUgZXEgImFkZEV2ZW50TGlzdGVuZXIiKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgR2VuZXJhdGVFdmVudExpc3RlbmVyQ2FsbCgiYWRkIikpOwot
ICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSBl
cSAicmVtb3ZlRXZlbnRMaXN0ZW5lciIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCBHZW5lcmF0ZUV2ZW50TGlzdGVuZXJDYWxsKCJyZW1vdmUiKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0
ZUFyZ3VtZW50c0NvdW50Q2hlY2soXEBpbXBsQ29udGVudCwgJGZ1bmN0aW9uLCAkaW50ZXJmYWNl
KTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRyYWlzZXNFeGNlcHRpb25XaXRoTWVz
c2FnZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSBlYztcbiIpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNpZiAoJHJhaXNlc0V4Y2VwdGlvbikgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xuIik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRl
QXJndW1lbnRzQ291bnRDaGVjayhcQGltcGxDb250ZW50LCAkZnVuY3Rpb24sICRpbnRlcmZhY2Up
OwogCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5Rm9yTm9kZSJ9KSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFzaG91bGRBbGxv
d0FjY2Vzc1RvTm9kZShzdGF0ZSwgaW1wbC4iIC4gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUg
LiAiKCIgLiAoJHJhaXNlc0V4Y2VwdGlvbiA/ICJlYyIgOiAiIikgLiIpKSlcbiIpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICRpbXBsSW5jbHVkZXN7IkpTRE9NQmluZGluZy5oIn0gPSAxOwotICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoJHJhaXNlc0V4Y2VwdGlvbldpdGhN
ZXNzYWdlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UgZWM7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAg
fSBlbHNpZiAoJHJhaXNlc0V4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7XG4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgICAgICBteSAkbnVtUGFyYW1ldGVy
cyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG15
ICgkZnVuY3Rpb25TdHJpbmcsICRkdW1teSkgPSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayhcQGlt
cGxDb250ZW50LCAkZnVuY3Rpb24sICRpbnRlcmZhY2UsICRudW1QYXJhbWV0ZXJzLCAkZnVuY3Rp
b25JbXBsZW1lbnRhdGlvbk5hbWUsICRzdmdQcm9wZXJ0eVR5cGUsICRzdmdQcm9wZXJ0eU9yTGlz
dFByb3BlcnR5VHlwZSwgJHN2Z0xpc3RQcm9wZXJ0eVR5cGUpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2FsbCgkZnVuY3Rpb24sICRmdW5j
dGlvblN0cmluZywgIiAgICAiLCAkc3ZnUHJvcGVydHlUeXBlLCAkaW50ZXJmYWNlKTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiQ2hlY2tTZWN1cml0eUZvck5vZGUifSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvTm9kZShzdGF0
ZSwgaW1wbC4iIC4gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUgLiAiKCIgLiAoJHJhaXNlc0V4
Y2VwdGlvbiA/ICJlYyIgOiAiIikgLiIpKSlcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxs
KCkpO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU0RPTUJp
bmRpbmcuaCJ9ID0gMTsKICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
ICAgIG15ICRudW1QYXJhbWV0ZXJzID0gQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OworICAgICAg
ICAgICAgICAgICAgICBteSAoJGZ1bmN0aW9uU3RyaW5nLCAkZHVtbXkpID0gR2VuZXJhdGVQYXJh
bWV0ZXJzQ2hlY2soXEBpbXBsQ29udGVudCwgJGZ1bmN0aW9uLCAkaW50ZXJmYWNlLCAkbnVtUGFy
YW1ldGVycywgJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lLCAkc3ZnUHJvcGVydHlUeXBlLCAk
c3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUsICRzdmdMaXN0UHJvcGVydHlUeXBlKTsKKyAg
ICAgICAgICAgICAgICAgICAgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2FsbCgkZnVu
Y3Rpb24sICRmdW5jdGlvblN0cmluZywgIiAgICAiLCAkc3ZnUHJvcGVydHlUeXBlLCAkaW50ZXJm
YWNlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKQEAgLTQ0NTMsNiArNDQy
Nyw5IEBAIHN1YiBKU1ZhbHVlVG9OYXRpdmUKIAogICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKUyR0
eXBlLmgiLCAkY29uZGl0aW9uYWwpOwogCisgICAgIyBGSVhNRTogRXZlbnRMaXN0ZW5lciBzaG91
bGQgYmUgYSBjYWxsYmFjayBpbnRlcmZhY2UuCisgICAgcmV0dXJuICJKU0V2ZW50TGlzdGVuZXI6
OmNyZWF0ZSgkdmFsdWUsICpjYXN0ZWRUaGlzLCBmYWxzZSwgY3VycmVudFdvcmxkKHN0YXRlKSki
IGlmICR0eXBlIGVxICJFdmVudExpc3RlbmVyIjsKKwogICAgIG15ICRleHRlbmRlZEF0dHJpYnV0
ZXMgPSAkY29kZUdlbmVyYXRvci0+Z2V0SW50ZXJmYWNlRXh0ZW5kZWRBdHRyaWJ1dGVzRnJvbU5h
bWUoJHR5cGUpOwogICAgIHJldHVybiAoIkpTJHt0eXBlfTo6dG9XcmFwcGVkKCpzdGF0ZSwgJHZh
bHVlKSIsIDEpIGlmICRleHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21Ub05hdGl2ZU9iamVj
dCJ9OwogICAgIHJldHVybiAoIkpTJHt0eXBlfTo6dG9XcmFwcGVkKCR2YWx1ZSkiLCAwKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRMaXN0ZW5lci5oCmluZGV4IGJiNGY5ZjAyZGVhZDVlZDMxM2NlNzY0MDZh
NmQxOWVkOGM4NmY2ZDEuLjIyNDM1Mjk1NTlkODMwMzM3NTRmYjBlNzJiZGRjNjRjOGM5NTNhNzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6
CiAgICAgfTsKIAogICAgIHZpcnR1YWwgfkV2ZW50TGlzdGVuZXIoKSB7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJikgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCopID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgd2FzQ3JlYXRlZEZyb21NYXJrdXAoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5l
ck1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKaW5kZXgg
ZjE5N2MyMDYwMTFjOGJhYTQ4ZDMwODFkZGZiYzIwMWEwNWUzODkwOC4uYjA0ZTEyMTNhNTVjYjY1
YzJmMmU1MjM4OWVlNDY0ZDdmODQ1ZWVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TGlzdGVuZXJNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3Rl
bmVyTWFwLmNwcApAQCAtOTUsOSArOTUsOSBAQCBWZWN0b3I8QXRvbWljU3RyaW5nPiBFdmVudExp
c3RlbmVyTWFwOjpldmVudFR5cGVzKCkgY29uc3QKICAgICByZXR1cm4gdHlwZXM7CiB9CiAKLXN0
YXRpYyBib29sIGFkZExpc3RlbmVyVG9WZWN0b3IoRXZlbnRMaXN0ZW5lclZlY3RvciogdmVjdG9y
LCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitz
dGF0aWMgYm9vbCBhZGRMaXN0ZW5lclRvVmVjdG9yKEV2ZW50TGlzdGVuZXJWZWN0b3IqIHZlY3Rv
ciwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKLSAg
ICBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciByZWdpc3RlcmVkTGlzdGVuZXIobGlzdGVuZXIsIHVz
ZUNhcHR1cmUpOworICAgIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyIHJlZ2lzdGVyZWRMaXN0ZW5l
cihXVEZNb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiAKICAgICBpZiAodmVjdG9yLT5maW5k
KHJlZ2lzdGVyZWRMaXN0ZW5lcikgIT0gbm90Rm91bmQpCiAgICAgICAgIHJldHVybiBmYWxzZTsg
Ly8gRHVwbGljYXRlIGxpc3RlbmVyLgpAQCAtMTA2LDIwICsxMDYsMjAgQEAgc3RhdGljIGJvb2wg
YWRkTGlzdGVuZXJUb1ZlY3RvcihFdmVudExpc3RlbmVyVmVjdG9yKiB2ZWN0b3IsIFBhc3NSZWZQ
dHI8RXZlbnRMaXMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBFdmVudExpc3RlbmVyTWFw
OjphZGQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4gbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgRXZlbnRMaXN0ZW5lck1hcDo6
YWRkKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBs
aXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIGFzc2VydE5vQWN0aXZlSXRlcmF0b3Jz
KCk7CiAKICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9lbnRyaWVzKSB7CiAgICAgICAgIGlmIChl
bnRyeS5maXJzdCA9PSBldmVudFR5cGUpCi0gICAgICAgICAgICByZXR1cm4gYWRkTGlzdGVuZXJU
b1ZlY3RvcihlbnRyeS5zZWNvbmQuZ2V0KCksIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKKyAgICAg
ICAgICAgIHJldHVybiBhZGRMaXN0ZW5lclRvVmVjdG9yKGVudHJ5LnNlY29uZC5nZXQoKSwgV1RG
TW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOwogICAgIH0KIAogICAgIG1fZW50cmllcy5hcHBl
bmQoc3RkOjptYWtlX3BhaXIoZXZlbnRUeXBlLCBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50TGlzdGVu
ZXJWZWN0b3I+KCkpKTsKLSAgICByZXR1cm4gYWRkTGlzdGVuZXJUb1ZlY3RvcihtX2VudHJpZXMu
bGFzdCgpLnNlY29uZC5nZXQoKSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOworICAgIHJldHVybiBh
ZGRMaXN0ZW5lclRvVmVjdG9yKG1fZW50cmllcy5sYXN0KCkuc2Vjb25kLmdldCgpLCBXVEZNb3Zl
KGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiB9CiAKLXN0YXRpYyBib29sIHJlbW92ZUxpc3RlbmVy
RnJvbVZlY3RvcihFdmVudExpc3RlbmVyVmVjdG9yKiBsaXN0ZW5lclZlY3RvciwgRXZlbnRMaXN0
ZW5lciogbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSwgc2l6ZV90JiBpbmRleE9mUmVtb3ZlZExp
c3RlbmVyKQorc3RhdGljIGJvb2wgcmVtb3ZlTGlzdGVuZXJGcm9tVmVjdG9yKEV2ZW50TGlzdGVu
ZXJWZWN0b3IqIGxpc3RlbmVyVmVjdG9yLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCB1
c2VDYXB0dXJlLCBzaXplX3QmIGluZGV4T2ZSZW1vdmVkTGlzdGVuZXIpCiB7CiAgICAgUmVnaXN0
ZXJlZEV2ZW50TGlzdGVuZXIgcmVnaXN0ZXJlZExpc3RlbmVyKGxpc3RlbmVyLCB1c2VDYXB0dXJl
KTsKICAgICBpbmRleE9mUmVtb3ZlZExpc3RlbmVyID0gbGlzdGVuZXJWZWN0b3ItPmZpbmQocmVn
aXN0ZXJlZExpc3RlbmVyKTsKQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0aWMgYm9vbCByZW1vdmVM
aXN0ZW5lckZyb21WZWN0b3IoRXZlbnRMaXN0ZW5lclZlY3RvciogbGlzdGVuZXJWZWN0b3IsIEV2
ZW50TAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEV2ZW50TGlzdGVuZXJNYXA6OnJlbW92
ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIs
IGJvb2wgdXNlQ2FwdHVyZSwgc2l6ZV90JiBpbmRleE9mUmVtb3ZlZExpc3RlbmVyKQorYm9vbCBF
dmVudExpc3RlbmVyTWFwOjpyZW1vdmUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2
ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUsIHNpemVfdCYgaW5kZXhPZlJl
bW92ZWRMaXN0ZW5lcikKIHsKICAgICBhc3NlcnROb0FjdGl2ZUl0ZXJhdG9ycygpOwogCkBAIC0x
ODUsNyArMTg1LDcgQEAgc3RhdGljIHZvaWQgY29weUxpc3RlbmVyc05vdENyZWF0ZWRGcm9tTWFy
a3VwVG9UYXJnZXQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFQKICAgICAgICAgLy8gRXZlbnQg
bGlzdGVuZXJzIGNyZWF0ZWQgZnJvbSBtYXJrdXAgaGF2ZSBhbHJlYWR5IGJlZW4gdHJhbnNmZXJl
ZCB0byB0aGUgc2hhZG93IHRyZWUgZHVyaW5nIGNsb25pbmcuCiAgICAgICAgIGlmIChsaXN0ZW5l
ci5saXN0ZW5lci0+d2FzQ3JlYXRlZEZyb21NYXJrdXAoKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICB0YXJnZXQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lci5s
aXN0ZW5lci5jb3B5UmVmKCksIGxpc3RlbmVyLnVzZUNhcHR1cmUpOworICAgICAgICB0YXJnZXQt
PmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCAqbGlzdGVuZXIubGlzdGVuZXIsIGxpc3RlbmVy
LnVzZUNhcHR1cmUpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TGlzdGVuZXJNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFw
LmgKaW5kZXggODlmZjY2NjhkNzJmZjkwMWQ2ODdkM2I3N2ZiMzQxYjNjNmI4MTdmMC4uMWVmZTZh
YmY4Y2VlZDJkOTYzYWM3NjMxOTFjMGEyYThmZjliNjMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRMaXN0ZW5lck1hcC5oCkBAIC01NCw4ICs1NCw4IEBAIHB1YmxpYzoKICAgICBib29sIGNvbnRh
aW5zQ2FwdHVyaW5nKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKSBjb25zdDsKIAogICAg
IHZvaWQgY2xlYXIoKTsKLSAgICBib29sIGFkZChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsKLSAgICBib29s
IHJlbW92ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJv
b2wgdXNlQ2FwdHVyZSwgc2l6ZV90JiBpbmRleE9mUmVtb3ZlZExpc3RlbmVyKTsKKyAgICBib29s
IGFkZChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYs
IGJvb2wgdXNlQ2FwdHVyZSk7CisgICAgYm9vbCByZW1vdmUoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBib29sIHVzZUNhcHR1cmUsIHNpemVfdCYgaW5kZXhP
ZlJlbW92ZWRMaXN0ZW5lcik7CiAgICAgRXZlbnRMaXN0ZW5lclZlY3RvciogZmluZChjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7CiAgICAgVmVjdG9yPEF0b21pY1N0cmluZz4gZXZlbnRU
eXBlcygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJn
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAppbmRleCBlYzIxMDk4
NjdhYzMwZDBjMzFiZTY5MjYxNjMxYzMyNTE2ZmVhM2NlLi5kMjQ4Mzg1OTNkMTdmNmFiNTZkNmQ5
MDk5NTg1OTI5MDU2YjBlMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRU
YXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKQEAgLTc1
LDEyICs3NSwyOCBAQCBib29sIEV2ZW50VGFyZ2V0Ojppc01lc3NhZ2VQb3J0KCkgY29uc3QKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgRXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxp
c3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIEV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBs
aXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIHJldHVybiBlbnN1cmVFdmVudFRhcmdl
dERhdGEoKS5ldmVudExpc3RlbmVyTWFwLmFkZChldmVudFR5cGUsIFdURk1vdmUobGlzdGVuZXIp
LCB1c2VDYXB0dXJlKTsKIH0KIAotYm9vbCBFdmVudFRhcmdldDo6cmVtb3ZlRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIs
IGJvb2wgdXNlQ2FwdHVyZSkKK3ZvaWQgRXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXJGb3JC
aW5kaW5ncyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVu
ZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK3sKKyAgICAvLyBGSVhNRTogbGlzdGVu
ZXIgaXMgbm90IHN1cHBvc2VkIHRvIGJlIG51bGxhYmxlLgorICAgIGlmICghbGlzdGVuZXIpCisg
ICAgICAgIHJldHVybjsKKyAgICBhZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIu
cmVsZWFzZU5vbk51bGwoKSwgdXNlQ2FwdHVyZSk7Cit9CisKK3ZvaWQgRXZlbnRUYXJnZXQ6OnJl
bW92ZUV2ZW50TGlzdGVuZXJGb3JCaW5kaW5ncyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK3sK
KyAgICAvLyBGSVhNRTogbGlzdGVuZXIgaXMgbm90IHN1cHBvc2VkIHRvIGJlIG51bGxhYmxlLgor
ICAgIGlmICghbGlzdGVuZXIpCisgICAgICAgIHJldHVybjsKKyAgICByZW1vdmVFdmVudExpc3Rl
bmVyKGV2ZW50VHlwZSwgKmxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKK30KKworYm9vbCBFdmVudFRh
cmdldDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
RXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICBFdmVudFRh
cmdldERhdGEqIGQgPSBldmVudFRhcmdldERhdGEoKTsKICAgICBpZiAoIWQpCkBAIC0xMTAsMTIg
KzEyNiwxMiBAQCBib29sIEV2ZW50VGFyZ2V0OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbgogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIEV2ZW50VGFyZ2V0OjpzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKQor
Ym9vbCBFdmVudFRhcmdldDo6c2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIpCiB7CiAg
ICAgY2xlYXJBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSk7CiAgICAgaWYgKCFsaXN0
ZW5lcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBhZGRFdmVudExpc3RlbmVy
KGV2ZW50VHlwZSwgbGlzdGVuZXIsIGZhbHNlKTsKKyAgICByZXR1cm4gYWRkRXZlbnRMaXN0ZW5l
cihldmVudFR5cGUsIGxpc3RlbmVyLnJlbGVhc2VOb25OdWxsKCksIGZhbHNlKTsKIH0KIAogRXZl
bnRMaXN0ZW5lciogRXZlbnRUYXJnZXQ6OmdldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUpCkBAIC0xMzIsNyArMTQ4LDcgQEAgYm9vbCBFdmVudFRh
cmdldDo6Y2xlYXJBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlKQogICAgIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gZ2V0QXR0cmlidXRlRXZlbnRM
aXN0ZW5lcihldmVudFR5cGUpOwogICAgIGlmICghbGlzdGVuZXIpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICByZXR1cm4gcmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVy
LCBmYWxzZSk7CisgICAgcmV0dXJuIHJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCAqbGlz
dGVuZXIsIGZhbHNlKTsKIH0KIAogYm9vbCBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudEZvckJp
bmRpbmdzKEV2ZW50KiBldmVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRh
cmdldC5oCmluZGV4IGY5YjBmMjExNzRmNTQxOGQ1MWY3ZDU0MzgxYjAxYzg3ODIxMmVhYWYuLjFi
MWRlZDE5YTVkOWNhNTY2NGU1MGE5OTlkNmMzZWZiOTJhN2VlOTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldC5oCkBAIC0xMjEsMTUgKzEyMSwxOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBET01X
aW5kb3cqIHRvRE9NV2luZG93KCk7CiAgICAgdmlydHVhbCBib29sIGlzTWVzc2FnZVBvcnQoKSBj
b25zdDsKIAotICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJl
KTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSk7CisgICAgdm9p
ZCBhZGRFdmVudExpc3RlbmVyRm9yQmluZGluZ3MoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpOworICAgIHZvaWQg
cmVtb3ZlRXZlbnRMaXN0ZW5lckZvckJpbmRpbmdzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKTsKKyAgICB2aXJ0
dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
UmVmPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSk7CisgICAgdmlydHVhbCBib29s
IHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50
TGlzdGVuZXImLCBib29sIHVzZUNhcHR1cmUpOworCiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFs
bEV2ZW50TGlzdGVuZXJzKCk7CiAgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoRXZlbnQm
KTsKICAgICBib29sIGRpc3BhdGNoRXZlbnRGb3JCaW5kaW5ncyhFdmVudCosIEV4Y2VwdGlvbkNv
ZGUmKTsgLy8gRE9NIEFQSQogICAgIHZpcnR1YWwgdm9pZCB1bmNhdWdodEV4Y2VwdGlvbkluRXZl
bnRIYW5kbGVyKCk7CiAKICAgICAvLyBVc2VkIGZvciBsZWdhY3kgIm9uRXZlbnQiIGF0dHJpYnV0
ZSBBUElzLgotICAgIGJvb2wgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPik7CisgICAgYm9vbCBz
ZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBS
ZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJik7CiAgICAgYm9vbCBjbGVhckF0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpOwogICAgIEV2ZW50TGlzdGVuZXIq
IGdldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaWRsIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmlkbAppbmRleCA1OTNlNGMwNjg2YTA4YjkwYzEz
ZWJlYmY2Y2VjMjgyZjRiNzZlODVkLi5jNTk0NTg5NmUwMGE2Njc1NjM5MDM5YTA4NjFmZjY2NTc1
ZWRiZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5pZGwKQEAgLTI1LDggKzI1LDEwIEBA
CiAgICAgSlNDdXN0b21Ub05hdGl2ZU9iamVjdCwKICAgICBPYmpDUHJvdG9jb2wsCiBdIGludGVy
ZmFjZSBFdmVudFRhcmdldCB7Ci0gICAgW09iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVyc10gdm9p
ZCBhZGRFdmVudExpc3RlbmVyKERPTVN0cmluZyB0eXBlLCBFdmVudExpc3RlbmVyPyBsaXN0ZW5l
ciwgb3B0aW9uYWwgYm9vbGVhbiB1c2VDYXB0dXJlID0gZmFsc2UpOwotICAgIFtPYmpDTGVnYWN5
VW5uYW1lZFBhcmFtZXRlcnNdIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihET01TdHJpbmcgdHlw
ZSwgRXZlbnRMaXN0ZW5lcj8gbGlzdGVuZXIsIG9wdGlvbmFsIGJvb2xlYW4gdXNlQ2FwdHVyZSA9
IGZhbHNlKTsKKyAgICAvLyBGSVhNRTogVGhlICd0eXBlJyBhbmQgJ2xpc3RlbmVyJyBwYXJhbWV0
ZXJzIHNob3VsZCBub3QgYmUgb3B0aW9uYWwuCisgICAgW09iakNMZWdhY3lVbm5hbWVkUGFyYW1l
dGVycywgSW1wbGVtZW50ZWRBcz1hZGRFdmVudExpc3RlbmVyRm9yQmluZGluZ3NdIHZvaWQgYWRk
RXZlbnRMaXN0ZW5lcihbQXRvbWljU3RyaW5nXSBvcHRpb25hbCBET01TdHJpbmcgdHlwZSA9ICJ1
bmRlZmluZWQiLCBvcHRpb25hbCBFdmVudExpc3RlbmVyPyBsaXN0ZW5lciwgb3B0aW9uYWwgYm9v
bGVhbiB1c2VDYXB0dXJlID0gZmFsc2UpOworICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRl
cnMsIEltcGxlbWVudGVkQXM9cmVtb3ZlRXZlbnRMaXN0ZW5lckZvckJpbmRpbmdzXSB2b2lkIHJl
bW92ZUV2ZW50TGlzdGVuZXIoW0F0b21pY1N0cmluZ10gb3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUg
PSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgRXZlbnRMaXN0ZW5lcj8gbGlzdGVuZXIsIG9wdGlvbmFs
IGJvb2xlYW4gdXNlQ2FwdHVyZSA9IGZhbHNlKTsKKwogICAgIC8vIEZJWE1FOiBldmVudCBzaG91
bGQgbm90IGJlIG51bGxhYmxlLgogICAgIFtJbXBsZW1lbnRlZEFzPWRpc3BhdGNoRXZlbnRGb3JC
aW5kaW5ncywgUmFpc2VzRXhjZXB0aW9uXSBib29sZWFuIGRpc3BhdGNoRXZlbnQoRXZlbnQ/IGV2
ZW50KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAppbmRleCA1YTg0YTQ0YTIwOGFi
ZWJlNDEzYjk5ZjExZTZmNTAxMTlkYTQwMmI4Li4zZDc4NDdjYWVkYjI5MjBlM2IyNjRiNjUyYmM1
NGNiYzM0NzhhM2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKQEAgLTIyMSw5ICsy
MjEsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRBcnJheT4gTWVzc2FnZVBvcnQ6OmVu
dGFuZ2xlUG9ydHMoU2NyaXB0RXhlY3V0aW9uQ29udAogICAgIHJldHVybiBwb3J0QXJyYXk7CiB9
CiAKLWJvb2wgTWVzc2FnZVBvcnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNh
cHR1cmUpCitib29sIE1lc3NhZ2VQb3J0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VD
YXB0dXJlKQogewotICAgIGlmIChsaXN0ZW5lciAmJiBsaXN0ZW5lci0+aXNBdHRyaWJ1dGUoKSAm
JiBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLm1lc3NhZ2VFdmVudCkKKyAgICBpZiAobGlzdGVu
ZXItPmlzQXR0cmlidXRlKCkgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZl
bnQpCiAgICAgICAgIHN0YXJ0KCk7CiAgICAgcmV0dXJuIEV2ZW50VGFyZ2V0V2l0aElubGluZURh
dGE6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgdXNlQ2Fw
dHVyZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCmluZGV4IGJhZTAxZDViOTUxZGQ3ODIz
N2FmZGY4NzIzMTRmODI0ZDE1N2IxNmUuLjljYTEyNGY0YTJlZmM5ODFkZjU1NjNiYmJiNzUwNDZm
NzljZmNkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCkBAIC05Miw3ICs5Miw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gQSBwb3J0IGdldHMgbmV1dGVyZWQgd2hlbiBp
dCBpcyB0cmFuc2ZlcnJlZCB0byBhIG5ldyBvd25lciB2aWEgcG9zdE1lc3NhZ2UoKS4KICAgICAg
ICAgYm9vbCBpc05ldXRlcmVkKCkgeyByZXR1cm4gIW1fZW50YW5nbGVkQ2hhbm5lbDsgfQogCi0g
ICAgICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7Cisg
ICAgICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICBleHBsaWNpdCBNZXNzYWdlUG9ydChTY3JpcHRFeGVjdXRpb25D
b250ZXh0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggNGM0NzUxMDRiNzIyNjAyYTM5Mzg4YmUxMjM5
YThlNDYzN2Y1YmI1ZC4uZDBjNWQ0YzQyZWFjM2UzNmJmYmY4MDU5Mzc5MTZjZTg3MmEzZjc3YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcApAQCAtMTk2MCw3ICsxOTYwLDcgQEAgdm9pZCBOb2RlOjpkaWRNb3Zl
VG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpCiAgICAgfQogfQogCi1zdGF0aWMg
aW5saW5lIGJvb2wgdHJ5QWRkRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIs
IGJvb2wgdXNlQ2FwdHVyZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCB0cnlBZGRFdmVudExpc3RlbmVy
KE5vZGUqIHRhcmdldE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZl
bnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIGlmICghdGFy
Z2V0Tm9kZS0+RXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5l
ci5jb3B5UmVmKCksIHVzZUNhcHR1cmUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xOTk2
LDEyICsxOTk2LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB0cnlBZGRFdmVudExpc3RlbmVyKE5v
ZGUqIHRhcmdldE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVy
ZSkKK2Jvb2wgTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsK
ICAgICByZXR1cm4gdHJ5QWRkRXZlbnRMaXN0ZW5lcih0aGlzLCBldmVudFR5cGUsIFdURk1vdmUo
bGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIHRyeVJlbW92
ZUV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitzdGF0aWMg
aW5saW5lIGJvb2wgdHJ5UmVtb3ZlRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJnZXROb2RlLCBjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wg
dXNlQ2FwdHVyZSkKIHsKICAgICBpZiAoIXRhcmdldE5vZGUtPkV2ZW50VGFyZ2V0OjpyZW1vdmVF
dmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0yMDM3LDcgKzIwMzcsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdHJ5
UmVtb3ZlRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcm
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIsIGJv
b2wgdXNlQ2FwdHVyZSkKK2Jvb2wgTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wgdXNlQ2Fw
dHVyZSkKIHsKICAgICByZXR1cm4gdHJ5UmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLCBldmVudFR5
cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDU1N2RkY2MxMTcz
MTk0YThmMGRkMTk0Y2IzNmIxNzY3MGUwNGUzNDkuLjIwOGUyODhmMTc5NzcyZGM5ZjkyMDA3NWM0
MjY3YTJiNGVkZTQ1NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNTA2LDggKzUwNiw4IEBAIHB1YmxpYzoK
ICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSBjb25zdCBmaW5hbDsgLy8gSW1wbGVtZW50ZWQgaW4gRG9jdW1lbnQuaAogCi0gICAgYm9v
bCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKLSAgICBib29sIHJl
bW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlz
dGVuZXIqLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgIGJvb2wgYWRkRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYs
IGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CisgICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiwgYm9vbCB1c2VD
YXB0dXJlKSBvdmVycmlkZTsKIAogICAgIHVzaW5nIEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50
OwogICAgIGJvb2wgZGlzcGF0Y2hFdmVudChFdmVudCYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaAppbmRleCAxMjQ4M2ZhNjExODllMmVl
M2Y0NDgyNjRhNjVmNTkzZTI0YzA4OWRiLi4xY2M2OWNhMmUyODFlNWU2NThiMzhiYTg2NWFiNzMw
YjFlN2I1NzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmVnaXN0ZXJlZEV2ZW50
TGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVu
ZXIuaApAQCAtMzEsOCArMzEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBS
ZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciB7CiAgICAgcHVibGljOgotICAgICAgICBSZWdpc3RlcmVk
RXZlbnRMaXN0ZW5lcihQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBib29sIHVz
ZUNhcHR1cmUpCi0gICAgICAgICAgICA6IGxpc3RlbmVyKGxpc3RlbmVyKQorICAgICAgICBSZWdp
c3RlcmVkRXZlbnRMaXN0ZW5lcihSZWY8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIsIGJvb2wgdXNl
Q2FwdHVyZSkKKyAgICAgICAgICAgIDogbGlzdGVuZXIoV1RGTW92ZShsaXN0ZW5lcikpCiAgICAg
ICAgICAgICAsIHVzZUNhcHR1cmUodXNlQ2FwdHVyZSkKICAgICAgICAgewogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA4N2U4MDNiM2ZjNjcz
N2ZiNGRmOGFjYzBhNWJlNjIxODFjN2ZiNWE1Li4zOGJlNDRiMjc4YWQ5NGU4ZDRjNGUxOWFmNDM4
YmFmZjFkMjQwNjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
QEAgLTUyMTYsNyArNTIxNiw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6ZGlzcGF0Y2hFdmVu
dChFdmVudCYgZXZlbnQpCiAgICAgcmV0dXJuIEhUTUxFbGVtZW50OjpkaXNwYXRjaEV2ZW50KGV2
ZW50KTsKIH0KIAotYm9vbCBIVE1MTWVkaWFFbGVtZW50OjphZGRFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5l
ciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBIVE1MTWVkaWFFbGVtZW50OjphZGRFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBs
aXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIGlmIChldmVudFR5cGUgIT0gZXZlbnRO
YW1lcygpLndlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5Y2hhbmdlZEV2ZW50KQogICAg
ICAgICByZXR1cm4gTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdURk1vdmUobGlz
dGVuZXIpLCB1c2VDYXB0dXJlKTsKQEAgLTUyMzYsNyArNTIzNiw3IEBAIGJvb2wgSFRNTE1lZGlh
RWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
UmVmUHRyPEV2CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSFRNTE1lZGlhRWxlbWVudDo6
cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRM
aXN0ZW5lciogbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgSFRNTE1lZGlhRWxlbWVu
dDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZl
bnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICBpZiAoZXZlbnRU
eXBlICE9IGV2ZW50TmFtZXMoKS53ZWJraXRwbGF5YmFja3RhcmdldGF2YWlsYWJpbGl0eWNoYW5n
ZWRFdmVudCkKICAgICAgICAgcmV0dXJuIE5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRU
eXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCmluZGV4IGIzODkzOThiMzNhZDY3YTI4MmNhMTIzYzk1Mjg5ZjUyYTRhNTBmMzYuLjY2
Nzk4YWNjYzcxNzZmNjg0MGUxMDZhODVhYmQ0ZTQxOWRiOWVkYzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0zNDQsOCArMzQ0LDggQEAgcHVibGljOgogCiAjaWYg
RU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICB2b2lkIHdlYmtpdFNob3dQbGF5
YmFja1RhcmdldFBpY2tlcigpOwotICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2Fw
dHVyZSkgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVy
cmlkZTsKKyAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwor
ICAgIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgRXZlbnRMaXN0ZW5lciYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IHdpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBj
YW5QbGF5VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRleCAyZjM1YjI5YjM5YjY3MjhkZTBiYTg1NzVl
ZDc1Njg4ODNlNTc3Y2U2Li43ZmQyYzdjOWU1NzZhOTVhYjE0ZjljZDdiZTliYzdhMDgwZTNmYWU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAg
cHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50
TGlzdGVuZXImKSBvdmVycmlkZTsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0
ZW5lciYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIEV2ZW50Kikgb3ZlcnJpZGU7CiAKICAgICBJbWFnZURvY3VtZW50JiBtX2Rv
Y3VtZW50OwpAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9j
dW1lbnRTdHJ1Y3R1cmUoKQogICAgICAgICAvLyBTZXQgdGhlIHZpZXdwb3J0IHRvIGJlIGluIGRl
dmljZSBwaXhlbHMgKHJhdGhlciB0aGFuIHRoZSBkZWZhdWx0IG9mIDk4MCkuCiAgICAgICAgIHBy
b2Nlc3NWaWV3cG9ydChBU0NJSUxpdGVyYWwoIndpZHRoPWRldmljZS13aWR0aCIpLCBWaWV3cG9y
dEFyZ3VtZW50czo6SW1hZ2VEb2N1bWVudCk7CiAjZWxzZQotICAgICAgICBSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4gbGlzdGVuZXIgPSBJbWFnZUV2ZW50TGlzdGVuZXI6OmNyZWF0ZSgqdGhpcyk7Cisg
ICAgICAgIGF1dG8gbGlzdGVuZXIgPSBJbWFnZUV2ZW50TGlzdGVuZXI6OmNyZWF0ZSgqdGhpcyk7
CiAgICAgICAgIGlmIChET01XaW5kb3cqIHdpbmRvdyA9IHRoaXMtPmRvbVdpbmRvdygpKQogICAg
ICAgICAgICAgd2luZG93LT5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCBsaXN0ZW5lci5jb3B5
UmVmKCksIGZhbHNlKTsKICAgICAgICAgaW1hZ2VFbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKCJj
bGljayIsIFdURk1vdmUobGlzdGVuZXIpLCBmYWxzZSk7CkBAIC00MDcsNyArNDA3LDcgQEAgdm9p
ZCBJbWFnZUV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBFdmVudCogZXZlbnQpCiAgICAgfQogfQogCi1ib29sIEltYWdlRXZlbnRMaXN0ZW5lcjo6b3Bl
cmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikKK2Jvb2wgSW1hZ2VFdmVudExpc3Rl
bmVyOjpvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKSBjb25zdAogewogICAg
IC8vIEFsbCBJbWFnZUV2ZW50TGlzdGVuZXIgb2JqZWN0cyBjb21wYXJlIGFzIGVxdWFsOyBPSyBz
aW5jZSB0aGVyZSBpcyBvbmx5IG9uZSBwZXIgZG9jdW1lbnQuCiAgICAgcmV0dXJuIG90aGVyLnR5
cGUoKSA9PSBJbWFnZUV2ZW50TGlzdGVuZXJUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAKaW5kZXggY2Y3YWM0YmNmZjczMjRlOWUw
MDJhOWM3MDRmMzAyMmY5MzE4ZjYwMi4uZDk3ZGE3OGU1NjExMzcxYWNiNGQyOWRiMDBlMGVlMGJj
Yzc0N2ZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sc0FwcGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xzQXBwbGUuY3BwCkBAIC01MDksMTUgKzUwOSwxNSBAQCB2b2lkIE1lZGlhQ29udHJvbHNBcHBs
ZTo6c2hvd0Nsb3NlZENhcHRpb25UcmFja0xpc3QoKQogICAgIG1fcGFuZWwtPnNldElubGluZVN0
eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzLCBDU1NWYWx1ZU5vbmUpOwogCiAg
ICAgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIgPSBldmVudExpc3RlbmVyKCk7Ci0gICAgbV9jbG9z
ZWRDYXB0aW9uc0NvbnRhaW5lci0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkud2hlZWxF
dmVudCwgJmxpc3RlbmVyLCB0cnVlKTsKKyAgICBtX2Nsb3NlZENhcHRpb25zQ29udGFpbmVyLT5h
ZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS53aGVlbEV2ZW50LCBsaXN0ZW5lciwgdHJ1ZSk7
CiAKICAgICAvLyBUcmFjayBjbGljayBldmVudHMgaW4gdGhlIGNhcHR1cmUgcGhhc2UgYXQgdHdv
IGxldmVscywgZmlyc3QgYXQgdGhlIGRvY3VtZW50IGxldmVsCiAgICAgLy8gc3VjaCB0aGF0IGEg
Y2xpY2sgb3V0c2lkZSBvZiB0aGUgPHZpZGVvPiBtYXkgZGlzbWlzcyB0aGUgdHJhY2sgbGlzdCwg
c2Vjb25kIGF0IHRoZQogICAgIC8vIG1lZGlhIGNvbnRyb2xzIGxldmVsIHN1Y2ggdGhhdCBhIGNs
aWNrIGFueXdoZXJlIG91dHNpZGUgb2YgdGhlIHRyYWNrIGxpc3QgaGlkZXMgdGhlCiAgICAgLy8g
dHJhY2sgbGlzdC4gVGhlc2UgdHdvIGxldmVscyBhcmUgbmVjZXNzYXJ5IHNpbmNlIGl0IHdvdWxk
IG5vdCBiZSBwb3NzaWJsZSB0byBnZXQgYQogICAgIC8vIHJlZmVyZW5jZSB0byB0aGUgdHJhY2sg
bGlzdCB3aGVuIGhhbmRsaW5nIHRoZSBldmVudCBvdXRzaWRlIG9mIHRoZSBzaGFkb3cgdHJlZS4K
LSAgICBkb2N1bWVudCgpLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQs
ICZsaXN0ZW5lciwgdHJ1ZSk7Ci0gICAgYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xp
Y2tFdmVudCwgJmxpc3RlbmVyLCB0cnVlKTsKKyAgICBkb2N1bWVudCgpLmFkZEV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIGxpc3RlbmVyLCB0cnVlKTsKKyAgICBhZGRFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBsaXN0ZW5lciwgdHJ1ZSk7CiB9CiAK
IHZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjpoaWRlQ2xvc2VkQ2FwdGlvblRyYWNrTGlzdCgpCkBA
IC01MzEsOSArNTMxLDkgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQXBwbGU6OmhpZGVDbG9zZWRDYXB0
aW9uVHJhY2tMaXN0KCkKICAgICBtX3BhbmVsLT5yZW1vdmVJbmxpbmVTdHlsZVByb3BlcnR5KENT
U1Byb3BlcnR5UG9pbnRlckV2ZW50cyk7CiAKICAgICBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciA9
IGV2ZW50TGlzdGVuZXIoKTsKLSAgICBtX2Nsb3NlZENhcHRpb25zQ29udGFpbmVyLT5yZW1vdmVF
dmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS53aGVlbEV2ZW50LCAmbGlzdGVuZXIsIHRydWUpOwot
ICAgIGRvY3VtZW50KCkucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tFdmVu
dCwgJmxpc3RlbmVyLCB0cnVlKTsKLSAgICByZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMo
KS5jbGlja0V2ZW50LCAmbGlzdGVuZXIsIHRydWUpOworICAgIG1fY2xvc2VkQ2FwdGlvbnNDb250
YWluZXItPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLndoZWVsRXZlbnQsIGxpc3Rl
bmVyLCB0cnVlKTsKKyAgICBkb2N1bWVudCgpLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1l
cygpLmNsaWNrRXZlbnQsIGxpc3RlbmVyLCB0cnVlKTsKKyAgICByZW1vdmVFdmVudExpc3RlbmVy
KGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBsaXN0ZW5lciwgdHJ1ZSk7CiB9CiAKIHZvaWQgTWVk
aWFDb250cm9sc0FwcGxlOjpzZXRGdWxsc2NyZWVuU2xpZGVyVm9sdW1lKCkKQEAgLTU5NSw3ICs1
OTUsNyBAQCB2b2lkIE1lZGlhQ29udHJvbHNBcHBsZUV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudAogICAgIH0KIH0KIAotYm9vbCBNZWRpYUNv
bnRyb2xzQXBwbGVFdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXIm
IGxpc3RlbmVyKQorYm9vbCBNZWRpYUNvbnRyb2xzQXBwbGVFdmVudExpc3RlbmVyOjpvcGVyYXRv
cj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyKSBjb25zdAogewogICAgIGlmIChjb25z
dCBNZWRpYUNvbnRyb2xzQXBwbGVFdmVudExpc3RlbmVyKiBtZWRpYUNvbnRyb2xzQXBwbGVFdmVu
dExpc3RlbmVyID0gTWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0ZW5lcjo6Y2FzdCgmbGlzdGVu
ZXIpKQogICAgICAgICByZXR1cm4gbV9tZWRpYUNvbnRyb2xzID09IG1lZGlhQ29udHJvbHNBcHBs
ZUV2ZW50TGlzdGVuZXItPm1fbWVkaWFDb250cm9sczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmgKaW5kZXggNjk4Y2MzODlkOWYyZDcyMDJiZjI0
MWRjYzFiYWY3M2YwM2JmMDQyOS4uZjI4ZGQ2YjdmNTE0MTBiMWNkZWVkNDJjODMzZTBjZmY5M2Qx
Y2MxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
c0FwcGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0Fw
cGxlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgOiAwOwogICAgIH0K
IAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgb3ZlcnJp
ZGU7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKSBjb25z
dCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBNZWRpYUNvbnRyb2xzQXBwbGVFdmVudExpc3Rl
bmVyKE1lZGlhQ29udHJvbHNBcHBsZSogbWVkaWFDb250cm9scykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IDQ0MTU0
MzIxNDQ4ZDExNTQ1ZjIxMTQyMmMxZGZkODAzOWY4ZTY0NzAuLmFjMGVkZDQ4NmFkZjRjMmRlMDdj
ODJhYWFhYzZiMzEzMTAwMmNiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgfk9wZW5EYXRhYmFzZUNhbGxiYWNrKCkgeyB9CiAKLSAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3RoZXIpIG92ZXJyaWRlCisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKSBjb25zdCBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMgPT0gJm90aGVyOwogICAgIH0KQEAgLTM3MSw3ICsz
NzEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5PcGVuQ3Vyc29yQ2FsbGJhY2soKSB7IH0K
IAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgb3ZlcnJp
ZGUKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3RoZXIpIGNvbnN0
IG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcyA9PSAmb3RoZXI7CiAgICAgfQpA
QCAtNjYwLDcgKzY2MCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNsZWFyT2JqZWN0U3Rv
cmVMaXN0ZW5lcigpIHsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVu
ZXImIG90aGVyKSBvdmVycmlkZQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3Rl
bmVyJiBvdGhlcikgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzID09
ICZvdGhlcjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggZTc4MWI3Y2M0
YjkxYmFiZGYzMWZkNzg2MmI5ODg1MTczYmFmYmU4MC4uYjc1NDFlZDM4NDFjODU4YmY0MDczYmI0
OWJmM2I5YzNkYmViOTE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTcyNCw3
ICsxNzI0LDcgQEAgYm9vbCBET01XaW5kb3c6OmlzU2FtZVNlY3VyaXR5T3JpZ2luQXNNYWluRnJh
bWUoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBET01XaW5kb3c6OmFkZEV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExp
c3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIERPTVdpbmRvdzo6YWRk
RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlz
dGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICBpZiAoIUV2ZW50VGFy
Z2V0OjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5lciksIHVzZUNh
cHR1cmUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xODI3LDcgKzE4MjcsNyBAQCB2b2lk
IERPTVdpbmRvdzo6cmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb24oKQogI2VuZGlmCiB9CiAK
LWJvb2wgRE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9v
bCBET01XaW5kb3c6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAg
aWYgKCFFdmVudFRhcmdldDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVy
LCB1c2VDYXB0dXJlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmgKaW5kZXggNGIyNGI5OTgxMzc3MzI3NjM4YjY0ZTY4N2Q3NWZlMmZkOGQ4NzJlZS4uMDE1OGUx
NDA2NjI3NDhmYzg5NGY5MjU4MTRkNDYyNDgxYmZhZjQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5oCkBAIC0yNzksOCArMjc5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIC8v
IEV2ZW50cwogICAgICAgICAvLyBFdmVudFRhcmdldCBBUEkKLSAgICAgICAgYm9vbCBhZGRFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKLSAgICAgICAgYm9vbCByZW1vdmVF
dmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVy
KiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKKyAgICAgICAgYm9vbCBhZGRFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwg
Ym9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKKyAgICAgICAgYm9vbCByZW1vdmVFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiwgYm9vbCB1
c2VDYXB0dXJlKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCByZW1vdmVBbGxFdmVudExpc3RlbmVy
cygpIG92ZXJyaWRlOwogCiAgICAgICAgIHVzaW5nIEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tT
ZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50LmgKaW5kZXggOWI1NzM5Y2JhODE2
OWEwNGZmYTEyZTE0OTMyOGI3YzM0NTMwMDJlOS4uMGRjYTA2M2Y5OGZlNWNjODMxMTE2NDkzNGU5
YmM4NmMxMTEzOWRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oCkBA
IC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxl
RXZlbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkNvcmU6OkV2ZW50Kikg
ZmluYWw7CiAgICAgdm9pZCB1cGRhdGVGb3JFdmVudE5hbWUoY29uc3QgV1RGOjpBdG9taWNTdHJp
bmcmKTsKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgcmhzKSBmaW5h
bCB7IHJldHVybiBzdGF0aWNfY2FzdDxXZWJDb3JlOjpFdmVudExpc3RlbmVyKj4odGhpcykgPT0g
JnJoczsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiByaHMpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIqPih0
aGlzKSA9PSAmcmhzOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXkoKSBmaW5hbDsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBhdXNlKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWxWaWRlb0VsZW1lbnQuaAppbmRleCA3MTlhMjU3MGMwZmRiODI3ZDBlNmQzZmZhMWU2YmUz
MzRkODIzZmRhLi42NjViZTFlYTgxOThlYjFjYjVjZWZhODdhOGMwMTA4N2RkMDE4MGY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dl
YlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKQEAgLTU5LDggKzU5LDcgQEAgcHVi
bGljOgogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlRXZlbnQoV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkNvcmU6OkV2ZW50Kikgb3ZlcnJpZGU7CiAgICAg
dm9pZCB1cGRhdGVGb3JFdmVudE5hbWUoY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmKTsKLSAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgcmhzKSBvdmVycmlkZQotICAgICAg
ICB7cmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIqPih0aGlzKSA9PSAm
cmhzO30KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgcmhzKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBzdGF0aWNfY2FzdDxXZWJDb3JlOjpFdmVudExpc3RlbmVyKj4o
dGhpcykgPT0gJnJoczsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXF1ZXN0RnVsbHNj
cmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBvdmVy
cmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJl
Y3QpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IGZjODMxZTY3NjU4
YmEwOWI4OWE4M2IxZTc1ODlhMDAxY2JiNTk1NTEuLmFiMjQ1ZDU3ZjU4OWJkYmQwNTQxNGE3ODg0
Mjk3YjgyMmQwY2Q2N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTUyOCw3ICs1
MjgsNyBAQCBib29sIFNWR0VsZW1lbnQ6OmhhdmVMb2FkZWRSZXF1aXJlZFJlc291cmNlcygpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgU1ZHRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlz
dGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgU1ZHRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlz
dGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsgICAKICAgICAvLyBBZGQgZXZlbnQgbGlzdGVuZXIg
dG8gcmVndWxhciBET00gZWxlbWVudAogICAgIGlmICghTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihl
dmVudFR5cGUsIGxpc3RlbmVyLmNvcHlSZWYoKSwgdXNlQ2FwdHVyZSkpCkBAIC01NDgsNyArNTQ4
LDcgQEAgYm9vbCBTVkdFbGVtZW50OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBTVkdFbGVtZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBFdmVudExpc3RlbmVyKiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBT
VkdFbGVtZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIGlm
IChjb250YWluaW5nU2hhZG93Um9vdCgpKQogICAgICAgICByZXR1cm4gTm9kZTo6cmVtb3ZlRXZl
bnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKQEAgLTU1OCw3ICs1
NTgsNyBAQCBib29sIFNWR0VsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZQogICAgIC8vIGV2ZW50IGxpc3RlbmVyIGlu
IGEgY2FjaGUuIElmIHdlIHdhbnQgdG8gYmUgYWJsZSB0byBjYWxsIHJlbW92ZUV2ZW50TGlzdGVu
ZXIoKSBtdWx0aXBsZQogICAgIC8vIHRpbWVzIG9uIGRpZmZlcmVudCBub2Rlcywgd2UgaGF2ZSB0
byBkZWxheSBpdHMgaW1tZWRpYXRlIGRlc3RydWN0aW9uLCB3aGljaCB3b3VsZCBoYXBwZW4KICAg
ICAvLyBhZnRlciB0aGUgZmlyc3QgY2FsbCBiZWxvdy4KLSAgICBSZWZQdHI8RXZlbnRMaXN0ZW5l
cj4gcHJvdGVjdG9yKGxpc3RlbmVyKTsKKyAgICBSZWY8RXZlbnRMaXN0ZW5lcj4gcHJvdGVjdG9y
KGxpc3RlbmVyKTsKIAogICAgIC8vIFJlbW92ZSBldmVudCBsaXN0ZW5lciBmcm9tIHJlZ3VsYXIg
RE9NIGVsZW1lbnQKICAgICBpZiAoIU5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBl
LCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSkpCkBAIC01NzMsNyArNTczLDcgQEAgYm9vbCBTVkdFbGVt
ZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBF
dmVudExpc3RlbmUKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIC8vIFRoaXMgY2Fz
ZSBjYW4gb25seSBiZSBoaXQgZm9yIGV2ZW50IGxpc3RlbmVycyBjcmVhdGVkIGZyb20gbWFya3Vw
Ci0gICAgICAgIEFTU0VSVChsaXN0ZW5lci0+d2FzQ3JlYXRlZEZyb21NYXJrdXAoKSk7CisgICAg
ICAgIEFTU0VSVChsaXN0ZW5lci53YXNDcmVhdGVkRnJvbU1hcmt1cCgpKTsKIAogICAgICAgICAv
LyBJZiB0aGUgZXZlbnQgbGlzdGVuZXIgJ2xpc3RlbmVyJyBoYXMgYmVlbiBjcmVhdGVkIGZyb20g
bWFya3VwIGFuZCBoYXMgYmVlbiBmaXJlZCBiZWZvcmUKICAgICAgICAgLy8gdGhlbiBKU0xhenlF
dmVudExpc3RlbmVyOjpwYXJzZUNvZGUoKSBoYXMgYmVlbiBjYWxsZWQgYW5kIG1fanNGdW5jdGlv
biBvZiB0aGF0IGxpc3RlbmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAppbmRleCAzODE2ODEwMmFm
NWVlNzVhZjc4N2NiMGZlMTVhOGU3YTJiYTcxY2ZiLi45NmQ2YzkwNDYzMWFiMDk0ODhmYjViNmFh
YmFlZTIwZmM2MmMzN2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKQEAgLTEzMyw4ICsxMzMs
OCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3Vy
Y2VzKCk7CiAKLSAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJy
aWRlOwotICAgIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CisgICAg
Ym9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8
RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKKyAgICBib29sIHJl
bW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlz
dGVuZXImLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogICAgIGJvb2wgaGFzRm9jdXNFdmVu
dExpc3RlbmVycygpIGNvbnN0OwogCiAjaWYgRU5BQkxFKENTU19SRUdJT05TKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKaW5kZXggYzdkODQ2ZWEyMzFhZTE1MGRhODEyZGZhNzg1
OTczODExZWVjMzZhYS4uNmRkYmI3NjI3ZGE0Zjc5YzQxZWZjZTQ2NmFhNjU2OGVkN2QzZmNjYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHBy
aXZhdGU6CiAgICAgZXhwbGljaXQgU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXIoU1ZHVFJlZkVs
ZW1lbnQmIHRyZWZFbGVtZW50KTsKIAogICAgIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIEV2ZW50Kikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEV2ZW50TGlzdGVuZXImKSBvdmVycmlkZTsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZl
bnRMaXN0ZW5lciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgU1ZHVFJlZkVsZW1lbnQmIG1fdHJl
ZkVsZW1lbnQ7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1fdGFyZ2V0OwpAQCAtOTIsOCArOTIsOCBA
QCB2b2lkIFNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjphdHRhY2goUmVmUHRyPEVsZW1lbnQ+
JiYgdGFyZ2V0KQogICAgIEFTU0VSVCh0YXJnZXQuZ2V0KCkpOwogICAgIEFTU0VSVCh0YXJnZXQt
PmluRG9jdW1lbnQoKSk7CiAKLSAgICB0YXJnZXQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1l
cygpLkRPTVN1YnRyZWVNb2RpZmllZEV2ZW50LCB0aGlzLCBmYWxzZSk7Ci0gICAgdGFyZ2V0LT5h
ZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5ET01Ob2RlUmVtb3ZlZEZyb21Eb2N1bWVudEV2
ZW50LCB0aGlzLCBmYWxzZSk7CisgICAgdGFyZ2V0LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFt
ZXMoKS5ET01TdWJ0cmVlTW9kaWZpZWRFdmVudCwgKnRoaXMsIGZhbHNlKTsKKyAgICB0YXJnZXQt
PmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLkRPTU5vZGVSZW1vdmVkRnJvbURvY3VtZW50
RXZlbnQsICp0aGlzLCBmYWxzZSk7CiAgICAgbV90YXJnZXQgPSBXVEZNb3ZlKHRhcmdldCk7CiB9
CiAKQEAgLTEwMiwxMiArMTAyLDEyIEBAIHZvaWQgU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI6
OmRldGFjaCgpCiAgICAgaWYgKCFpc0F0dGFjaGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fdGFyZ2V0LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5ET01TdWJ0cmVlTW9k
aWZpZWRFdmVudCwgdGhpcywgZmFsc2UpOwotICAgIG1fdGFyZ2V0LT5yZW1vdmVFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5ET01Ob2RlUmVtb3ZlZEZyb21Eb2N1bWVudEV2ZW50LCB0aGlzLCBm
YWxzZSk7CisgICAgbV90YXJnZXQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLkRP
TVN1YnRyZWVNb2RpZmllZEV2ZW50LCAqdGhpcywgZmFsc2UpOworICAgIG1fdGFyZ2V0LT5yZW1v
dmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5ET01Ob2RlUmVtb3ZlZEZyb21Eb2N1bWVudEV2
ZW50LCAqdGhpcywgZmFsc2UpOwogICAgIG1fdGFyZ2V0ID0gbnVsbHB0cjsKIH0KIAotYm9vbCBT
VkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVy
JiBsaXN0ZW5lcikKK2Jvb2wgU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0o
Y29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpIGNvbnN0CiB7CiAgICAgaWYgKGNvbnN0IFNW
R1RSZWZUYXJnZXRFdmVudExpc3RlbmVyKiB0YXJnZXRMaXN0ZW5lciA9IFNWR1RSZWZUYXJnZXRF
dmVudExpc3RlbmVyOjpjYXN0KCZsaXN0ZW5lcikpCiAgICAgICAgIHJldHVybiAmbV90cmVmRWxl
bWVudCA9PSAmdGFyZ2V0TGlzdGVuZXItPm1fdHJlZkVsZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCmluZGV4IDdiMjk4NzBmM2UyZDRj
ZmM1MGIwZDEyNGNiMTIzOWY0YzNlNzU0ZTYuLjBkMjRhNjE3NGZiZjFhOTRiZjJhZDdkOTkwZGUz
MDQyNTg4ODIwYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZH
U01JTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01J
TEVsZW1lbnQuY3BwCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIDogbnVs
bHB0cjsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYg
b3RoZXIpIG92ZXJyaWRlOworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVy
JiBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCiAgICAgdm9pZCBkaXNjb25uZWN0QW5pbWF0
aW9uKCkKICAgICB7CkBAIC05Nyw3ICs5Nyw3IEBAIHByaXZhdGU6CiAgICAgU1ZHU01JTEVsZW1l
bnQ6OkNvbmRpdGlvbiogbV9jb25kaXRpb247CiB9OwogCi1ib29sIENvbmRpdGlvbkV2ZW50TGlz
dGVuZXI6Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpCitib29sIENv
bmRpdGlvbkV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgbGlz
dGVuZXIpIGNvbnN0CiB7CiAgICAgaWYgKGNvbnN0IENvbmRpdGlvbkV2ZW50TGlzdGVuZXIqIGNv
bmRpdGlvbkV2ZW50TGlzdGVuZXIgPSBDb25kaXRpb25FdmVudExpc3RlbmVyOjpjYXN0KCZsaXN0
ZW5lcikpCiAgICAgICAgIHJldHVybiBtX2FuaW1hdGlvbiA9PSBjb25kaXRpb25FdmVudExpc3Rl
bmVyLT5tX2FuaW1hdGlvbiAmJiBtX2NvbmRpdGlvbiA9PSBjb25kaXRpb25FdmVudExpc3RlbmVy
LT5tX2NvbmRpdGlvbjsKQEAgLTU0NSw3ICs1NDUsNyBAQCB2b2lkIFNWR1NNSUxFbGVtZW50Ojpj
b25uZWN0Q29uZGl0aW9ucygpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICBBU1NFUlQoIWNvbmRpdGlvbi5tX2V2ZW50TGlzdGVuZXIpOwogICAgICAgICAgICAgY29uZGl0
aW9uLm1fZXZlbnRMaXN0ZW5lciA9IENvbmRpdGlvbkV2ZW50TGlzdGVuZXI6OmNyZWF0ZSh0aGlz
LCAmY29uZGl0aW9uKTsKLSAgICAgICAgICAgIGV2ZW50QmFzZS0+YWRkRXZlbnRMaXN0ZW5lcihj
b25kaXRpb24ubV9uYW1lLCBjb25kaXRpb24ubV9ldmVudExpc3RlbmVyLCBmYWxzZSk7CisgICAg
ICAgICAgICBldmVudEJhc2UtPmFkZEV2ZW50TGlzdGVuZXIoY29uZGl0aW9uLm1fbmFtZSwgKmNv
bmRpdGlvbi5tX2V2ZW50TGlzdGVuZXIsIGZhbHNlKTsKICAgICAgICAgfSBlbHNlIGlmIChjb25k
aXRpb24ubV90eXBlID09IENvbmRpdGlvbjo6U3luY2Jhc2UpIHsKICAgICAgICAgICAgIEFTU0VS
VCghY29uZGl0aW9uLm1fYmFzZUlELmlzRW1wdHkoKSk7CiAgICAgICAgICAgICBjb25kaXRpb24u
bV9zeW5jYmFzZSA9IHRyZWVTY29wZSgpLmdldEVsZW1lbnRCeUlkKGNvbmRpdGlvbi5tX2Jhc2VJ
RCk7CkBAIC01NzcsNyArNTc3LDcgQEAgdm9pZCBTVkdTTUlMRWxlbWVudDo6ZGlzY29ubmVjdENv
bmRpdGlvbnMoKQogICAgICAgICAgICAgLy8gb3VyIGNvbmRpdGlvbiBldmVudCBsaXN0ZW5lciwg
aW4gY2FzZSBpdCBsYXRlciBmaXJlcy4KICAgICAgICAgICAgIEVsZW1lbnQqIGV2ZW50QmFzZSA9
IGV2ZW50QmFzZUZvcihjb25kaXRpb24pOwogICAgICAgICAgICAgaWYgKGV2ZW50QmFzZSkKLSAg
ICAgICAgICAgICAgICBldmVudEJhc2UtPnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uZGl0aW9uLm1f
bmFtZSwgY29uZGl0aW9uLm1fZXZlbnRMaXN0ZW5lci5nZXQoKSwgZmFsc2UpOworICAgICAgICAg
ICAgICAgIGV2ZW50QmFzZS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25kaXRpb24ubV9uYW1lLCAq
Y29uZGl0aW9uLm1fZXZlbnRMaXN0ZW5lciwgZmFsc2UpOwogICAgICAgICAgICAgY29uZGl0aW9u
Lm1fZXZlbnRMaXN0ZW5lci0+ZGlzY29ubmVjdEFuaW1hdGlvbigpOwogICAgICAgICAgICAgY29u
ZGl0aW9uLm1fZXZlbnRMaXN0ZW5lciA9IG51bGxwdHI7CiAgICAgICAgIH0gZWxzZSBpZiAoY29u
ZGl0aW9uLm1fdHlwZSA9PSBDb25kaXRpb246OlN5bmNiYXNlKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9ET01FdmVudHNDbGFzc2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL0RP
TUV2ZW50c0NsYXNzZXMuY3BwCmluZGV4IDgwYjRkMmVhY2JiNWNmZDdjM2U1ZWZjNzFlYTlhMWVh
MTRmY2EzYmUuLmYwYjMxMDA0YmU4ZTM2MzM3YWU2ZmU3Yjk0YmU5YWQ4ZjFiMmVmNTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUV2ZW50c0NsYXNzZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2luL0RPTUV2ZW50c0NsYXNzZXMuY3BwCkBAIC02OCw3ICs2OCw3IEBAIFdlYkV2
ZW50TGlzdGVuZXI6On5XZWJFdmVudExpc3RlbmVyKCkKICAgICBtX2lET01FdmVudExpc3RlbmVy
LT5SZWxlYXNlKCk7CiB9CiAKLWJvb2wgV2ViRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25z
dCBXZWJDb3JlOjpFdmVudExpc3RlbmVyJiBvdGhlcikKK2Jvb2wgV2ViRXZlbnRMaXN0ZW5lcjo6
b3BlcmF0b3I9PShjb25zdCBXZWJDb3JlOjpFdmVudExpc3RlbmVyJiBvdGhlcikgY29uc3QKIHsK
ICAgICByZXR1cm4gKG90aGVyLnR5cGUoKSA9PSBDUFBFdmVudExpc3RlbmVyVHlwZSAKICAgICAg
ICAgJiYgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBXZWJFdmVudExpc3RlbmVyKj4oJm90aGVyKS0+
bV9pRE9NRXZlbnRMaXN0ZW5lciA9PSBtX2lET01FdmVudExpc3RlbmVyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2luL0RPTUV2ZW50c0NsYXNzZXMuaCBiL1NvdXJjZS9XZWJLaXQvd2lu
L0RPTUV2ZW50c0NsYXNzZXMuaAppbmRleCA0YWIyY2VlMWMxZjMyYTk5YjcwOWNjZjQ4Mjc4NzIw
NThlMTZkYzVlLi4xNTI2ZjlkNzZkMTIxZjU3OTZlYzhiNDIyYWE0Mjk2ZWExMzI0MmFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9ET01FdmVudHNDbGFzc2VzLmgKKysrIGIvU291cmNl
L1dlYktpdC93aW4vRE9NRXZlbnRzQ2xhc3Nlcy5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIFdl
YkV2ZW50TGlzdGVuZXIgOiBwdWJsaWMgV2ViQ29yZTo6RXZlbnRMaXN0ZW5lciB7CiBwdWJsaWM6
CiAgICAgV2ViRXZlbnRMaXN0ZW5lcihJRE9NRXZlbnRMaXN0ZW5lciopOwogICAgIH5XZWJFdmVu
dExpc3RlbmVyKCk7Ci0gICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0
ZW5lciYpOworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXIm
KSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoV2ViQ29yZTo6U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFdlYkNvcmU6OkV2ZW50Kik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
V2ViRXZlbnRMaXN0ZW5lcj4gY3JlYXRlKElET01FdmVudExpc3RlbmVyKik7CiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW5Bbm5vdGF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbkFubm90YXRpb24uaAppbmRleCA2M2E0OGFjNTYwNmI3NDRhOTUxMWEyN2U2NjJjODE4
MDUyZmViMTNlLi5mNjMzOTcwMWU2NjAxMDllMjkxYThmYzBjNWI5MWE0OTg5YTM0ZWJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFu
bm90YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbkFubm90YXRpb24uaApAQCAtODQsNyArODQsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUERGUGx1Z2luQW5ub3RhdGlvbkV2ZW50TGlzdGVuZXIo
YW5ub3RhdGlvbikpOwogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyKSBvdmVycmlkZSB7IHJldHVybiB0aGlzID09ICZsaXN0
ZW5lcjsgfQorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgbGlz
dGVuZXIpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRoaXMgPT0gJmxpc3RlbmVyOyB9CiAKICAg
ICAgICAgdm9pZCBzZXRBbm5vdGF0aW9uKFBERlBsdWdpbkFubm90YXRpb24qIGFubm90YXRpb24p
IHsgbV9hbm5vdGF0aW9uID0gYW5ub3RhdGlvbjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24ubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24ubW0K
aW5kZXggNDdiYTljMjkzNTE4NGE1NTgwZDllNjc1YzcyNWVjMjdhY2JmM2EzYy4uM2NhN2U0ODk4
ODdjZmU1OGM0M2M4ZWE3NDM0NmUxYzQ3ODdjZWE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5t
bQpAQCAtNjksOCArNjksOCBAQCB2b2lkIFBERlBsdWdpbkFubm90YXRpb246OmF0dGFjaChFbGVt
ZW50KiBwYXJlbnQpCiAgICAgbV9lbGVtZW50ID0gY3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKTsK
IAogICAgIG1fZWxlbWVudC0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgImFubm90YXRpb24iKTsK
LSAgICBtX2VsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNoYW5nZUV2ZW50
LCBtX2V2ZW50TGlzdGVuZXIsIGZhbHNlKTsKLSAgICBtX2VsZW1lbnQtPmFkZEV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLmJsdXJFdmVudCwgbV9ldmVudExpc3RlbmVyLCBmYWxzZSk7CisgICAg
bV9lbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jaGFuZ2VFdmVudCwgKm1f
ZXZlbnRMaXN0ZW5lciwgZmFsc2UpOworICAgIG1fZWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkuYmx1ckV2ZW50LCAqbV9ldmVudExpc3RlbmVyLCBmYWxzZSk7CiAKICAgICB1
cGRhdGVHZW9tZXRyeSgpOwogCkBAIC04Nyw4ICs4Nyw4IEBAIHZvaWQgUERGUGx1Z2luQW5ub3Rh
dGlvbjo6Y29tbWl0KCkKIAogUERGUGx1Z2luQW5ub3RhdGlvbjo6flBERlBsdWdpbkFubm90YXRp
b24oKQogewotICAgIG1fZWxlbWVudC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCku
Y2hhbmdlRXZlbnQsIG1fZXZlbnRMaXN0ZW5lci5nZXQoKSwgZmFsc2UpOwotICAgIG1fZWxlbWVu
dC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYmx1ckV2ZW50LCBtX2V2ZW50TGlz
dGVuZXIuZ2V0KCksIGZhbHNlKTsKKyAgICBtX2VsZW1lbnQtPnJlbW92ZUV2ZW50TGlzdGVuZXIo
ZXZlbnROYW1lcygpLmNoYW5nZUV2ZW50LCAqbV9ldmVudExpc3RlbmVyLCBmYWxzZSk7CisgICAg
bV9lbGVtZW50LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQsICpt
X2V2ZW50TGlzdGVuZXIsIGZhbHNlKTsKIAogICAgIG1fZXZlbnRMaXN0ZW5lci0+c2V0QW5ub3Rh
dGlvbigwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tCmluZGV4IGIyYTNjN2YwZmVm
YTViYjBmNTdmMTM1ZDNiMzZhYzcwMjE3ZWRkN2IuLjY3NzY0NzU3MmQ2ZmEyMDFkYzMyOTMzZGIz
MWIwNmRmYzkxYjA4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQubW0KQEAgLTQ5LDE0
ICs0OSwxNCBAQCBSZWY8UERGUGx1Z2luUGFzc3dvcmRGaWVsZD4gUERGUGx1Z2luUGFzc3dvcmRG
aWVsZDo6Y3JlYXRlKFBERkxheWVyQ29udHJvbGxlciAqcAogCiBQREZQbHVnaW5QYXNzd29yZEZp
ZWxkOjp+UERGUGx1Z2luUGFzc3dvcmRGaWVsZCgpCiB7Ci0gICAgZWxlbWVudCgpLT5yZW1vdmVF
dmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5rZXl1cEV2ZW50LCBldmVudExpc3RlbmVyKCksIGZh
bHNlKTsKKyAgICBlbGVtZW50KCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtl
eXVwRXZlbnQsICpldmVudExpc3RlbmVyKCksIGZhbHNlKTsKIH0KIAogUGFzc1JlZlB0cjxFbGVt
ZW50PiBQREZQbHVnaW5QYXNzd29yZEZpZWxkOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpCiB7
CiAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6
Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKTsKICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUodHlw
ZUF0dHIsICJwYXNzd29yZCIpOwotICAgIGVsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLmtleXVwRXZlbnQsIGV2ZW50TGlzdGVuZXIoKSwgZmFsc2UpOworICAgIGVsZW1lbnQt
PmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleXVwRXZlbnQsICpldmVudExpc3RlbmVy
KCksIGZhbHNlKTsKICAgICByZXR1cm4gZWxlbWVudDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5t
bSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFu
bm90YXRpb24ubW0KaW5kZXggZmJlZDNhNmZkYTY4OTNkOGQyZTU1MzVkYjQzM2RkMjk0NzE2ZmIx
Ny4uOGMwNzQ2OWM2ZDU4YWIxNzYyODE4MDg4ZGJlMTk1NjJjMzc4ZmNiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3Rh
dGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpblRleHRBbm5vdGF0aW9uLm1tCkBAIC03OCw3ICs3OCw3IEBAIFJlZjxQREZQbHVnaW5UZXh0
QW5ub3RhdGlvbj4gUERGUGx1Z2luVGV4dEFubm90YXRpb246OmNyZWF0ZShQREZBbm5vdGF0aW9u
ICphbm5vCiAKIFBERlBsdWdpblRleHRBbm5vdGF0aW9uOjp+UERGUGx1Z2luVGV4dEFubm90YXRp
b24oKQogewotICAgIGVsZW1lbnQoKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCku
a2V5ZG93bkV2ZW50LCBldmVudExpc3RlbmVyKCksIGZhbHNlKTsKKyAgICBlbGVtZW50KCktPnJl
bW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleWRvd25FdmVudCwgKmV2ZW50TGlzdGVu
ZXIoKSwgZmFsc2UpOwogfQogCiBQYXNzUmVmUHRyPEVsZW1lbnQ+IFBERlBsdWdpblRleHRBbm5v
dGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpCkBAIC05Nyw3ICs5Nyw3IEBAIFBhc3NS
ZWZQdHI8RWxlbWVudD4gUERGUGx1Z2luVGV4dEFubm90YXRpb246OmNyZWF0ZUFubm90YXRpb25F
bGVtZW50KCkKICAgICBlbHNlCiAgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KGlucHV0VGFnLCBmYWxzZSk7CiAKLSAgICBlbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2
ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQsIGV2ZW50TGlzdGVuZXIoKSwgZmFsc2UpOworICAgIGVs
ZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleWRvd25FdmVudCwgKmV2ZW50
TGlzdGVuZXIoKSwgZmFsc2UpOwogCiAgICAgU3R5bGVkRWxlbWVudCogc3R5bGVkRWxlbWVudCA9
IHN0YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPihlbGVtZW50LmdldCgpKTsKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY5
MWU4M2MyMjFmZTE3N2ZhZTE3OGFlODllZGRhMDRjY2YyNjU2ZmIuLmQwNzJlZWI4MTU1YzYwZDU3
NWQzNDE3Mzk4ODczZGQ3MmE4YzI4YTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNi0wNS0x
OCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEdlbmVyYXRlIGJp
bmRpbmdzIGNvZGUgZm9yIEV2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoKSAvIHJlbW92ZUV2
ZW50TGlzdGVuZXIoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTU3ODgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmViYXNlbGluZSBleGlzdGluZyB0ZXN0IG5vdyB0aGF0IHRoZSAnbGVuZ3RoJyBwcm9w
ZXJ0eSBvZiB0aG9zZSBmdW5jdGlvbnMKKyAgICAgICAgaGF2ZSBjaGFuZ2VkLiBUaGlzIGlzIGJl
Y2F1c2UgdGhlIElETCBoYXMgYmVlbiB1cGRhdGVkIHRvIG1hdGNoIG91cgorICAgICAgICBpbXBs
ZW1lbnRhdGlvbiAoYWxsIHBhcmFtZXRlcnMgYXJlIG9wdGlvbmFsKS4gV2hpbGUgdGhpcyBkb2Vz
IG5vdCBtYXRjaAorICAgICAgICB0aGUgc3BlY2lmaWNhdGlvbiwgdGhlIG5ldyBsZW5ndGggbm93
IG1hdGNoZXMgb3VyIGFjdHVhbCBiZWhhdmlvci4KKworICAgICAgICAqIGpzL2RvbS9mdW5jdGlv
bi1sZW5ndGgtZXhwZWN0ZWQudHh0OgorCiAyMDE2LTA1LTE4ICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAKICAgICAgICAgU3luYyBET00gZXhjZXB0aW9uIHR5
cGVzIHdpdGggV2ViSURMIGFuZCB1cGRhdGUgcHJvbWlzZSByZWplY3Rpb25zCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9kb20vZnVuY3Rpb24tbGVuZ3RoLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2pzL2RvbS9mdW5jdGlvbi1sZW5ndGgtZXhwZWN0ZWQudHh0CmluZGV4IDRhMzZiOThm
NmI4YzIyMDgyNGJiOTJlYTA4NWFjMTNhNjA0YjQ3ZWEuLmU5NWJlNTBlNTA2NWFkNzcxNmNiNTg5
MzBmNDhlMjMxNzRhNGE5NTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2RvbS9mdW5jdGlv
bi1sZW5ndGgtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9mdW5jdGlvbi1s
ZW5ndGgtZXhwZWN0ZWQudHh0CkBAIC04LDcgKzgsNyBAQCBQQVNTIHdpbmRvdy5vcGVuLmxlbmd0
aCBpcyAyCiBQQVNTIHdpbmRvdy5zaG93TW9kYWxEaWFsb2cubGVuZ3RoIGlzIDEKIFBBU1Mgd2lu
ZG93LnNldFRpbWVvdXQubGVuZ3RoIGlzIDEKIFBBU1Mgd2luZG93LmNsZWFyVGltZW91dC5sZW5n
dGggaXMgMAotUEFTUyB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lci5sZW5ndGggaXMgMgorRkFJTCB3
aW5kb3cuYWRkRXZlbnRMaXN0ZW5lci5sZW5ndGggc2hvdWxkIGJlIDIuIFdhcyAwLgogUEFTUyBB
cnJheS5wcm90b3R5cGUuY29uY2F0Lmxlbmd0aCBpcyAxCiBQQVNTIEFycmF5LnByb3RvdHlwZS5q
b2luLmxlbmd0aCBpcyAxCiBQQVNTIEFycmF5LnByb3RvdHlwZS5wdXNoLmxlbmd0aCBpcyAxCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279351</attachid>
            <date>2016-05-18 22:32:23 -0700</date>
            <delta_ts>2016-05-18 22:40:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157882-20160518223322.patch</filename>
            <type>text/plain</type>
            <size>67848</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxMDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzczYWNlZjg4MjA4MzNi
MTc1ZjVmNGFkMjMyY2NjZjVhMzQ2MDUyYi4uNGI5NjcyZWJkZGRkNDU2ZDU5NWIxODA3NzBkNmE1
NDBkYjk4Zjk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxNi0wNS0xOCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEdlbmVyYXRlIGJpbmRpbmdz
IGNvZGUgZm9yIEV2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoKSAvIHJlbW92ZUV2ZW50TGlz
dGVuZXIoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU3ODgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
R2VuZXJhdGUgYmluZGluZ3MgY29kZSBmb3IgRXZlbnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigp
IC8gcmVtb3ZlRXZlbnRMaXN0ZW5lcigpCisgICAgICAgIGluc3RlYWQgb2YgaGFyZGNvZGluZyB0
aGVtIGluIHRoZSBiaW5kaW5ncyBnZW5lcmF0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBy
ZWJhc2VsaW5lZCBleGlzdGluZyB0ZXN0LiBUaGUgb25seSBXZWItRXhwb3NlZCBiZWhhdmlvciBj
aGFuZ2UKKyAgICAgICAgaXMgdGhhdCAnbGVuZ3RoJyBwcm9wZXJ0eSBvZiB0aG9zZSBmdW5jdGlv
bnMgaGF2ZSBjaGFuZ2VkLiBUaGlzIGlzIGJlY2F1c2UgdGhlCisgICAgICAgIElETCBoYXMgYmVl
biB1cGRhdGVkIHRvIG1hdGNoIG91ciBpbXBsZW1lbnRhdGlvbiAoYWxsIHBhcmFtZXRlcnMgYXJl
IG9wdGlvbmFsKS4KKyAgICAgICAgV2hpbGUgdGhpcyBkb2VzIG5vdCBtYXRjaCB0aGUgc3BlY2lm
aWNhdGlvbiwgdGhlIG5ldyBsZW5ndGggbm93IG1hdGNoZXMgb3VyCisgICAgICAgIGFjdHVhbCBi
ZWhhdmlvci4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3Vy
Y2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6
YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NjaGVkdWxlZFNvdXJj
ZU5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9T
Y3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nv
ck5vZGU6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvY2Vz
c29yTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9TY3JpcHRQcm9jZXNzb3JOb2RlLmg6CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9HT2Jq
ZWN0RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHT2JqZWN0RXZlbnRMaXN0
ZW5lcjo6b3BlcmF0b3I9PSk6CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZl
bnRMaXN0ZW5lci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAg
ICAoV2ViQ29yZTo6ZXZlbnRIYW5kbGVyQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRM
aXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6Y2Fz
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OmpzRnVuY3Rp
b24pOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL29iamMvT2JqQ0V2ZW50TGlzdGVuZXIu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL09iakNFdmVudExpc3RlbmVyLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6T2JqQ0V2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbik6CisgICAgICAgIChKU1ZhbHVlVG9OYXRpdmUpOgorICAgICAgICAoR2V0UGFy
ZW50Q2xhc3NOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEdldENhbGxiYWNrQ2xhc3NOYW1lKTog
RGVsZXRlZC4KKyAgICAgICAgKEdldEpTQ2FsbGJhY2tEYXRhVHlwZSk6IERlbGV0ZWQuCisgICAg
ICAgICogZG9tL0V2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lck1h
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRMaXN0ZW5lclRvVmVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50TGlzdGVuZXJNYXA6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpyZW1v
dmVMaXN0ZW5lckZyb21WZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRMaXN0ZW5lck1h
cDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlMaXN0ZW5lcnNOb3RDcmVhdGVkRnJv
bU1hcmt1cFRvVGFyZ2V0KToKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lck1hcC5oOgorICAg
ICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdl
dDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6YWRk
RXZlbnRMaXN0ZW5lckZvckJpbmRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0
OjpyZW1vdmVFdmVudExpc3RlbmVyRm9yQmluZGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRU
YXJnZXQ6OnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRUYXJnZXQ6OmNsZWFyQXR0cmlidXRlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogZG9tL0V2
ZW50VGFyZ2V0Lmg6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0LmlkbDoKKyAgICAgICAgKiBk
b20vTWVzc2FnZVBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmFkZEV2
ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5oOgorICAgICAgICAqIGRv
bS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyeUFkZEV2ZW50TGlzdGVuZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3Jl
Ojp0cnlSZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlbW92
ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogZG9tL1Jl
Z2lzdGVyZWRFdmVudExpc3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RlcmVkRXZl
bnRMaXN0ZW5lcjo6UmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGh0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojph
ZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJl
bW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURvY3VtZW50OjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGh0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHNBcHBsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQXBw
bGU6OnNob3dDbG9zZWRDYXB0aW9uVHJhY2tMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbHNBcHBsZTo6aGlkZUNsb3NlZENhcHRpb25UcmFja0xpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PSk6CisgICAg
ICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRv
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAg
ICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjphZGRFdmVudExpc3Rl
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIp
OgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjph
dHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI6OmRl
dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcjo6b3Bl
cmF0b3I9PSk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb25kaXRpb25FdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50Ojpjb25uZWN0Q29uZGl0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6ZGlzY29ubmVjdENvbmRpdGlvbnMpOgorCiAy
MDE2LTA1LTE4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBN
b2Rlcm4gSURCOiBNYWtlIFRlc3RSdW5uZXIuY2xlYXJBbGxEYXRhYmFzZXMgYWxzbyBkZWxldGUg
SW5kZXhlZERCIGRhdGFiYXNlcyAob25jZSBkb2luZyBzbyBpcyBzdXBwb3J0ZWQpLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hh
bmdlTG9nCmluZGV4IDNhNDBkMzUwN2JjNjc2YzJmNzhhOTk1MWU2NTU2YWVhNTY5ZGMwNWEuLjQ0
M2FkNGE5YWIxNDUyZGU5MWNjMTRiYmY2Mjk3YmY4NjQyOGMxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAxNi0wNS0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIEdlbmVyYXRlIGJpbmRpbmdzIGNvZGUgZm9yIEV2ZW50VGFyZ2V0LmFk
ZEV2ZW50TGlzdGVuZXIoKSAvIHJlbW92ZUV2ZW50TGlzdGVuZXIoKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3ODgyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2VuZXJhdGUgYmluZGluZ3MgY29kZSBm
b3IgRXZlbnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigpIC8gcmVtb3ZlRXZlbnRMaXN0ZW5lcigp
CisgICAgICAgIGluc3RlYWQgb2YgaGFyZGNvZGluZyB0aGVtIGluIHRoZSBiaW5kaW5ncyBnZW5l
cmF0b3IuCisKKyAgICAgICAgKiBET01FdmVudHNDbGFzc2VzLmNwcDoKKyAgICAgICAgKFdlYkV2
ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIERPTUV2ZW50c0NsYXNzZXMuaDoK
KwogMjAxNi0wNS0xNiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQgcm9sbG91dCByMjAwOTI0LiBDYXVzZWQganMvcmVncmVzcy9zdHJp
bmctcmVwbGFjZS1nZW5lcmljLmh0bWwgdG8gZmFpbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjMWVhOTQ0NzM5
ZmJiNTRlNmJhZmEzOGFlMzM5NDEzNGMyMmMxODQyLi45MWE1Y2EyZmFlNDQxZTBkMDdjZTdjOTIw
NzRkMTU5NWI2Zjg4Zjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTYtMDUtMTgg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBHZW5lcmF0ZSBiaW5k
aW5ncyBjb2RlIGZvciBFdmVudFRhcmdldC5hZGRFdmVudExpc3RlbmVyKCkgLyByZW1vdmVFdmVu
dExpc3RlbmVyKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1Nzg4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEdlbmVyYXRlIGJpbmRpbmdzIGNvZGUgZm9yIEV2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVu
ZXIoKSAvIHJlbW92ZUV2ZW50TGlzdGVuZXIoKQorICAgICAgICBpbnN0ZWFkIG9mIGhhcmRjb2Rp
bmcgdGhlbSBpbiB0aGUgYmluZGluZ3MgZ2VuZXJhdG9yLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW5Bbm5vdGF0aW9uOjphdHRhY2gpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5B
bm5vdGF0aW9uOjp+UERGUGx1Z2luQW5ub3RhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW5QYXNzd29yZEZpZWxkOjp+UERGUGx1Z2luUGFzc3dvcmRGaWVsZCk6CisgICAgICAg
IChXZWJLaXQ6OlBERlBsdWdpblBhc3N3b3JkRmllbGQ6OmNyZWF0ZUFubm90YXRpb25FbGVtZW50
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0
aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6flBERlBs
dWdpblRleHRBbm5vdGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luVGV4dEFubm90
YXRpb246OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KToKKwogMjAxNi0wNS0xOCAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kZXJuIElEQjogTWFrZSBUZXN0
UnVubmVyLmNsZWFyQWxsRGF0YWJhc2VzIGFsc28gZGVsZXRlIEluZGV4ZWREQiBkYXRhYmFzZXMg
KG9uY2UgZG9pbmcgc28gaXMgc3VwcG9ydGVkKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcAppbmRl
eCBiYzRlZmI0YjcyY2U2ZDdlYmNjY2UzOGViNjA5OTk1Mzk0MGU5YjUwLi40Y2E2YTA0NDJmZDNh
OTMxNTdjNzI1MTRmMzQ3YTFmYWM3ODM2NGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwCkBA
IC0yMDEsNyArMjAxLDcgQEAgdm9pZCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OmZpbmlzaCgp
CiAgICAgfQogfQogCi1ib29sIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6YWRkRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+
JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgQXVkaW9TY2hlZHVsZWRTb3VyY2VO
b2RlOjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8
RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIGJvb2wg
c3VjY2VzcyA9IEF1ZGlvTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdURk1vdmUo
bGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKICAgICBpZiAoc3VjY2VzcyAmJiBldmVudFR5cGUgPT0g
ZXZlbnROYW1lcygpLmVuZGVkRXZlbnQpCkBAIC0yMDksNyArMjA5LDcgQEAgYm9vbCBBdWRpb1Nj
aGVkdWxlZFNvdXJjZU5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIFIKICAgICByZXR1cm4gc3VjY2VzczsKIH0KIAotYm9vbCBBdWRpb1NjaGVkdWxl
ZFNvdXJjZU5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIEF1
ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVy
ZSkKIHsKICAgICBib29sIHN1Y2Nlc3MgPSBBdWRpb05vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIo
ZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CiAgICAgaWYgKHN1Y2Nlc3MgJiYgZXZl
bnRUeXBlID09IGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgKaW5k
ZXggZWNlZGUzOGEwODk0MjZkMDljZGU2MWQ0MGNiN2Y3NDNiOWM2MTA1NS4uY2I0ZGQzY2RlODIx
NzVjZDE2NTYzZDBkODhmZmNjMTE3Y2ExZDA5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCkBAIC0x
MDEsOCArMTAxLDggQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgVW5rbm93
blRpbWU7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0
dXJlKSBvdmVycmlkZTsKLSAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpIG92ZXJy
aWRlOworICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7Cisg
ICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBFdmVudExpc3RlbmVyJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKICAgICB2b2lkIHJl
bW92ZUFsbEV2ZW50TGlzdGVuZXJzKCkgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAppbmRl
eCA2ODVjNjczMDg0YzhjMWYxODMzMGZmOWZmMzY3NjUzMDljZDM5M2U1Li4wY2M0MWI3NTY4YmIw
NTEwZTE1NWVlOWNlYzEwMDU2MWViNzRiYTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKQEAgLTI3Myw3ICsy
NzMsNyBAQCBkb3VibGUgU2NyaXB0UHJvY2Vzc29yTm9kZTo6bGF0ZW5jeVRpbWUoKSBjb25zdAog
ICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7CiB9CiAK
LWJvb2wgU2NyaXB0UHJvY2Vzc29yTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wg
dXNlQ2FwdHVyZSkKK2Jvb2wgU2NyaXB0UHJvY2Vzc29yTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVu
ZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICBib29sIHN1Y2Nlc3MgPSBBdWRpb05vZGU6OmFk
ZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7
CiAgICAgaWYgKHN1Y2Nlc3MgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5hdWRpb3Byb2Nl
c3NFdmVudCkKQEAgLTI4MSw3ICsyODEsNyBAQCBib29sIFNjcmlwdFByb2Nlc3Nvck5vZGU6OmFk
ZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cgogICAg
IHJldHVybiBzdWNjZXNzOwogfQogCi1ib29sIFNjcmlwdFByb2Nlc3Nvck5vZGU6OnJlbW92ZUV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIq
IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIFNjcmlwdFByb2Nlc3Nvck5vZGU6OnJl
bW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlz
dGVuZXImIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgYm9vbCBzdWNjZXNzID0g
QXVkaW9Ob2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNh
cHR1cmUpOwogICAgIGlmIChzdWNjZXNzICYmIGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuYXVk
aW9wcm9jZXNzRXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oCmluZGV4IDZiNjVkMDE4ZWJmYWY2OTZhMDVkZDhkM2Rm
ODA0YTYzYzRiYWQ0MjQuLjEzMDYyNTkwOTBhZDQzYjJhZjVkNjM3MjJkNTVlMjQzM2Q4M2JiMmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vz
c29yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJv
Y2Vzc29yTm9kZS5oCkBAIC03Myw4ICs3Myw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGZpcmVQ
cm9jZXNzRXZlbnQoKTsKIAotICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVy
ZSkgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlk
ZTsKKyAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAg
IGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
RXZlbnRMaXN0ZW5lciYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1v
dmVBbGxFdmVudExpc3RlbmVycygpIG92ZXJyaWRlOwogCiAgICAgLy8gRG91YmxlIGJ1ZmZlcmlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZl
bnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RF
dmVudExpc3RlbmVyLmNwcAppbmRleCBkNGExZDE4MzUxY2YxYWQ0MTMzMmRlMTU3ZDA2YjI5MTQx
NzhiYWFjLi5mMmVkOTMyNTFjNTJjNDY4MTlkZWQxM2I1YzBhZTYyM2U2MTEwMTUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RFdmVudExpc3RlbmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RFdmVudExp
c3RlbmVyLmNwcApAQCAtNTcsOSArNTcsOSBAQCB2b2lkIEdPYmplY3RFdmVudExpc3RlbmVyOjpn
b2JqZWN0RGVzdHJveWVkKCkKICAgICAvLyBhbmQgbGF0ZXIgdXNlLWFmdGVyLWZyZWUgd2l0aCB0
aGUgbV9oYW5kbGVyID0gMDsgYXNzaWdubWVudC4KICAgICBSZWZQdHI8R09iamVjdEV2ZW50TGlz
dGVuZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CiAKLSAgICBtX2NvcmVUYXJnZXQtPnJlbW92ZUV2
ZW50TGlzdGVuZXIobV9kb21FdmVudE5hbWUuZGF0YSgpLCB0aGlzLCBtX2NhcHR1cmUpOwotICAg
IG1fY29yZVRhcmdldCA9IDA7Ci0gICAgbV9oYW5kbGVyID0gMDsKKyAgICBtX2NvcmVUYXJnZXQt
PnJlbW92ZUV2ZW50TGlzdGVuZXIobV9kb21FdmVudE5hbWUuZGF0YSgpLCAqdGhpcywgbV9jYXB0
dXJlKTsKKyAgICBtX2NvcmVUYXJnZXQgPSBudWxscHRyOworICAgIG1faGFuZGxlciA9IG51bGxw
dHI7CiB9CiAKIHZvaWQgR09iamVjdEV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBFdmVudCogZXZlbnQpCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgR09i
amVjdEV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBF
dmVudCogZXZlbnQpCiAgICAgZ192YWx1ZV91bnNldChwYXJhbWV0ZXJzICsgMSk7CiB9CiAKLWJv
b2wgR09iamVjdEV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYg
bGlzdGVuZXIpCitib29sIEdPYmplY3RFdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IEV2
ZW50TGlzdGVuZXImIGxpc3RlbmVyKSBjb25zdAogewogICAgIGlmIChjb25zdCBHT2JqZWN0RXZl
bnRMaXN0ZW5lciogZ29iamVjdEV2ZW50TGlzdGVuZXIgPSBHT2JqZWN0RXZlbnRMaXN0ZW5lcjo6
Y2FzdCgmbGlzdGVuZXIpKQogICAgICAgICByZXR1cm4gbV90YXJnZXQgPT0gZ29iamVjdEV2ZW50
TGlzdGVuZXItPm1fdGFyZ2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9n
b2JqZWN0L0dPYmplY3RFdmVudExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9n
b2JqZWN0L0dPYmplY3RFdmVudExpc3RlbmVyLmgKaW5kZXggZTExN2Y0MGQ2ZWNlNWQ0ZjY2OGMw
OTliODA5NTZhNzNiMGZjNmM4Ni4uMjA2YmJkNzg5ZTMxMDk3MGVmZGQyY2E3ZDgyZmM3MWJhYzk2
ZmJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0
RXZlbnRMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09i
amVjdEV2ZW50TGlzdGVuZXIuaApAQCAtMzUsMTQgKzM1LDE0IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBib29sIGFkZEV2ZW50TGlzdGVuZXIoR09iamVjdCogdGFyZ2V0LCBFdmVudFRhcmdldCog
Y29yZVRhcmdldCwgY29uc3QgY2hhciogZG9tRXZlbnROYW1lLCBHQ2xvc3VyZSogaGFuZGxlciwg
Ym9vbCB1c2VDYXB0dXJlKQogICAgIHsKLSAgICAgICAgUmVmUHRyPEdPYmplY3RFdmVudExpc3Rl
bmVyPiBsaXN0ZW5lcihhZG9wdFJlZihuZXcgR09iamVjdEV2ZW50TGlzdGVuZXIodGFyZ2V0LCBj
b3JlVGFyZ2V0LCBkb21FdmVudE5hbWUsIGhhbmRsZXIsIHVzZUNhcHR1cmUpKSk7Ci0gICAgICAg
IHJldHVybiBjb3JlVGFyZ2V0LT5hZGRFdmVudExpc3RlbmVyKGRvbUV2ZW50TmFtZSwgbGlzdGVu
ZXIucmVsZWFzZSgpLCB1c2VDYXB0dXJlKTsKKyAgICAgICAgUmVmPEdPYmplY3RFdmVudExpc3Rl
bmVyPiBsaXN0ZW5lcihhZG9wdFJlZigqbmV3IEdPYmplY3RFdmVudExpc3RlbmVyKHRhcmdldCwg
Y29yZVRhcmdldCwgZG9tRXZlbnROYW1lLCBoYW5kbGVyLCB1c2VDYXB0dXJlKSkpOworICAgICAg
ICByZXR1cm4gY29yZVRhcmdldC0+YWRkRXZlbnRMaXN0ZW5lcihkb21FdmVudE5hbWUsIFdURk1v
dmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCByZW1v
dmVFdmVudExpc3RlbmVyKEdPYmplY3QqIHRhcmdldCwgRXZlbnRUYXJnZXQqIGNvcmVUYXJnZXQs
IGNvbnN0IGNoYXIqIGRvbUV2ZW50TmFtZSwgR0Nsb3N1cmUqIGhhbmRsZXIsIGJvb2wgdXNlQ2Fw
dHVyZSkKICAgICB7CiAgICAgICAgIEdPYmplY3RFdmVudExpc3RlbmVyIGtleSh0YXJnZXQsIGNv
cmVUYXJnZXQsIGRvbUV2ZW50TmFtZSwgaGFuZGxlciwgdXNlQ2FwdHVyZSk7Ci0gICAgICAgIHJl
dHVybiBjb3JlVGFyZ2V0LT5yZW1vdmVFdmVudExpc3RlbmVyKGRvbUV2ZW50TmFtZSwgJmtleSwg
dXNlQ2FwdHVyZSk7CisgICAgICAgIHJldHVybiBjb3JlVGFyZ2V0LT5yZW1vdmVFdmVudExpc3Rl
bmVyKGRvbUV2ZW50TmFtZSwga2V5LCB1c2VDYXB0dXJlKTsKICAgICB9CiAKICAgICBzdGF0aWMg
dm9pZCBnb2JqZWN0RGVzdHJveWVkQ2FsbGJhY2soR09iamVjdEV2ZW50TGlzdGVuZXIqIGxpc3Rl
bmVyLCBHT2JqZWN0KikKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgOiAw
OwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVu
ZXImIG90aGVyKTsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3Ro
ZXIpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIEdPYmplY3RFdmVudExpc3RlbmVy
KEdPYmplY3QqLCBFdmVudFRhcmdldCosIGNvbnN0IGNoYXIqIGRvbUV2ZW50TmFtZSwgR0Nsb3N1
cmUqLCBib29sIGNhcHR1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRMaXN0ZW5lci5jcHAKaW5kZXggY2M1NGZkNGE4MTg0OTc3YTYwNGI1Zjk0YTU4NTIxMzJhMWQ4
Njg3ZS4uYmZkNzhhODI5NWU4MzgxMjE5YjNiMmRiYTVmNDRhYjA5MGUxNzY2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCkBAIC0xNjMsMjAg
KzE2MywxMyBAQCBib29sIEpTRXZlbnRMaXN0ZW5lcjo6dmlydHVhbGlzQXR0cmlidXRlKCkgY29u
c3QKICAgICByZXR1cm4gbV9pc0F0dHJpYnV0ZTsKIH0KIAotYm9vbCBKU0V2ZW50TGlzdGVuZXI6
Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpCitib29sIEpTRXZlbnRM
aXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikgY29uc3QK
IHsKICAgICBpZiAoY29uc3QgSlNFdmVudExpc3RlbmVyKiBqc0V2ZW50TGlzdGVuZXIgPSBKU0V2
ZW50TGlzdGVuZXI6OmNhc3QoJmxpc3RlbmVyKSkKICAgICAgICAgcmV0dXJuIG1fanNGdW5jdGlv
biA9PSBqc0V2ZW50TGlzdGVuZXItPm1fanNGdW5jdGlvbiAmJiBtX2lzQXR0cmlidXRlID09IGpz
RXZlbnRMaXN0ZW5lci0+bV9pc0F0dHJpYnV0ZTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJl
ZjxKU0V2ZW50TGlzdGVuZXI+IGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvckFkZChKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIEpTQzo6SlNPYmplY3QmIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0JiB3cmFw
cGVyKQotewotICAgIC8vIEZJWE1FOiBUaGlzIGFic3RyYWN0aW9uIGlzIG5vIGxvbmdlciBuZWVk
ZWQuIEl0IHdhcyBwYXJ0IG9mIHN1cHBvcnQgZm9yIFNWR0VsZW1lbnRJbnN0YW5jZS4KLSAgICAv
LyBXZSBzaG91bGQgcmVtb3ZlIGl0IGFuZCBzaW1wbGlmeSB0aGUgYmluZGluZ3MgZ2VuZXJhdGlv
biBzY3JpcHRzLgotICAgIHJldHVybiBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZSgmbGlzdGVuZXIs
ICZ3cmFwcGVyLCBmYWxzZSwgY3VycmVudFdvcmxkKCZzdGF0ZSkpOwotfQotCiBzdGF0aWMgaW5s
aW5lIEpTQzo6SlNWYWx1ZSBldmVudEhhbmRsZXJBdHRyaWJ1dGUoRXZlbnRMaXN0ZW5lciogYWJz
dHJhY3RMaXN0ZW5lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBp
ZiAoIWFic3RyYWN0TGlzdGVuZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0V2ZW50TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRMaXN0ZW5lci5oCmluZGV4IGEwMzk1NTM3MWJmMWNmM2NjYTgwMDBhMjQ2YjRiNjY2YTg5ZTJh
OTUuLmU1NWEyNWIwZjY5NDNlMjJiMjgzOWYxODkxODNlOTY3OGJiOTE3MzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCkBAIC00Myw2ICs0MywxNCBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpTRXZlbnRMaXN0ZW5lcihs
aXN0ZW5lciwgd3JhcHBlciwgaXNBdHRyaWJ1dGUsIHdvcmxkKSk7CiAgICAgfQogCisgICAgc3Rh
dGljIFJlZlB0cjxKU0V2ZW50TGlzdGVuZXI+IGNyZWF0ZShKU0M6OkpTVmFsdWUgbGlzdGVuZXIs
IEpTQzo6SlNPYmplY3QmIHdyYXBwZXIsIGJvb2wgaXNBdHRyaWJ1dGUsIERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQpCisgICAgeworICAgICAgICBpZiAoVU5MSUtFTFkoIWxpc3RlbmVyLmlzT2JqZWN0
KCkpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBKU0V2ZW50TGlzdGVuZXIoSlNDOjphc09iamVjdChsaXN0ZW5lciksICZ3cmFwcGVy
LCBpc0F0dHJpYnV0ZSwgd29ybGQpKTsKKyAgICB9CisKICAgICBzdGF0aWMgY29uc3QgSlNFdmVu
dExpc3RlbmVyKiBjYXN0KGNvbnN0IEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGxpc3RlbmVyLT50eXBlKCkgPT0gSlNFdmVudExpc3RlbmVyVHlwZQpAQCAt
NTIsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5KU0V2ZW50TGlzdGVuZXIoKTsK
IAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgb3ZlcnJp
ZGU7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGV2ZW50IGxpc3RlbmVy
IHdhcyBjcmVhdGVkIGZvciBhbiBldmVudCBoYW5kbGVyIGF0dHJpYnV0ZSwgbGlrZSAib25sb2Fk
IiBvciAib25jbGljayIuCiAgICAgYm9vbCBpc0F0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNBdHRyaWJ1dGU7IH0KQEAgLTk5LDkgKzEwNyw2IEBAIHZvaWQgc2V0RG9jdW1lbnRFdmVudEhh
bmRsZXJBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTT2JqZWN0JiwgSFRNTEVsZW1l
CiBKU0M6OkpTVmFsdWUgZG9jdW1lbnRFdmVudEhhbmRsZXJBdHRyaWJ1dGUoRG9jdW1lbnQmLCBj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7CiB2b2lkIHNldERvY3VtZW50RXZlbnRIYW5k
bGVyQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU09iamVjdCYsIERvY3VtZW50Jiwg
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEpTQzo6SlNWYWx1ZSk7CiAKLVJlZjxKU0V2
ZW50TGlzdGVuZXI+IGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvckFkZChKU0M6OkV4ZWNTdGF0ZSYs
IEpTQzo6SlNPYmplY3QmIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0JiB3cmFwcGVyKTsKLVJlZjxK
U0V2ZW50TGlzdGVuZXI+IGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvclJlbW92ZShKU0M6OkV4ZWNT
dGF0ZSYsIEpTQzo6SlNPYmplY3QmIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0JiB3cmFwcGVyKTsK
LQogaW5saW5lIEpTQzo6SlNPYmplY3QqIEpTRXZlbnRMaXN0ZW5lcjo6anNGdW5jdGlvbihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSBjb25zdAogewogICAg
IC8vIGluaXRpYWxpemVKU0Z1bmN0aW9uIGNhbiB0cmlnZ2VyIGNvZGUgdGhhdCBkZWxldGVzIHRo
aXMgZXZlbnQgbGlzdGVuZXIKQEAgLTEzMywxMSArMTM4LDYgQEAgaW5saW5lIEpTQzo6SlNPYmpl
Y3QqIEpTRXZlbnRMaXN0ZW5lcjo6anNGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHQKICAgICByZXR1cm4gbV9qc0Z1bmN0aW9uLmdldCgpOwogfQogCi1pbmxpbmUgUmVmPEpT
RXZlbnRMaXN0ZW5lcj4gY3JlYXRlSlNFdmVudExpc3RlbmVyRm9yUmVtb3ZlKEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgSlNDOjpKU09iamVjdCYgbGlzdGVuZXIsIEpTQzo6SlNPYmplY3QmIHdyYXBw
ZXIpCi17Ci0gICAgcmV0dXJuIGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvckFkZChzdGF0ZSwgbGlz
dGVuZXIsIHdyYXBwZXIpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBKU0V2ZW50TGlzdGVuZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
b2JqYy9PYmpDRXZlbnRMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9P
YmpDRXZlbnRMaXN0ZW5lci5oCmluZGV4IGYzZTk4NDM3ZmJhYWQ3OWEyY2I1MzNkYmI4MzgxNDMz
NjFmM2E1M2EuLjIzYzk4NDU1NTRmZTk4ZTcwNzBmOWY5YTFkYmNmODdkNTc0MzQ1NmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ0V2ZW50TGlzdGVuZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL09iakNFdmVudExpc3RlbmVyLmgKQEAg
LTUyLDcgKzUyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIE9iakNFdmVudExp
c3RlbmVyKE9iakNMaXN0ZW5lcik7CiAgICAgICAgIHZpcnR1YWwgfk9iakNFdmVudExpc3RlbmVy
KCk7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXIm
KTsKKyAgICAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYp
IGNvbnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIEV2ZW50Kik7CiAKICAgICAgICAgUmV0YWluUHRyPE9iakNMaXN0ZW5lcj4gbV9s
aXN0ZW5lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ0V2
ZW50TGlzdGVuZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL09iakNFdmVudExp
c3RlbmVyLm1tCmluZGV4IDA5OWQ0NTVjMGNhNWI0NzU4NzQ0OTdlZGYyOWUyNzE2YjFmNDA2YzMu
LjMyZmU2ZTY1MWIxNTA1MWMyMTMyM2M3OWM2MDM5NDhiMjU0MGE0MDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ0V2ZW50TGlzdGVuZXIubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9PYmpDRXZlbnRMaXN0ZW5lci5tbQpAQCAtNzksNyAr
NzksNyBAQCB2b2lkIE9iakNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgRXZlbnQqIGV2ZW50KQogICAgIFtsaXN0ZW5lciBoYW5kbGVFdmVudDpraXQo
ZXZlbnQpXTsKIH0KIAotYm9vbCBPYmpDRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBF
dmVudExpc3RlbmVyJiBsaXN0ZW5lcikKK2Jvb2wgT2JqQ0V2ZW50TGlzdGVuZXI6Om9wZXJhdG9y
PT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpIGNvbnN0CiB7CiAgICAgaWYgKGNvbnN0
IE9iakNFdmVudExpc3RlbmVyKiBvYmpDRXZlbnRMaXN0ZW5lciA9IE9iakNFdmVudExpc3RlbmVy
OjpjYXN0KCZsaXN0ZW5lcikpCiAgICAgICAgIHJldHVybiBtX2xpc3RlbmVyID09IG9iakNFdmVu
dExpc3RlbmVyLT5tX2xpc3RlbmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBmNzE3OGQxNTAxNDE2M2IwMTVkMWZmYWVi
ZGYzYjA0YWM2Y2FkODMyLi41MTVkYzRmNjJkOGU0OWU2NWMxOTE1ZGVjYzUxZjVmNGJiMzYwZjg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQpAQCAtMTQzLDI2ICsxNDMsNiBAQCBzdWIgRXZlbnRIYW5kbGVyQXR0cmlidXRlRXZl
bnROYW1lCiAgICAgcmV0dXJuICJldmVudE5hbWVzKCkuJHtldmVudFR5cGV9RXZlbnQiOwogfQog
Ci1zdWIgR2VuZXJhdGVFdmVudExpc3RlbmVyQ2FsbAotewotICAgIG15ICRmdW5jdGlvbk5hbWUg
PSBzaGlmdDsKLSAgICBteSAkc3VmZml4ID0gdWNmaXJzdCAkZnVuY3Rpb25OYW1lOwotICAgIG15
ICRwYXNzUmVmUHRySGFuZGxpbmcgPSAoJGZ1bmN0aW9uTmFtZSBlcSAiYWRkIikgPyAiIiA6ICIu
cHRyKCkiOwotCi0gICAgJGltcGxJbmNsdWRlc3siSlNFdmVudExpc3RlbmVyLmgifSA9IDE7Ci0K
LSAgICBteSBAR2VuZXJhdGVFdmVudExpc3RlbmVySW1wbCA9ICgpOwotCi0gICAgcHVzaChAR2Vu
ZXJhdGVFdmVudExpc3RlbmVySW1wbCwgPDxFTkQpOwotICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBz
dGF0ZS0+YXJndW1lbnQoMSk7Ci0gICAgaWYgKFVOTElLRUxZKCFsaXN0ZW5lci5pc09iamVjdCgp
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBp
bXBsLiR7ZnVuY3Rpb25OYW1lfUV2ZW50TGlzdGVuZXIoc3RhdGUtPmFyZ3VtZW50KDApLnRvU3Ry
aW5nKHN0YXRlKS0+dG9BdG9taWNTdHJpbmcoc3RhdGUpLCBjcmVhdGVKU0V2ZW50TGlzdGVuZXJG
b3Ikc3VmZml4KCpzdGF0ZSwgKmFzT2JqZWN0KGxpc3RlbmVyKSwgKmNhc3RlZFRoaXMpJHBhc3NS
ZWZQdHJIYW5kbGluZywgc3RhdGUtPmFyZ3VtZW50KDIpLnRvQm9vbGVhbihzdGF0ZSkpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci1FTkQKLSAgICByZXR1cm4g
QEdlbmVyYXRlRXZlbnRMaXN0ZW5lckltcGw7Ci19Ci0KIHN1YiBHZXRQYXJlbnRDbGFzc05hbWUK
IHsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CkBAIC0zMjE5LDMwICszMTk5LDI0IEBAIEVO
RAogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAjIEZvciBjb21wYXRpYmlsaXR5IHdpdGgg
bGVnYWN5IGNvbnRlbnQsIHRoZSBFdmVudExpc3RlbmVyIGNhbGxzIGFyZSBnZW5lcmF0ZWQgd2l0
aG91dCBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2suCi0gICAgICAgICAgICAgICAgICAgIGlm
ICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSBlcSAiYWRkRXZlbnRMaXN0ZW5lciIpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUV2ZW50TGlz
dGVuZXJDYWxsKCJhZGQiKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5uYW1lIGVxICJyZW1vdmVFdmVudExpc3RlbmVyIikgewotICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRlRXZlbnRMaXN0ZW5lckNh
bGwoInJlbW92ZSIpKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjayhcQGltcGxDb250ZW50LCAk
ZnVuY3Rpb24sICRpbnRlcmZhY2UpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHJh
aXNlc0V4Y2VwdGlvbldpdGhNZXNzYWdlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlIGVjO1xuIik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkcmFpc2VzRXhjZXB0aW9uKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKFxAaW1wbENvbnRlbnQsICRm
dW5jdGlvbiwgJGludGVyZmFjZSk7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZnVu
Y3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrU2VjdXJpdHlGb3JO
b2RlIn0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9Ob2RlKHN0YXRlLCBpbXBsLiIgLiAkZnVuY3Rp
b24tPnNpZ25hdHVyZS0+bmFtZSAuICIoIiAuICgkcmFpc2VzRXhjZXB0aW9uID8gImVjIiA6ICIi
KSAuIikpKVxuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpO1xuIik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNET01CaW5kaW5nLmgifSA9
IDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICgk
cmFpc2VzRXhjZXB0aW9uV2l0aE1lc3NhZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSBlYztcbiIpOwor
ICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkcmFpc2VzRXhjZXB0aW9uKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDtcbiIpOworICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG15ICRudW1QYXJhbWV0ZXJzID0gQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OwotICAgICAg
ICAgICAgICAgICAgICAgICAgbXkgKCRmdW5jdGlvblN0cmluZywgJGR1bW15KSA9IEdlbmVyYXRl
UGFyYW1ldGVyc0NoZWNrKFxAaW1wbENvbnRlbnQsICRmdW5jdGlvbiwgJGludGVyZmFjZSwgJG51
bVBhcmFtZXRlcnMsICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSwgJHN2Z1Byb3BlcnR5VHlw
ZSwgJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlLCAkc3ZnTGlzdFByb3BlcnR5VHlwZSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25D
YWxsKCRmdW5jdGlvbiwgJGZ1bmN0aW9uU3RyaW5nLCAiICAgICIsICRzdmdQcm9wZXJ0eVR5cGUs
ICRpbnRlcmZhY2UpOworICAgICAgICAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5Rm9yTm9kZSJ9KSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIXNob3VsZEFs
bG93QWNjZXNzVG9Ob2RlKHN0YXRlLCBpbXBsLiIgLiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFt
ZSAuICIoIiAuICgkcmFpc2VzRXhjZXB0aW9uID8gImVjIiA6ICIiKSAuIikpKVxuIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bGwoKSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICRp
bXBsSW5jbHVkZXN7IkpTRE9NQmluZGluZy5oIn0gPSAxOwogICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgbXkgJG51bVBhcmFtZXRlcnMgPSBAeyRmdW5jdGlvbi0+
cGFyYW1ldGVyc307CisgICAgICAgICAgICAgICAgICAgIG15ICgkZnVuY3Rpb25TdHJpbmcsICRk
dW1teSkgPSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayhcQGltcGxDb250ZW50LCAkZnVuY3Rpb24s
ICRpbnRlcmZhY2UsICRudW1QYXJhbWV0ZXJzLCAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUs
ICRzdmdQcm9wZXJ0eVR5cGUsICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSwgJHN2Z0xp
c3RQcm9wZXJ0eVR5cGUpOworICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uRnVuY3Rpb25DYWxsKCRmdW5jdGlvbiwgJGZ1bmN0aW9uU3RyaW5nLCAiICAgICIsICRzdmdQ
cm9wZXJ0eVR5cGUsICRpbnRlcmZhY2UpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KIApAQCAtNDQ1Myw2ICs0NDI3LDkgQEAgc3ViIEpTVmFsdWVUb05hdGl2ZQogCiAgICAgQWRk
VG9JbXBsSW5jbHVkZXMoIkpTJHR5cGUuaCIsICRjb25kaXRpb25hbCk7CiAKKyAgICAjIEZJWE1F
OiBFdmVudExpc3RlbmVyIHNob3VsZCBiZSBhIGNhbGxiYWNrIGludGVyZmFjZS4KKyAgICByZXR1
cm4gIkpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKCR2YWx1ZSwgKmNhc3RlZFRoaXMsIGZhbHNlLCBj
dXJyZW50V29ybGQoc3RhdGUpKSIgaWYgJHR5cGUgZXEgIkV2ZW50TGlzdGVuZXIiOworCiAgICAg
bXkgJGV4dGVuZGVkQXR0cmlidXRlcyA9ICRjb2RlR2VuZXJhdG9yLT5nZXRJbnRlcmZhY2VFeHRl
bmRlZEF0dHJpYnV0ZXNGcm9tTmFtZSgkdHlwZSk7CiAgICAgcmV0dXJuICgiSlMke3R5cGV9Ojp0
b1dyYXBwZWQoKnN0YXRlLCAkdmFsdWUpIiwgMSkgaWYgJGV4dGVuZGVkQXR0cmlidXRlcy0+eyJK
U0N1c3RvbVRvTmF0aXZlT2JqZWN0In07CiAgICAgcmV0dXJuICgiSlMke3R5cGV9Ojp0b1dyYXBw
ZWQoJHZhbHVlKSIsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlz
dGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmgKaW5kZXggYmI0Zjlm
MDJkZWFkNWVkMzEzY2U3NjQwNmE2ZDE5ZWQ4Yzg2ZjZkMS4uMjI0MzUyOTU1OWQ4MzAzMzc1NGZi
MGU3MmJkZGM2NGM4Yzk1M2E3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
TGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5oCkBAIC00
OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgdmlydHVhbCB+RXZlbnRMaXN0ZW5l
cigpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXIm
KSA9IDA7CisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIEV2ZW50KikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCB3YXNDcmVhdGVkRnJvbU1h
cmt1cCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExp
c3RlbmVyTWFwLmNwcAppbmRleCBmMTk3YzIwNjAxMWM4YmFhNDhkMzA4MWRkZmJjMjAxYTA1ZTM4
OTA4Li5iMDRlMTIxM2E1NWNiNjVjMmYyZTUyMzg5ZWU0NjRkN2Y4NDVlZWQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCkBAIC05NSw5ICs5NSw5IEBAIFZlY3RvcjxB
dG9taWNTdHJpbmc+IEV2ZW50TGlzdGVuZXJNYXA6OmV2ZW50VHlwZXMoKSBjb25zdAogICAgIHJl
dHVybiB0eXBlczsKIH0KIAotc3RhdGljIGJvb2wgYWRkTGlzdGVuZXJUb1ZlY3RvcihFdmVudExp
c3RlbmVyVmVjdG9yKiB2ZWN0b3IsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIs
IGJvb2wgdXNlQ2FwdHVyZSkKK3N0YXRpYyBib29sIGFkZExpc3RlbmVyVG9WZWN0b3IoRXZlbnRM
aXN0ZW5lclZlY3RvciogdmVjdG9yLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9v
bCB1c2VDYXB0dXJlKQogewotICAgIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyIHJlZ2lzdGVyZWRM
aXN0ZW5lcihsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CisgICAgUmVnaXN0ZXJlZEV2ZW50TGlzdGVu
ZXIgcmVnaXN0ZXJlZExpc3RlbmVyKFdURk1vdmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKIAog
ICAgIGlmICh2ZWN0b3ItPmZpbmQocmVnaXN0ZXJlZExpc3RlbmVyKSAhPSBub3RGb3VuZCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOyAvLyBEdXBsaWNhdGUgbGlzdGVuZXIuCkBAIC0xMDYsMjAgKzEw
NiwyMCBAQCBzdGF0aWMgYm9vbCBhZGRMaXN0ZW5lclRvVmVjdG9yKEV2ZW50TGlzdGVuZXJWZWN0
b3IqIHZlY3RvciwgUGFzc1JlZlB0cjxFdmVudExpcwogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIEV2ZW50TGlzdGVuZXJNYXA6OmFkZChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
UGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9v
bCBFdmVudExpc3RlbmVyTWFwOjphZGQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJl
ZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgYXNz
ZXJ0Tm9BY3RpdmVJdGVyYXRvcnMoKTsKIAogICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2VudHJp
ZXMpIHsKICAgICAgICAgaWYgKGVudHJ5LmZpcnN0ID09IGV2ZW50VHlwZSkKLSAgICAgICAgICAg
IHJldHVybiBhZGRMaXN0ZW5lclRvVmVjdG9yKGVudHJ5LnNlY29uZC5nZXQoKSwgbGlzdGVuZXIs
IHVzZUNhcHR1cmUpOworICAgICAgICAgICAgcmV0dXJuIGFkZExpc3RlbmVyVG9WZWN0b3IoZW50
cnkuc2Vjb25kLmdldCgpLCBXVEZNb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiAgICAgfQog
CiAgICAgbV9lbnRyaWVzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihldmVudFR5cGUsIHN0ZDo6bWFr
ZV91bmlxdWU8RXZlbnRMaXN0ZW5lclZlY3Rvcj4oKSkpOwotICAgIHJldHVybiBhZGRMaXN0ZW5l
clRvVmVjdG9yKG1fZW50cmllcy5sYXN0KCkuc2Vjb25kLmdldCgpLCBsaXN0ZW5lciwgdXNlQ2Fw
dHVyZSk7CisgICAgcmV0dXJuIGFkZExpc3RlbmVyVG9WZWN0b3IobV9lbnRyaWVzLmxhc3QoKS5z
ZWNvbmQuZ2V0KCksIFdURk1vdmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKIH0KIAotc3RhdGlj
IGJvb2wgcmVtb3ZlTGlzdGVuZXJGcm9tVmVjdG9yKEV2ZW50TGlzdGVuZXJWZWN0b3IqIGxpc3Rl
bmVyVmVjdG9yLCBFdmVudExpc3RlbmVyKiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlLCBzaXpl
X3QmIGluZGV4T2ZSZW1vdmVkTGlzdGVuZXIpCitzdGF0aWMgYm9vbCByZW1vdmVMaXN0ZW5lckZy
b21WZWN0b3IoRXZlbnRMaXN0ZW5lclZlY3RvciogbGlzdGVuZXJWZWN0b3IsIEV2ZW50TGlzdGVu
ZXImIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUsIHNpemVfdCYgaW5kZXhPZlJlbW92ZWRMaXN0
ZW5lcikKIHsKICAgICBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciByZWdpc3RlcmVkTGlzdGVuZXIo
bGlzdGVuZXIsIHVzZUNhcHR1cmUpOwogICAgIGluZGV4T2ZSZW1vdmVkTGlzdGVuZXIgPSBsaXN0
ZW5lclZlY3Rvci0+ZmluZChyZWdpc3RlcmVkTGlzdGVuZXIpOwpAQCAtMTI5LDcgKzEyOSw3IEBA
IHN0YXRpYyBib29sIHJlbW92ZUxpc3RlbmVyRnJvbVZlY3RvcihFdmVudExpc3RlbmVyVmVjdG9y
KiBsaXN0ZW5lclZlY3RvciwgRXZlbnRMCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRXZl
bnRMaXN0ZW5lck1hcDo6cmVtb3ZlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVu
dExpc3RlbmVyKiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlLCBzaXplX3QmIGluZGV4T2ZSZW1v
dmVkTGlzdGVuZXIpCitib29sIEV2ZW50TGlzdGVuZXJNYXA6OnJlbW92ZShjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVy
ZSwgc2l6ZV90JiBpbmRleE9mUmVtb3ZlZExpc3RlbmVyKQogewogICAgIGFzc2VydE5vQWN0aXZl
SXRlcmF0b3JzKCk7CiAKQEAgLTE4NSw3ICsxODUsNyBAQCBzdGF0aWMgdm9pZCBjb3B5TGlzdGVu
ZXJzTm90Q3JlYXRlZEZyb21NYXJrdXBUb1RhcmdldChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VAogICAgICAgICAvLyBFdmVudCBsaXN0ZW5lcnMgY3JlYXRlZCBmcm9tIG1hcmt1cCBoYXZlIGFs
cmVhZHkgYmVlbiB0cmFuc2ZlcmVkIHRvIHRoZSBzaGFkb3cgdHJlZSBkdXJpbmcgY2xvbmluZy4K
ICAgICAgICAgaWYgKGxpc3RlbmVyLmxpc3RlbmVyLT53YXNDcmVhdGVkRnJvbU1hcmt1cCgpKQog
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHRhcmdldC0+YWRkRXZlbnRMaXN0ZW5lcihl
dmVudFR5cGUsIGxpc3RlbmVyLmxpc3RlbmVyLmNvcHlSZWYoKSwgbGlzdGVuZXIudXNlQ2FwdHVy
ZSk7CisgICAgICAgIHRhcmdldC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsICpsaXN0ZW5l
ci5saXN0ZW5lciwgbGlzdGVuZXIudXNlQ2FwdHVyZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50TGlzdGVuZXJNYXAuaAppbmRleCA4OWZmNjY2OGQ3MmZmOTAxZDY4N2QzYjc3ZmIz
NDFiM2M2YjgxN2YwLi4xZWZlNmFiZjhjZWVkMmQ5NjNhYzc2MzE5MWMwYTJhOGZmOWI2MzMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmgKQEAgLTU0LDggKzU0LDggQEAgcHVi
bGljOgogICAgIGJvb2wgY29udGFpbnNDYXB0dXJpbmcoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUpIGNvbnN0OwogCiAgICAgdm9pZCBjbGVhcigpOwotICAgIGJvb2wgYWRkKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVz
ZUNhcHR1cmUpOwotICAgIGJvb2wgcmVtb3ZlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlLCBzaXplX3QmIGluZGV4T2ZSZW1vdmVk
TGlzdGVuZXIpOworICAgIGJvb2wgYWRkKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBS
ZWY8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKTsKKyAgICBib29sIHJlbW92ZShj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYsIGJvb2wgdXNlQ2Fw
dHVyZSwgc2l6ZV90JiBpbmRleE9mUmVtb3ZlZExpc3RlbmVyKTsKICAgICBFdmVudExpc3RlbmVy
VmVjdG9yKiBmaW5kKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKTsKICAgICBWZWN0b3I8
QXRvbWljU3RyaW5nPiBldmVudFR5cGVzKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJn
ZXQuY3BwCmluZGV4IGVjMjEwOTg2N2FjMzBkMGMzMWJlNjkyNjE2MzFjMzI1MTZmZWEzY2UuLmQy
NDgzODU5M2QxN2Y2YWI1NmQ2ZDkwOTk1ODU5MjkwNTZiMGUwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50VGFyZ2V0LmNwcApAQCAtNzUsMTIgKzc1LDI4IEBAIGJvb2wgRXZlbnRUYXJnZXQ6OmlzTWVz
c2FnZVBvcnQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBFdmVudFRhcmdl
dDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRy
PEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgRXZlbnRU
YXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJl
ZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgcmV0
dXJuIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpLmV2ZW50TGlzdGVuZXJNYXAuYWRkKGV2ZW50VHlw
ZSwgV1RGTW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOwogfQogCi1ib29sIEV2ZW50VGFyZ2V0
OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVu
dExpc3RlbmVyKiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQordm9pZCBFdmVudFRhcmdldDo6
YWRkRXZlbnRMaXN0ZW5lckZvckJpbmRpbmdzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorewor
ICAgIC8vIEZJWE1FOiBsaXN0ZW5lciBpcyBub3Qgc3VwcG9zZWQgdG8gYmUgbnVsbGFibGUuCisg
ICAgaWYgKCFsaXN0ZW5lcikKKyAgICAgICAgcmV0dXJuOworICAgIGFkZEV2ZW50TGlzdGVuZXIo
ZXZlbnRUeXBlLCBsaXN0ZW5lci5yZWxlYXNlTm9uTnVsbCgpLCB1c2VDYXB0dXJlKTsKK30KKwor
dm9pZCBFdmVudFRhcmdldDo6cmVtb3ZlRXZlbnRMaXN0ZW5lckZvckJpbmRpbmdzKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwg
Ym9vbCB1c2VDYXB0dXJlKQoreworICAgIC8vIEZJWE1FOiBsaXN0ZW5lciBpcyBub3Qgc3VwcG9z
ZWQgdG8gYmUgbnVsbGFibGUuCisgICAgaWYgKCFsaXN0ZW5lcikKKyAgICAgICAgcmV0dXJuOwor
ICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCAqbGlzdGVuZXIsIHVzZUNhcHR1cmUp
OworfQorCitib29sIEV2ZW50VGFyZ2V0OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0
dXJlKQogewogICAgIEV2ZW50VGFyZ2V0RGF0YSogZCA9IGV2ZW50VGFyZ2V0RGF0YSgpOwogICAg
IGlmICghZCkKQEAgLTExMCwxMiArMTI2LDEyIEBAIGJvb2wgRXZlbnRUYXJnZXQ6OnJlbW92ZUV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRXZlbnRUYXJnZXQ6OnNldEF0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4gbGlzdGVuZXIpCitib29sIEV2ZW50VGFyZ2V0OjpzZXRBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5l
cj4mJiBsaXN0ZW5lcikKIHsKICAgICBjbGVhckF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRU
eXBlKTsKICAgICBpZiAoIWxpc3RlbmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0
dXJuIGFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgZmFsc2UpOworICAgIHJl
dHVybiBhZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIucmVsZWFzZU5vbk51bGwo
KSwgZmFsc2UpOwogfQogCiBFdmVudExpc3RlbmVyKiBFdmVudFRhcmdldDo6Z2V0QXR0cmlidXRl
RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkKQEAgLTEzMiw3ICsx
NDgsNyBAQCBib29sIEV2ZW50VGFyZ2V0OjpjbGVhckF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpCiAgICAgRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIg
PSBnZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSk7CiAgICAgaWYgKCFsaXN0ZW5l
cikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiByZW1vdmVFdmVudExpc3RlbmVy
KGV2ZW50VHlwZSwgbGlzdGVuZXIsIGZhbHNlKTsKKyAgICByZXR1cm4gcmVtb3ZlRXZlbnRMaXN0
ZW5lcihldmVudFR5cGUsICpsaXN0ZW5lciwgZmFsc2UpOwogfQogCiBib29sIEV2ZW50VGFyZ2V0
OjpkaXNwYXRjaEV2ZW50Rm9yQmluZGluZ3MoRXZlbnQqIGV2ZW50LCBFeGNlcHRpb25Db2RlJiBl
YykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKaW5kZXggZjliMGYyMTE3NGY1NDE4ZDUxZjdkNTQz
ODFiMDFjODc4MjEyZWFhZi4uMWIxZGVkMTlhNWQ5Y2E1NjY0ZTUwYTk5OWQ2YzNlZmI5MmE3ZWU5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKQEAgLTEyMSwxNSArMTIxLDE4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIERPTVdpbmRvdyogdG9ET01XaW5kb3coKTsKICAgICB2aXJ0dWFsIGJv
b2wgaXNNZXNzYWdlUG9ydCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVy
PiYmLCBib29sIHVzZUNhcHR1cmUpOwotICAgIHZpcnR1YWwgYm9vbCByZW1vdmVFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1
c2VDYXB0dXJlKTsKKyAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXJGb3JCaW5kaW5ncyhjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNl
Q2FwdHVyZSk7CisgICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyRm9yQmluZGluZ3MoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVz
ZUNhcHR1cmUpOworICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJl
KTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYsIGJvb2wgdXNlQ2FwdHVyZSk7CisKICAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKICAgICB2aXJ0dWFsIGJvb2wg
ZGlzcGF0Y2hFdmVudChFdmVudCYpOwogICAgIGJvb2wgZGlzcGF0Y2hFdmVudEZvckJpbmRpbmdz
KEV2ZW50KiwgRXhjZXB0aW9uQ29kZSYpOyAvLyBET00gQVBJCiAgICAgdmlydHVhbCB2b2lkIHVu
Y2F1Z2h0RXhjZXB0aW9uSW5FdmVudEhhbmRsZXIoKTsKIAogICAgIC8vIFVzZWQgZm9yIGxlZ2Fj
eSAib25FdmVudCIgYXR0cmlidXRlIEFQSXMuCi0gICAgYm9vbCBzZXRBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlz
dGVuZXI+KTsKKyAgICBib29sIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmKTsKICAgICBib29sIGNs
ZWFyQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7
CiAgICAgRXZlbnRMaXN0ZW5lciogZ2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaWRsCmluZGV4
IDU5M2U0YzA2ODZhMDhiOTBjMTNlYmViZjZjZWMyODJmNGI3NmU4NWQuLmM1OTQ1ODk2ZTAwYTY2
NzU2MzkwMzlhMDg2MWZmNjY1NzVlZGJlMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0Lmlk
bApAQCAtMjUsOCArMjUsMTAgQEAKICAgICBKU0N1c3RvbVRvTmF0aXZlT2JqZWN0LAogICAgIE9i
akNQcm90b2NvbCwKIF0gaW50ZXJmYWNlIEV2ZW50VGFyZ2V0IHsKLSAgICBbT2JqQ0xlZ2FjeVVu
bmFtZWRQYXJhbWV0ZXJzXSB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoRE9NU3RyaW5nIHR5cGUsIEV2
ZW50TGlzdGVuZXI/IGxpc3RlbmVyLCBvcHRpb25hbCBib29sZWFuIHVzZUNhcHR1cmUgPSBmYWxz
ZSk7Ci0gICAgW09iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVyc10gdm9pZCByZW1vdmVFdmVudExp
c3RlbmVyKERPTVN0cmluZyB0eXBlLCBFdmVudExpc3RlbmVyPyBsaXN0ZW5lciwgb3B0aW9uYWwg
Ym9vbGVhbiB1c2VDYXB0dXJlID0gZmFsc2UpOworICAgIC8vIEZJWE1FOiBUaGUgJ3R5cGUnIGFu
ZCAnbGlzdGVuZXInIHBhcmFtZXRlcnMgc2hvdWxkIG5vdCBiZSBvcHRpb25hbC4KKyAgICBbT2Jq
Q0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzLCBJbXBsZW1lbnRlZEFzPWFkZEV2ZW50TGlzdGVuZXJG
b3JCaW5kaW5nc10gdm9pZCBhZGRFdmVudExpc3RlbmVyKFtBdG9taWNTdHJpbmddIG9wdGlvbmFs
IERPTVN0cmluZyB0eXBlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIEV2ZW50TGlzdGVuZXI/IGxp
c3RlbmVyLCBvcHRpb25hbCBib29sZWFuIHVzZUNhcHR1cmUgPSBmYWxzZSk7CisgICAgW09iakNM
ZWdhY3lVbm5hbWVkUGFyYW1ldGVycywgSW1wbGVtZW50ZWRBcz1yZW1vdmVFdmVudExpc3RlbmVy
Rm9yQmluZGluZ3NdIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihbQXRvbWljU3RyaW5nXSBvcHRp
b25hbCBET01TdHJpbmcgdHlwZSA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCBFdmVudExpc3RlbmVy
PyBsaXN0ZW5lciwgb3B0aW9uYWwgYm9vbGVhbiB1c2VDYXB0dXJlID0gZmFsc2UpOworCiAgICAg
Ly8gRklYTUU6IGV2ZW50IHNob3VsZCBub3QgYmUgbnVsbGFibGUuCiAgICAgW0ltcGxlbWVudGVk
QXM9ZGlzcGF0Y2hFdmVudEZvckJpbmRpbmdzLCBSYWlzZXNFeGNlcHRpb25dIGJvb2xlYW4gZGlz
cGF0Y2hFdmVudChFdmVudD8gZXZlbnQpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NZXNzYWdlUG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3Bw
CmluZGV4IDVhODRhNDRhMjA4YWJlYmU0MTNiOTlmMTFlNmY1MDExOWRhNDAyYjguLjNkNzg0N2Nh
ZWRiMjkyMGUzYjI2NGI2NTJiYzU0Y2JjMzQ3OGEzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQ
b3J0LmNwcApAQCAtMjIxLDkgKzIyMSw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydEFy
cmF5PiBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhTY3JpcHRFeGVjdXRpb25Db250CiAgICAg
cmV0dXJuIHBvcnRBcnJheTsKIH0KIAotYm9vbCBNZXNzYWdlUG9ydDo6YWRkRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYg
bGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgTWVzc2FnZVBvcnQ6OmFkZEV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYm
IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7Ci0gICAgaWYgKGxpc3RlbmVyICYmIGxpc3Rl
bmVyLT5pc0F0dHJpYnV0ZSgpICYmIGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkubWVzc2FnZUV2
ZW50KQorICAgIGlmIChsaXN0ZW5lci0+aXNBdHRyaWJ1dGUoKSAmJiBldmVudFR5cGUgPT0gZXZl
bnROYW1lcygpLm1lc3NhZ2VFdmVudCkKICAgICAgICAgc3RhcnQoKTsKICAgICByZXR1cm4gRXZl
bnRUYXJnZXRXaXRoSW5saW5lRGF0YTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdURk1v
dmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NZXNzYWdlUG9ydC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKaW5k
ZXggYmFlMDFkNWI5NTFkZDc4MjM3YWZkZjg3MjMxNGY4MjRkMTU3YjE2ZS4uOWNhMTI0ZjRhMmVm
Yzk4MWRmNTU2M2JiYmI3NTA0NmY3OWNmY2RlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL01lc3NhZ2VQb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgK
QEAgLTkyLDcgKzkyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBBIHBvcnQg
Z2V0cyBuZXV0ZXJlZCB3aGVuIGl0IGlzIHRyYW5zZmVycmVkIHRvIGEgbmV3IG93bmVyIHZpYSBw
b3N0TWVzc2FnZSgpLgogICAgICAgICBib29sIGlzTmV1dGVyZWQoKSB7IHJldHVybiAhbV9lbnRh
bmdsZWRDaGFubmVsOyB9CiAKLSAgICAgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VD
YXB0dXJlKSBvdmVycmlkZTsKKyAgICAgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0
dXJlKSBvdmVycmlkZTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0IE1lc3NhZ2VQ
b3J0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA0YzQ3NTEw
NGI3MjI2MDJhMzkzODhiZTEyMzlhOGU0NjM3ZjViYjVkLi5kMGM1ZDRjNDJlYWMzZTM2YmZiZjgw
NTkzNzkxNmNlODcyYTNmNzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xOTYwLDcgKzE5NjAsNyBA
QCB2b2lkIE5vZGU6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkK
ICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCB0cnlBZGRFdmVudExpc3RlbmVyKE5vZGUq
IHRhcmdldE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorc3RhdGljIGlubGluZSBib29s
IHRyeUFkZEV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1
cmUpCiB7CiAgICAgaWYgKCF0YXJnZXROb2RlLT5FdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5l
cihldmVudFR5cGUsIGxpc3RlbmVyLmNvcHlSZWYoKSwgdXNlQ2FwdHVyZSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTE5OTYsMTIgKzE5OTYsMTIgQEAgc3RhdGljIGlubGluZSBib29sIHRy
eUFkZEV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBl
dmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBOb2RlOjphZGRFdmVudExpc3RlbmVyKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0
ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBOb2RlOjphZGRFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwg
Ym9vbCB1c2VDYXB0dXJlKQogewogICAgIHJldHVybiB0cnlBZGRFdmVudExpc3RlbmVyKHRoaXMs
IGV2ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOwogfQogCi1zdGF0aWMg
aW5saW5lIGJvb2wgdHJ5UmVtb3ZlRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJnZXROb2RlLCBjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIsIGJvb2wg
dXNlQ2FwdHVyZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCB0cnlSZW1vdmVFdmVudExpc3RlbmVyKE5v
ZGUqIHRhcmdldE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3Rl
bmVyJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIGlmICghdGFyZ2V0Tm9kZS0+
RXZlbnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNl
Q2FwdHVyZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIwMzcsNyArMjAzNyw3IEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCB0cnlSZW1vdmVFdmVudExpc3RlbmVyKE5vZGUqIHRhcmdldE5vZGUs
IGNvbnN0IEF0b21pY1N0cmluZyYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBOb2RlOjpy
ZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExp
c3RlbmVyKiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBOb2RlOjpyZW1vdmVFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBs
aXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIHJldHVybiB0cnlSZW1vdmVFdmVudExp
c3RlbmVyKHRoaXMsIGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmgKaW5kZXggNTU3ZGRjYzExNzMxOTRhOGYwZGQxOTRjYjM2YjE3NjcwZTA0ZTM0OS4uMjA4ZTI4
OGYxNzk3NzJkYzlmOTIwMDc1YzQyNjdhMmI0ZWRlNDU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC01MDYs
OCArNTA2LDggQEAgcHVibGljOgogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0
SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsOyAvLyBJbXBsZW1lbnRlZCBpbiBE
b2N1bWVudC5oCiAKLSAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92
ZXJyaWRlOwotICAgIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBS
ZWY8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKKyAgICBib29s
IHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50
TGlzdGVuZXImLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogCiAgICAgdXNpbmcgRXZlbnRU
YXJnZXQ6OmRpc3BhdGNoRXZlbnQ7CiAgICAgYm9vbCBkaXNwYXRjaEV2ZW50KEV2ZW50Jikgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmVnaXN0ZXJlZEV2ZW50TGlz
dGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oCmlu
ZGV4IDEyNDgzZmE2MTE4OWUyZWUzZjQ0ODI2NGE2NWY1OTNlMjRjMDg5ZGIuLjFjYzY5Y2EyZTI4
MWU1ZTY1OGIzOGJhODY1YWI3MzBiMWU3YjU3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9S
ZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oCkBAIC0zMSw4ICszMSw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgIGNsYXNzIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyIHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5l
cj4gbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKLSAgICAgICAgICAgIDogbGlzdGVuZXIobGlz
dGVuZXIpCisgICAgICAgIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyKFJlZjxFdmVudExpc3RlbmVy
PiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorICAgICAgICAgICAgOiBsaXN0ZW5lcihXVEZN
b3ZlKGxpc3RlbmVyKSkKICAgICAgICAgICAgICwgdXNlQ2FwdHVyZSh1c2VDYXB0dXJlKQogICAg
ICAgICB7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CmluZGV4IDg3ZTgwM2IzZmM2NzM3ZmI0ZGY4YWNjMGE1YmU2MjE4MWM3ZmI1YTUuLjM4YmU0NGIy
NzhhZDk0ZThkNGM0ZTE5YWY0MzhiYWZmMWQyNDA2M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNTIxNiw3ICs1MjE2LDcgQEAgYm9vbCBIVE1MTWVkaWFF
bGVtZW50OjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBldmVudCkKICAgICByZXR1cm4gSFRNTEVsZW1l
bnQ6OmRpc3BhdGNoRXZlbnQoZXZlbnQpOwogfQogCi1ib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmFk
ZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVu
dExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIEhUTUxNZWRpYUVs
ZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJl
ZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgaWYg
KGV2ZW50VHlwZSAhPSBldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxp
dHljaGFuZ2VkRXZlbnQpCiAgICAgICAgIHJldHVybiBOb2RlOjphZGRFdmVudExpc3RlbmVyKGV2
ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOwpAQCAtNTIzNiw3ICs1MjM2
LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQor
Ym9vbCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJl
KQogewogICAgIGlmIChldmVudFR5cGUgIT0gZXZlbnROYW1lcygpLndlYmtpdHBsYXliYWNrdGFy
Z2V0YXZhaWxhYmlsaXR5Y2hhbmdlZEV2ZW50KQogICAgICAgICByZXR1cm4gTm9kZTo6cmVtb3Zl
RXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggYjM4OTM5OGIzM2FkNjdhMjgyY2ExMjNj
OTUyODlmNTJhNGE1MGYzNi4uNjY3OThhY2NjNzE3NmY2ODQwZTEwNmE4NWFiZDRlNDE5ZGI5ZWRj
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTM0NCw4ICszNDQs
OCBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAg
IHZvaWQgd2Via2l0U2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKCk7Ci0gICAgYm9vbCBhZGRFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKLSAgICBib29sIHJlbW92ZUV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBi
b29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNl
Q2FwdHVyZSkgb3ZlcnJpZGU7CisgICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiwgYm9vbCB1c2VDYXB0dXJlKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgd2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2UoKSBv
dmVycmlkZTsKICAgICBib29sIGNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKSBjb25z
dCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IDJmMzVi
MjliMzliNjcyOGRlMGJhODU3NWVkNzU2ODg4M2U1NzdjZTYuLjdmZDJjN2M5ZTU3NmE5NWFiMTRm
OWNkN2JlOWJjN2EwODBlM2ZhZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNw
cApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYpIG92ZXJyaWRlOworICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBFdmVudExpc3RlbmVyJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBoYW5k
bGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqKSBvdmVycmlkZTsKIAogICAg
IEltYWdlRG9jdW1lbnQmIG1fZG9jdW1lbnQ7CkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBJbWFn
ZURvY3VtZW50OjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpCiAgICAgICAgIC8vIFNldCB0aGUg
dmlld3BvcnQgdG8gYmUgaW4gZGV2aWNlIHBpeGVscyAocmF0aGVyIHRoYW4gdGhlIGRlZmF1bHQg
b2YgOTgwKS4KICAgICAgICAgcHJvY2Vzc1ZpZXdwb3J0KEFTQ0lJTGl0ZXJhbCgid2lkdGg9ZGV2
aWNlLXdpZHRoIiksIFZpZXdwb3J0QXJndW1lbnRzOjpJbWFnZURvY3VtZW50KTsKICNlbHNlCi0g
ICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9IEltYWdlRXZlbnRMaXN0ZW5l
cjo6Y3JlYXRlKCp0aGlzKTsKKyAgICAgICAgYXV0byBsaXN0ZW5lciA9IEltYWdlRXZlbnRMaXN0
ZW5lcjo6Y3JlYXRlKCp0aGlzKTsKICAgICAgICAgaWYgKERPTVdpbmRvdyogd2luZG93ID0gdGhp
cy0+ZG9tV2luZG93KCkpCiAgICAgICAgICAgICB3aW5kb3ctPmFkZEV2ZW50TGlzdGVuZXIoInJl
c2l6ZSIsIGxpc3RlbmVyLmNvcHlSZWYoKSwgZmFsc2UpOwogICAgICAgICBpbWFnZUVsZW1lbnQt
PmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgV1RGTW92ZShsaXN0ZW5lciksIGZhbHNlKTsKQEAg
LTQwNyw3ICs0MDcsNyBAQCB2b2lkIEltYWdlRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50KiBldmVudCkKICAgICB9CiB9CiAKLWJvb2wgSW1h
Z2VFdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKQor
Ym9vbCBJbWFnZUV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYg
b3RoZXIpIGNvbnN0CiB7CiAgICAgLy8gQWxsIEltYWdlRXZlbnRMaXN0ZW5lciBvYmplY3RzIGNv
bXBhcmUgYXMgZXF1YWw7IE9LIHNpbmNlIHRoZXJlIGlzIG9ubHkgb25lIHBlciBkb2N1bWVudC4K
ICAgICByZXR1cm4gb3RoZXIudHlwZSgpID09IEltYWdlRXZlbnRMaXN0ZW5lclR5cGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcAppbmRl
eCBjZjdhYzRiY2ZmNzMyNGU5ZTAwMmE5YzcwNGYzMDIyZjkzMThmNjAyLi5kOTdkYTc4ZTU2MTEz
NzFhY2I0ZDI5ZGIwMGUwZWUwYmNjNzQ3ZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAKQEAgLTUwOSwxNSArNTA5LDE1IEBAIHZv
aWQgTWVkaWFDb250cm9sc0FwcGxlOjpzaG93Q2xvc2VkQ2FwdGlvblRyYWNrTGlzdCgpCiAgICAg
bV9wYW5lbC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHMs
IENTU1ZhbHVlTm9uZSk7CiAKICAgICBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciA9IGV2ZW50TGlz
dGVuZXIoKTsKLSAgICBtX2Nsb3NlZENhcHRpb25zQ29udGFpbmVyLT5hZGRFdmVudExpc3RlbmVy
KGV2ZW50TmFtZXMoKS53aGVlbEV2ZW50LCAmbGlzdGVuZXIsIHRydWUpOworICAgIG1fY2xvc2Vk
Q2FwdGlvbnNDb250YWluZXItPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLndoZWVsRXZl
bnQsIGxpc3RlbmVyLCB0cnVlKTsKIAogICAgIC8vIFRyYWNrIGNsaWNrIGV2ZW50cyBpbiB0aGUg
Y2FwdHVyZSBwaGFzZSBhdCB0d28gbGV2ZWxzLCBmaXJzdCBhdCB0aGUgZG9jdW1lbnQgbGV2ZWwK
ICAgICAvLyBzdWNoIHRoYXQgYSBjbGljayBvdXRzaWRlIG9mIHRoZSA8dmlkZW8+IG1heSBkaXNt
aXNzIHRoZSB0cmFjayBsaXN0LCBzZWNvbmQgYXQgdGhlCiAgICAgLy8gbWVkaWEgY29udHJvbHMg
bGV2ZWwgc3VjaCB0aGF0IGEgY2xpY2sgYW55d2hlcmUgb3V0c2lkZSBvZiB0aGUgdHJhY2sgbGlz
dCBoaWRlcyB0aGUKICAgICAvLyB0cmFjayBsaXN0LiBUaGVzZSB0d28gbGV2ZWxzIGFyZSBuZWNl
c3Nhcnkgc2luY2UgaXQgd291bGQgbm90IGJlIHBvc3NpYmxlIHRvIGdldCBhCiAgICAgLy8gcmVm
ZXJlbmNlIHRvIHRoZSB0cmFjayBsaXN0IHdoZW4gaGFuZGxpbmcgdGhlIGV2ZW50IG91dHNpZGUg
b2YgdGhlIHNoYWRvdyB0cmVlLgotICAgIGRvY3VtZW50KCkuYWRkRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkuY2xpY2tFdmVudCwgJmxpc3RlbmVyLCB0cnVlKTsKLSAgICBhZGRFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCAmbGlzdGVuZXIsIHRydWUpOworICAgIGRvY3Vt
ZW50KCkuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgbGlzdGVuZXIs
IHRydWUpOworICAgIGFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIGxp
c3RlbmVyLCB0cnVlKTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xzQXBwbGU6OmhpZGVDbG9zZWRD
YXB0aW9uVHJhY2tMaXN0KCkKQEAgLTUzMSw5ICs1MzEsOSBAQCB2b2lkIE1lZGlhQ29udHJvbHNB
cHBsZTo6aGlkZUNsb3NlZENhcHRpb25UcmFja0xpc3QoKQogICAgIG1fcGFuZWwtPnJlbW92ZUlu
bGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzKTsKIAogICAgIEV2ZW50
TGlzdGVuZXImIGxpc3RlbmVyID0gZXZlbnRMaXN0ZW5lcigpOwotICAgIG1fY2xvc2VkQ2FwdGlv
bnNDb250YWluZXItPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLndoZWVsRXZlbnQs
ICZsaXN0ZW5lciwgdHJ1ZSk7Ci0gICAgZG9jdW1lbnQoKS5yZW1vdmVFdmVudExpc3RlbmVyKGV2
ZW50TmFtZXMoKS5jbGlja0V2ZW50LCAmbGlzdGVuZXIsIHRydWUpOwotICAgIHJlbW92ZUV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsICZsaXN0ZW5lciwgdHJ1ZSk7CisgICAg
bV9jbG9zZWRDYXB0aW9uc0NvbnRhaW5lci0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVz
KCkud2hlZWxFdmVudCwgbGlzdGVuZXIsIHRydWUpOworICAgIGRvY3VtZW50KCkucmVtb3ZlRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgbGlzdGVuZXIsIHRydWUpOworICAg
IHJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIGxpc3RlbmVyLCB0
cnVlKTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xzQXBwbGU6OnNldEZ1bGxzY3JlZW5TbGlkZXJW
b2x1bWUoKQpAQCAtNTk1LDcgKzU5NSw3IEBAIHZvaWQgTWVkaWFDb250cm9sc0FwcGxlRXZlbnRM
aXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50CiAgICAg
fQogfQogCi1ib29sIE1lZGlhQ29udHJvbHNBcHBsZUV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0o
Y29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpCitib29sIE1lZGlhQ29udHJvbHNBcHBsZUV2
ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpIGNv
bnN0CiB7CiAgICAgaWYgKGNvbnN0IE1lZGlhQ29udHJvbHNBcHBsZUV2ZW50TGlzdGVuZXIqIG1l
ZGlhQ29udHJvbHNBcHBsZUV2ZW50TGlzdGVuZXIgPSBNZWRpYUNvbnRyb2xzQXBwbGVFdmVudExp
c3RlbmVyOjpjYXN0KCZsaXN0ZW5lcikpCiAgICAgICAgIHJldHVybiBtX21lZGlhQ29udHJvbHMg
PT0gbWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0ZW5lci0+bV9tZWRpYUNvbnRyb2xzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuaAppbmRleCA2
OThjYzM4OWQ5ZjJkNzIwMmJmMjQxZGNjMWJhZjczZjAzYmYwNDI5Li5mMjhkZDZiN2Y1MTQxMGIx
Y2RlZWQ0MmM4MzNlMGNmZjkzZDFjYzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICA6IDA7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlz
dGVuZXImIG90aGVyKSBvdmVycmlkZTsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRM
aXN0ZW5lciYgb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIE1lZGlhQ29u
dHJvbHNBcHBsZUV2ZW50TGlzdGVuZXIoTWVkaWFDb250cm9sc0FwcGxlKiBtZWRpYUNvbnRyb2xz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWRE
QkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJB
Z2VudC5jcHAKaW5kZXggNDQxNTQzMjE0NDhkMTE1NDVmMjExNDIyYzFkZmQ4MDM5ZjhlNjQ3MC4u
YWMwZWRkNDg2YWRmNGMyZGUwN2M4MmFhYWFjNmIzMTMxMDAyY2JlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC0x
MTIsNyArMTEyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+T3BlbkRhdGFiYXNlQ2FsbGJh
Y2soKSB7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhl
cikgb3ZlcnJpZGUKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3Ro
ZXIpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcyA9PSAmb3RoZXI7
CiAgICAgfQpAQCAtMzcxLDcgKzM3MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfk9wZW5D
dXJzb3JDYWxsYmFjaygpIHsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlz
dGVuZXImIG90aGVyKSBvdmVycmlkZQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExp
c3RlbmVyJiBvdGhlcikgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
ID09ICZvdGhlcjsKICAgICB9CkBAIC02NjAsNyArNjYwLDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB+Q2xlYXJPYmplY3RTdG9yZUxpc3RlbmVyKCkgeyB9CiAKLSAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3RoZXIpIG92ZXJyaWRlCisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMgPT0gJm90aGVyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcAppbmRleCBlNzgxYjdjYzRiOTFiYWJkZjMxZmQ3ODYyYjk4ODUxNzNiYWZiZTgwLi5iNzU0
MWVkMzg0MWM4NThiZjQwNzNiYjQ5YmYzYjljM2RiZWI5MTlmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCkBAIC0xNzI0LDcgKzE3MjQsNyBAQCBib29sIERPTVdpbmRvdzo6aXNTYW1lU2Vj
dXJpdHlPcmlnaW5Bc01haW5GcmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1i
b29sIERPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkK
K2Jvb2wgRE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQog
ewogICAgIGlmICghRXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEZN
b3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE4
MjcsNyArMTgyNyw3IEBAIHZvaWQgRE9NV2luZG93OjpyZXNldEFsbEdlb2xvY2F0aW9uUGVybWlz
c2lvbigpCiAjZW5kaWYKIH0KIAotYm9vbCBET01XaW5kb3c6OnJlbW92ZUV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBi
b29sIHVzZUNhcHR1cmUpCitib29sIERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wg
dXNlQ2FwdHVyZSkKIHsKICAgICBpZiAoIUV2ZW50VGFyZ2V0OjpyZW1vdmVFdmVudExpc3RlbmVy
KGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCA0YjI0Yjk5ODEzNzczMjc2MzhiNjRlNjg3ZDc1
ZmUyZmQ4ZDg3MmVlLi4wMTU4ZTE0MDY2Mjc0OGZjODk0ZjkyNTgxNGQ0NjI0ODFiZmFmNDFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKQEAgLTI3OSw4ICsyNzksOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgLy8gRXZlbnRzCiAgICAgICAgIC8vIEV2ZW50VGFyZ2V0IEFQSQot
ICAgICAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwot
ICAgICAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgICAg
ICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJl
ZjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgICAgICBi
b29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2
ZW50TGlzdGVuZXImLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIHJl
bW92ZUFsbEV2ZW50TGlzdGVuZXJzKCkgb3ZlcnJpZGU7CiAKICAgICAgICAgdXNpbmcgRXZlbnRU
YXJnZXQ6OmRpc3BhdGNoRXZlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQu
aAppbmRleCA5YjU3MzljYmE4MTY5YTA0ZmZhMTJlMTQ5MzI4YjdjMzQ1MzAwMmU5Li4wZGNhMDYz
Zjk4ZmU1Y2M4MzExMTY0OTM0ZTliYzg2YzExMTM5ZGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsTWVkaWFFbGVtZW50LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBoYW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgV2ViQ29yZTo6RXZlbnQqKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUZvckV2ZW50TmFtZShj
b25zdCBXVEY6OkF0b21pY1N0cmluZyYpOwotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVu
dExpc3RlbmVyJiByaHMpIGZpbmFsIHsgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6OkV2ZW50
TGlzdGVuZXIqPih0aGlzKSA9PSAmcmhzOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2
ZW50TGlzdGVuZXImIHJocykgY29uc3QgZmluYWwgeyByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6RXZlbnRMaXN0ZW5lcio+KHRoaXMpID09ICZyaHM7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcGxheSgpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGF1c2UoKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oCmluZGV4IDcxOWEyNTcwYzBm
ZGI4MjdkMGU2ZDNmZmExZTZiZTMzNGQ4MjNmZGEuLjY2NWJlMWVhODE5OGViMWNiNWNlZmE4N2E4
YzAxMDg3ZGQwMTgwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaApA
QCAtNTksOCArNTksNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBo
YW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViQ29yZTo6RXZl
bnQqKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZUZvckV2ZW50TmFtZShjb25zdCBXVEY6OkF0
b21pY1N0cmluZyYpOwotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBy
aHMpIG92ZXJyaWRlCi0gICAgICAgIHtyZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RXZlbnRM
aXN0ZW5lcio+KHRoaXMpID09ICZyaHM7fQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVu
dExpc3RlbmVyJiByaHMpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNv
cmU6OkV2ZW50TGlzdGVuZXIqPih0aGlzKSA9PSAmcmhzOyB9CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVv
RnVsbHNjcmVlbk1vZGUpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Vmlk
ZW9MYXllckZyYW1lKEZsb2F0UmVjdCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5j
cHAKaW5kZXggZmM4MzFlNjc2NThiYTA5Yjg5YTgzYjFlNzU4OWEwMDFjYmI1OTU1MS4uYWIyNDVk
NTdmNTg5YmRiZDA1NDE0YTc4ODQyOTdiODIyZDBjZDY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmNwcApAQCAtNTI4LDcgKzUyOCw3IEBAIGJvb2wgU1ZHRWxlbWVudDo6aGF2ZUxvYWRlZFJl
cXVpcmVkUmVzb3VyY2VzKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBTVkdFbGVtZW50
OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBTVkdFbGVt
ZW50OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8
RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogeyAgIAogICAgIC8v
IEFkZCBldmVudCBsaXN0ZW5lciB0byByZWd1bGFyIERPTSBlbGVtZW50CiAgICAgaWYgKCFOb2Rl
OjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIuY29weVJlZigpLCB1c2VDYXB0
dXJlKSkKQEAgLTU0OCw3ICs1NDgsNyBAQCBib29sIFNWR0VsZW1lbnQ6OmFkZEV2ZW50TGlzdGVu
ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpcwogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFNWR0VsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29s
IHVzZUNhcHR1cmUpCitib29sIFNWR0VsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBib29sIHVz
ZUNhcHR1cmUpCiB7CiAgICAgaWYgKGNvbnRhaW5pbmdTaGFkb3dSb290KCkpCiAgICAgICAgIHJl
dHVybiBOb2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNh
cHR1cmUpOwpAQCAtNTU4LDcgKzU1OCw3IEBAIGJvb2wgU1ZHRWxlbWVudDo6cmVtb3ZlRXZlbnRM
aXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lCiAgICAg
Ly8gZXZlbnQgbGlzdGVuZXIgaW4gYSBjYWNoZS4gSWYgd2Ugd2FudCB0byBiZSBhYmxlIHRvIGNh
bGwgcmVtb3ZlRXZlbnRMaXN0ZW5lcigpIG11bHRpcGxlCiAgICAgLy8gdGltZXMgb24gZGlmZmVy
ZW50IG5vZGVzLCB3ZSBoYXZlIHRvIGRlbGF5IGl0cyBpbW1lZGlhdGUgZGVzdHJ1Y3Rpb24sIHdo
aWNoIHdvdWxkIGhhcHBlbgogICAgIC8vIGFmdGVyIHRoZSBmaXJzdCBjYWxsIGJlbG93LgotICAg
IFJlZlB0cjxFdmVudExpc3RlbmVyPiBwcm90ZWN0b3IobGlzdGVuZXIpOworICAgIFJlZjxFdmVu
dExpc3RlbmVyPiBwcm90ZWN0b3IobGlzdGVuZXIpOwogCiAgICAgLy8gUmVtb3ZlIGV2ZW50IGxp
c3RlbmVyIGZyb20gcmVndWxhciBET00gZWxlbWVudAogICAgIGlmICghTm9kZTo6cmVtb3ZlRXZl
bnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKSkKQEAgLTU3Myw3ICs1
NzMsNyBAQCBib29sIFNWR0VsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZQogICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgLy8gVGhpcyBjYXNlIGNhbiBvbmx5IGJlIGhpdCBmb3IgZXZlbnQgbGlzdGVuZXJz
IGNyZWF0ZWQgZnJvbSBtYXJrdXAKLSAgICAgICAgQVNTRVJUKGxpc3RlbmVyLT53YXNDcmVhdGVk
RnJvbU1hcmt1cCgpKTsKKyAgICAgICAgQVNTRVJUKGxpc3RlbmVyLndhc0NyZWF0ZWRGcm9tTWFy
a3VwKCkpOwogCiAgICAgICAgIC8vIElmIHRoZSBldmVudCBsaXN0ZW5lciAnbGlzdGVuZXInIGhh
cyBiZWVuIGNyZWF0ZWQgZnJvbSBtYXJrdXAgYW5kIGhhcyBiZWVuIGZpcmVkIGJlZm9yZQogICAg
ICAgICAvLyB0aGVuIEpTTGF6eUV2ZW50TGlzdGVuZXI6OnBhcnNlQ29kZSgpIGhhcyBiZWVuIGNh
bGxlZCBhbmQgbV9qc0Z1bmN0aW9uIG9mIHRoYXQgbGlzdGVuZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5oCmluZGV4IDM4MTY4MTAyYWY1ZWU3NWFmNzg3Y2IwZmUxNWE4ZTdhMmJhNzFjZmIuLjk2ZDZj
OTA0NjMxYWIwOTQ4OGZiNWI2YWFiYWVlMjBmYzYyYzM3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnQuaApAQCAtMTMzLDggKzEzMyw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBoYXZl
TG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKTsKIAotICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJv
b2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0
dXJlKSBvdmVycmlkZTsKKyAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92
ZXJyaWRlOworICAgIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBoYXNGb2N1c0V2ZW50TGlzdGVuZXJzKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoQ1NT
X1JFR0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAppbmRleCBjN2Q4NDZl
YTIzMWFlMTUwZGE4MTJkZmE3ODU5NzM4MTFlZWMzNmFhLi42ZGRiYjc2MjdkYTRmNzljNDFlZmNl
NDY2YWE2NTY4ZWQ3ZDNmY2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJl
ZkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAK
QEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBTVkdUUmVmVGFyZ2V0RXZl
bnRMaXN0ZW5lcihTVkdUUmVmRWxlbWVudCYgdHJlZkVsZW1lbnQpOwogCiAgICAgdm9pZCBoYW5k
bGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqKSBvdmVycmlkZTsKLSAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYpIG92ZXJyaWRlOworICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBT
VkdUUmVmRWxlbWVudCYgbV90cmVmRWxlbWVudDsKICAgICBSZWZQdHI8RWxlbWVudD4gbV90YXJn
ZXQ7CkBAIC05Miw4ICs5Miw4IEBAIHZvaWQgU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI6OmF0
dGFjaChSZWZQdHI8RWxlbWVudD4mJiB0YXJnZXQpCiAgICAgQVNTRVJUKHRhcmdldC5nZXQoKSk7
CiAgICAgQVNTRVJUKHRhcmdldC0+aW5Eb2N1bWVudCgpKTsKIAotICAgIHRhcmdldC0+YWRkRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkuRE9NU3VidHJlZU1vZGlmaWVkRXZlbnQsIHRoaXMsIGZh
bHNlKTsKLSAgICB0YXJnZXQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLkRPTU5vZGVS
ZW1vdmVkRnJvbURvY3VtZW50RXZlbnQsIHRoaXMsIGZhbHNlKTsKKyAgICB0YXJnZXQtPmFkZEV2
ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLkRPTVN1YnRyZWVNb2RpZmllZEV2ZW50LCAqdGhpcywg
ZmFsc2UpOworICAgIHRhcmdldC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuRE9NTm9k
ZVJlbW92ZWRGcm9tRG9jdW1lbnRFdmVudCwgKnRoaXMsIGZhbHNlKTsKICAgICBtX3RhcmdldCA9
IFdURk1vdmUodGFyZ2V0KTsKIH0KIApAQCAtMTAyLDEyICsxMDIsMTIgQEAgdm9pZCBTVkdUUmVm
VGFyZ2V0RXZlbnRMaXN0ZW5lcjo6ZGV0YWNoKCkKICAgICBpZiAoIWlzQXR0YWNoZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV90YXJnZXQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLkRPTVN1YnRyZWVNb2RpZmllZEV2ZW50LCB0aGlzLCBmYWxzZSk7Ci0gICAgbV90YXJn
ZXQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLkRPTU5vZGVSZW1vdmVkRnJvbURv
Y3VtZW50RXZlbnQsIHRoaXMsIGZhbHNlKTsKKyAgICBtX3RhcmdldC0+cmVtb3ZlRXZlbnRMaXN0
ZW5lcihldmVudE5hbWVzKCkuRE9NU3VidHJlZU1vZGlmaWVkRXZlbnQsICp0aGlzLCBmYWxzZSk7
CisgICAgbV90YXJnZXQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLkRPTU5vZGVS
ZW1vdmVkRnJvbURvY3VtZW50RXZlbnQsICp0aGlzLCBmYWxzZSk7CiAgICAgbV90YXJnZXQgPSBu
dWxscHRyOwogfQogCi1ib29sIFNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjpvcGVyYXRvcj09
KGNvbnN0IEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyKQorYm9vbCBTVkdUUmVmVGFyZ2V0RXZlbnRM
aXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikgY29uc3QK
IHsKICAgICBpZiAoY29uc3QgU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXIqIHRhcmdldExpc3Rl
bmVyID0gU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI6OmNhc3QoJmxpc3RlbmVyKSkKICAgICAg
ICAgcmV0dXJuICZtX3RyZWZFbGVtZW50ID09ICZ0YXJnZXRMaXN0ZW5lci0+bV90cmVmRWxlbWVu
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAK
aW5kZXggN2IyOTg3MGYzZTJkNGNmYzUwYjBkMTI0Y2IxMjM5ZjRjM2U3NTRlNi4uMGQyNGE2MTc0
ZmJmMWE5NGJmMmFkN2Q5OTBkZTMwNDI1ODg4MjBjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgOiBudWxscHRyOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgb3ZlcnJpZGU7CisgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKSBjb25zdCBvdmVycmlkZTsKICAgICAKICAgICB2
b2lkIGRpc2Nvbm5lY3RBbmltYXRpb24oKQogICAgIHsKQEAgLTk3LDcgKzk3LDcgQEAgcHJpdmF0
ZToKICAgICBTVkdTTUlMRWxlbWVudDo6Q29uZGl0aW9uKiBtX2NvbmRpdGlvbjsKIH07CiAKLWJv
b2wgQ29uZGl0aW9uRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVy
JiBsaXN0ZW5lcikKK2Jvb2wgQ29uZGl0aW9uRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25z
dCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikgY29uc3QKIHsKICAgICBpZiAoY29uc3QgQ29uZGl0
aW9uRXZlbnRMaXN0ZW5lciogY29uZGl0aW9uRXZlbnRMaXN0ZW5lciA9IENvbmRpdGlvbkV2ZW50
TGlzdGVuZXI6OmNhc3QoJmxpc3RlbmVyKSkKICAgICAgICAgcmV0dXJuIG1fYW5pbWF0aW9uID09
IGNvbmRpdGlvbkV2ZW50TGlzdGVuZXItPm1fYW5pbWF0aW9uICYmIG1fY29uZGl0aW9uID09IGNv
bmRpdGlvbkV2ZW50TGlzdGVuZXItPm1fY29uZGl0aW9uOwpAQCAtNTQ1LDcgKzU0NSw3IEBAIHZv
aWQgU1ZHU01JTEVsZW1lbnQ6OmNvbm5lY3RDb25kaXRpb25zKCkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIEFTU0VSVCghY29uZGl0aW9uLm1fZXZlbnRMaXN0ZW5lcik7
CiAgICAgICAgICAgICBjb25kaXRpb24ubV9ldmVudExpc3RlbmVyID0gQ29uZGl0aW9uRXZlbnRM
aXN0ZW5lcjo6Y3JlYXRlKHRoaXMsICZjb25kaXRpb24pOwotICAgICAgICAgICAgZXZlbnRCYXNl
LT5hZGRFdmVudExpc3RlbmVyKGNvbmRpdGlvbi5tX25hbWUsIGNvbmRpdGlvbi5tX2V2ZW50TGlz
dGVuZXIsIGZhbHNlKTsKKyAgICAgICAgICAgIGV2ZW50QmFzZS0+YWRkRXZlbnRMaXN0ZW5lcihj
b25kaXRpb24ubV9uYW1lLCAqY29uZGl0aW9uLm1fZXZlbnRMaXN0ZW5lciwgZmFsc2UpOwogICAg
ICAgICB9IGVsc2UgaWYgKGNvbmRpdGlvbi5tX3R5cGUgPT0gQ29uZGl0aW9uOjpTeW5jYmFzZSkg
ewogICAgICAgICAgICAgQVNTRVJUKCFjb25kaXRpb24ubV9iYXNlSUQuaXNFbXB0eSgpKTsKICAg
ICAgICAgICAgIGNvbmRpdGlvbi5tX3N5bmNiYXNlID0gdHJlZVNjb3BlKCkuZ2V0RWxlbWVudEJ5
SWQoY29uZGl0aW9uLm1fYmFzZUlEKTsKQEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lkIFNWR1NNSUxF
bGVtZW50OjpkaXNjb25uZWN0Q29uZGl0aW9ucygpCiAgICAgICAgICAgICAvLyBvdXIgY29uZGl0
aW9uIGV2ZW50IGxpc3RlbmVyLCBpbiBjYXNlIGl0IGxhdGVyIGZpcmVzLgogICAgICAgICAgICAg
RWxlbWVudCogZXZlbnRCYXNlID0gZXZlbnRCYXNlRm9yKGNvbmRpdGlvbik7CiAgICAgICAgICAg
ICBpZiAoZXZlbnRCYXNlKQotICAgICAgICAgICAgICAgIGV2ZW50QmFzZS0+cmVtb3ZlRXZlbnRM
aXN0ZW5lcihjb25kaXRpb24ubV9uYW1lLCBjb25kaXRpb24ubV9ldmVudExpc3RlbmVyLmdldCgp
LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgZXZlbnRCYXNlLT5yZW1vdmVFdmVudExpc3RlbmVy
KGNvbmRpdGlvbi5tX25hbWUsICpjb25kaXRpb24ubV9ldmVudExpc3RlbmVyLCBmYWxzZSk7CiAg
ICAgICAgICAgICBjb25kaXRpb24ubV9ldmVudExpc3RlbmVyLT5kaXNjb25uZWN0QW5pbWF0aW9u
KCk7CiAgICAgICAgICAgICBjb25kaXRpb24ubV9ldmVudExpc3RlbmVyID0gbnVsbHB0cjsKICAg
ICAgICAgfSBlbHNlIGlmIChjb25kaXRpb24ubV90eXBlID09IENvbmRpdGlvbjo6U3luY2Jhc2Up
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUV2ZW50c0NsYXNzZXMuY3BwIGIv
U291cmNlL1dlYktpdC93aW4vRE9NRXZlbnRzQ2xhc3Nlcy5jcHAKaW5kZXggODBiNGQyZWFjYmI1
Y2ZkN2MzZTVlZmM3MWVhOWExZWExNGZjYTNiZS4uZjBiMzEwMDRiZThlMzYzMzdhZTZmZTdiOTRi
ZTlhZDhmMWIyZWY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vRE9NRXZlbnRzQ2xh
c3Nlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vRE9NRXZlbnRzQ2xhc3Nlcy5jcHAKQEAg
LTY4LDcgKzY4LDcgQEAgV2ViRXZlbnRMaXN0ZW5lcjo6fldlYkV2ZW50TGlzdGVuZXIoKQogICAg
IG1faURPTUV2ZW50TGlzdGVuZXItPlJlbGVhc2UoKTsKIH0KIAotYm9vbCBXZWJFdmVudExpc3Rl
bmVyOjpvcGVyYXRvcj09KGNvbnN0IFdlYkNvcmU6OkV2ZW50TGlzdGVuZXImIG90aGVyKQorYm9v
bCBXZWJFdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IFdlYkNvcmU6OkV2ZW50TGlzdGVu
ZXImIG90aGVyKSBjb25zdAogewogICAgIHJldHVybiAob3RoZXIudHlwZSgpID09IENQUEV2ZW50
TGlzdGVuZXJUeXBlIAogICAgICAgICAmJiByZWludGVycHJldF9jYXN0PGNvbnN0IFdlYkV2ZW50
TGlzdGVuZXIqPigmb3RoZXIpLT5tX2lET01FdmVudExpc3RlbmVyID09IG1faURPTUV2ZW50TGlz
dGVuZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRE9NRXZlbnRzQ2xhc3Nlcy5o
IGIvU291cmNlL1dlYktpdC93aW4vRE9NRXZlbnRzQ2xhc3Nlcy5oCmluZGV4IDRhYjJjZWUxYzFm
MzJhOTliNzA5Y2NmNDgyNzg3MjA1OGUxNmRjNWUuLjE1MjZmOWQ3NmQxMjFmNTc5NmVjOGI0MjJh
YTQyOTZlYTEzMjQyYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUV2ZW50c0Ns
YXNzZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01FdmVudHNDbGFzc2VzLmgKQEAgLTQ2
LDcgKzQ2LDcgQEAgY2xhc3MgV2ViRXZlbnRMaXN0ZW5lciA6IHB1YmxpYyBXZWJDb3JlOjpFdmVu
dExpc3RlbmVyIHsKIHB1YmxpYzoKICAgICBXZWJFdmVudExpc3RlbmVyKElET01FdmVudExpc3Rl
bmVyKik7CiAgICAgfldlYkV2ZW50TGlzdGVuZXIoKTsKLSAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBFdmVudExpc3RlbmVyJik7CisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0o
Y29uc3QgRXZlbnRMaXN0ZW5lciYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVu
dChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViQ29yZTo6RXZlbnQqKTsKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJFdmVudExpc3RlbmVyPiBjcmVhdGUoSURPTUV2ZW50TGlz
dGVuZXIqKTsKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5oCmluZGV4IDYzYTQ4YWM1NjA2
Yjc0NGE5NTExYTI3ZTY2MmM4MTgwNTJmZWIxM2UuLmY2MzM5NzAxZTY2MDEwOWUyOTFhOGZjMGM1
YjkxYTQ5ODlhMzRlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5oCkBAIC04NCw3ICs4NCw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQREZQbHVnaW5Bbm5v
dGF0aW9uRXZlbnRMaXN0ZW5lcihhbm5vdGF0aW9uKSk7CiAgICAgICAgIH0KIAotICAgICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpIG92ZXJyaWRlIHsg
cmV0dXJuIHRoaXMgPT0gJmxpc3RlbmVyOyB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdGhpcyA9
PSAmbGlzdGVuZXI7IH0KIAogICAgICAgICB2b2lkIHNldEFubm90YXRpb24oUERGUGx1Z2luQW5u
b3RhdGlvbiogYW5ub3RhdGlvbikgeyBtX2Fubm90YXRpb24gPSBhbm5vdGF0aW9uOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
QW5ub3RhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luQW5ub3RhdGlvbi5tbQppbmRleCA0N2JhOWMyOTM1MTg0YTU1ODBkOWU2NzVjNzI1ZWMy
N2FjYmYzYTNjLi4zY2E3ZTQ4OTg4N2NmZTU4YzQzYzhlYTc0MzQ2ZTFjNDc4N2NlYTRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFu
bm90YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW5Bbm5vdGF0aW9uLm1tCkBAIC02OSw4ICs2OSw4IEBAIHZvaWQgUERGUGx1Z2luQW5u
b3RhdGlvbjo6YXR0YWNoKEVsZW1lbnQqIHBhcmVudCkKICAgICBtX2VsZW1lbnQgPSBjcmVhdGVB
bm5vdGF0aW9uRWxlbWVudCgpOwogCiAgICAgbV9lbGVtZW50LT5zZXRBdHRyaWJ1dGUoY2xhc3NB
dHRyLCAiYW5ub3RhdGlvbiIpOwotICAgIG1fZWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkuY2hhbmdlRXZlbnQsIG1fZXZlbnRMaXN0ZW5lciwgZmFsc2UpOwotICAgIG1fZWxl
bWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYmx1ckV2ZW50LCBtX2V2ZW50TGlz
dGVuZXIsIGZhbHNlKTsKKyAgICBtX2VsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1l
cygpLmNoYW5nZUV2ZW50LCAqbV9ldmVudExpc3RlbmVyLCBmYWxzZSk7CisgICAgbV9lbGVtZW50
LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQsICptX2V2ZW50TGlzdGVu
ZXIsIGZhbHNlKTsKIAogICAgIHVwZGF0ZUdlb21ldHJ5KCk7CiAKQEAgLTg3LDggKzg3LDggQEAg
dm9pZCBQREZQbHVnaW5Bbm5vdGF0aW9uOjpjb21taXQoKQogCiBQREZQbHVnaW5Bbm5vdGF0aW9u
Ojp+UERGUGx1Z2luQW5ub3RhdGlvbigpCiB7Ci0gICAgbV9lbGVtZW50LT5yZW1vdmVFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5jaGFuZ2VFdmVudCwgbV9ldmVudExpc3RlbmVyLmdldCgpLCBm
YWxzZSk7Ci0gICAgbV9lbGVtZW50LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5i
bHVyRXZlbnQsIG1fZXZlbnRMaXN0ZW5lci5nZXQoKSwgZmFsc2UpOworICAgIG1fZWxlbWVudC0+
cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2hhbmdlRXZlbnQsICptX2V2ZW50TGlz
dGVuZXIsIGZhbHNlKTsKKyAgICBtX2VsZW1lbnQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLmJsdXJFdmVudCwgKm1fZXZlbnRMaXN0ZW5lciwgZmFsc2UpOwogCiAgICAgbV9ldmVu
dExpc3RlbmVyLT5zZXRBbm5vdGF0aW9uKDApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQu
bW0KaW5kZXggYjJhM2M3ZjBmZWZhNWJiMGY1N2YxMzVkM2IzNmFjNzAyMTdlZGQ3Yi4uNjc3NjQ3
NTcyZDZmYTIwMWRjMzI5MzNkYjMxYjA2ZGZjOTFiMDgxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luUGFzc3dv
cmRGaWVsZC5tbQpAQCAtNDksMTQgKzQ5LDE0IEBAIFJlZjxQREZQbHVnaW5QYXNzd29yZEZpZWxk
PiBQREZQbHVnaW5QYXNzd29yZEZpZWxkOjpjcmVhdGUoUERGTGF5ZXJDb250cm9sbGVyICpwCiAK
IFBERlBsdWdpblBhc3N3b3JkRmllbGQ6On5QREZQbHVnaW5QYXNzd29yZEZpZWxkKCkKIHsKLSAg
ICBlbGVtZW50KCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleXVwRXZlbnQs
IGV2ZW50TGlzdGVuZXIoKSwgZmFsc2UpOworICAgIGVsZW1lbnQoKS0+cmVtb3ZlRXZlbnRMaXN0
ZW5lcihldmVudE5hbWVzKCkua2V5dXBFdmVudCwgKmV2ZW50TGlzdGVuZXIoKSwgZmFsc2UpOwog
fQogCiBQYXNzUmVmUHRyPEVsZW1lbnQ+IFBERlBsdWdpblBhc3N3b3JkRmllbGQ6OmNyZWF0ZUFu
bm90YXRpb25FbGVtZW50KCkKIHsKICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IFBERlBs
dWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpOwogICAgIGVsZW1l
bnQtPnNldEF0dHJpYnV0ZSh0eXBlQXR0ciwgInBhc3N3b3JkIik7Ci0gICAgZWxlbWVudC0+YWRk
RXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkua2V5dXBFdmVudCwgZXZlbnRMaXN0ZW5lcigpLCBm
YWxzZSk7CisgICAgZWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkua2V5dXBF
dmVudCwgKmV2ZW50TGlzdGVuZXIoKSwgZmFsc2UpOwogICAgIHJldHVybiBlbGVtZW50OwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpblRleHRBbm5vdGF0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbQppbmRleCBmYmVkM2E2ZmRhNjg5M2Q4ZDJl
NTUzNWRiNDMzZGQyOTQ3MTZmYjE3Li44YzA3NDY5YzZkNThhYjE3NjI4MTgwODhkYmUxOTU2MmMz
NzhmY2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0KQEAgLTc4LDcgKzc4LDcg
QEAgUmVmPFBERlBsdWdpblRleHRBbm5vdGF0aW9uPiBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6
Y3JlYXRlKFBERkFubm90YXRpb24gKmFubm8KIAogUERGUGx1Z2luVGV4dEFubm90YXRpb246On5Q
REZQbHVnaW5UZXh0QW5ub3RhdGlvbigpCiB7Ci0gICAgZWxlbWVudCgpLT5yZW1vdmVFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQsIGV2ZW50TGlzdGVuZXIoKSwgZmFsc2Up
OworICAgIGVsZW1lbnQoKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkua2V5ZG93
bkV2ZW50LCAqZXZlbnRMaXN0ZW5lcigpLCBmYWxzZSk7CiB9CiAKIFBhc3NSZWZQdHI8RWxlbWVu
dD4gUERGUGx1Z2luVGV4dEFubm90YXRpb246OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkKQEAg
LTk3LDcgKzk3LDcgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBQREZQbHVnaW5UZXh0QW5ub3RhdGlv
bjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKQogICAgIGVsc2UKICAgICAgICAgZWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaW5wdXRUYWcsIGZhbHNlKTsKIAotICAgIGVsZW1lbnQt
PmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleWRvd25FdmVudCwgZXZlbnRMaXN0ZW5l
cigpLCBmYWxzZSk7CisgICAgZWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCku
a2V5ZG93bkV2ZW50LCAqZXZlbnRMaXN0ZW5lcigpLCBmYWxzZSk7CiAKICAgICBTdHlsZWRFbGVt
ZW50KiBzdHlsZWRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KGVsZW1lbnQu
Z2V0KCkpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggZjkxZTgzYzIyMWZlMTc3ZmFlMTc4YWU4OWVkZGEwNGNjZjI2NTZm
Yi4uZDA3MmVlYjgxNTVjNjBkNTc1ZDM0MTczOTg4NzNkZDcyYThjMjhhMiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDE2LTA1LTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgR2VuZXJhdGUgYmluZGluZ3MgY29kZSBmb3IgRXZlbnRUYXJnZXQuYWRkRXZlbnRM
aXN0ZW5lcigpIC8gcmVtb3ZlRXZlbnRMaXN0ZW5lcigpCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTc4ODIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWJhc2VsaW5lIGV4aXN0aW5nIHRlc3Qgbm93IHRo
YXQgdGhlICdsZW5ndGgnIHByb3BlcnR5IG9mIHRob3NlIGZ1bmN0aW9ucworICAgICAgICBoYXZl
IGNoYW5nZWQuIFRoaXMgaXMgYmVjYXVzZSB0aGUgSURMIGhhcyBiZWVuIHVwZGF0ZWQgdG8gbWF0
Y2ggb3VyCisgICAgICAgIGltcGxlbWVudGF0aW9uIChhbGwgcGFyYW1ldGVycyBhcmUgb3B0aW9u
YWwpLiBXaGlsZSB0aGlzIGRvZXMgbm90IG1hdGNoCisgICAgICAgIHRoZSBzcGVjaWZpY2F0aW9u
LCB0aGUgbmV3IGxlbmd0aCBub3cgbWF0Y2hlcyBvdXIgYWN0dWFsIGJlaGF2aW9yLgorCisgICAg
ICAgICoganMvZG9tL2Z1bmN0aW9uLWxlbmd0aC1leHBlY3RlZC50eHQ6CisKIDIwMTYtMDUtMTgg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KIAogICAgICAgICBT
eW5jIERPTSBleGNlcHRpb24gdHlwZXMgd2l0aCBXZWJJREwgYW5kIHVwZGF0ZSBwcm9taXNlIHJl
amVjdGlvbnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9mdW5jdGlvbi1sZW5ndGgt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL2Z1bmN0aW9uLWxlbmd0aC1leHBlY3Rl
ZC50eHQKaW5kZXggNGEzNmI5OGY2YjhjMjIwODI0YmI5MmVhMDg1YWMxM2E2MDRiNDdlYS4uZTk1
YmU1MGU1MDY1YWQ3NzE2Y2I1ODkzMGY0OGUyMzE3NGE0YTk1OCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvanMvZG9tL2Z1bmN0aW9uLWxlbmd0aC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvanMvZG9tL2Z1bmN0aW9uLWxlbmd0aC1leHBlY3RlZC50eHQKQEAgLTgsNyArOCw3IEBAIFBB
U1Mgd2luZG93Lm9wZW4ubGVuZ3RoIGlzIDIKIFBBU1Mgd2luZG93LnNob3dNb2RhbERpYWxvZy5s
ZW5ndGggaXMgMQogUEFTUyB3aW5kb3cuc2V0VGltZW91dC5sZW5ndGggaXMgMQogUEFTUyB3aW5k
b3cuY2xlYXJUaW1lb3V0Lmxlbmd0aCBpcyAwCi1QQVNTIHdpbmRvdy5hZGRFdmVudExpc3RlbmVy
Lmxlbmd0aCBpcyAyCitGQUlMIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyLmxlbmd0aCBzaG91bGQg
YmUgMi4gV2FzIDAuCiBQQVNTIEFycmF5LnByb3RvdHlwZS5jb25jYXQubGVuZ3RoIGlzIDEKIFBB
U1MgQXJyYXkucHJvdG90eXBlLmpvaW4ubGVuZ3RoIGlzIDEKIFBBU1MgQXJyYXkucHJvdG90eXBl
LnB1c2gubGVuZ3RoIGlzIDEK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279352</attachid>
            <date>2016-05-18 22:40:55 -0700</date>
            <delta_ts>2016-05-18 22:45:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157882-20160518224155.patch</filename>
            <type>text/plain</type>
            <size>69011</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxMDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzczYWNlZjg4MjA4MzNi
MTc1ZjVmNGFkMjMyY2NjZjVhMzQ2MDUyYi4uNGI5NjcyZWJkZGRkNDU2ZDU5NWIxODA3NzBkNmE1
NDBkYjk4Zjk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxNi0wNS0xOCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEdlbmVyYXRlIGJpbmRpbmdz
IGNvZGUgZm9yIEV2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoKSAvIHJlbW92ZUV2ZW50TGlz
dGVuZXIoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU3ODgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
R2VuZXJhdGUgYmluZGluZ3MgY29kZSBmb3IgRXZlbnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigp
IC8gcmVtb3ZlRXZlbnRMaXN0ZW5lcigpCisgICAgICAgIGluc3RlYWQgb2YgaGFyZGNvZGluZyB0
aGVtIGluIHRoZSBiaW5kaW5ncyBnZW5lcmF0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBy
ZWJhc2VsaW5lZCBleGlzdGluZyB0ZXN0LiBUaGUgb25seSBXZWItRXhwb3NlZCBiZWhhdmlvciBj
aGFuZ2UKKyAgICAgICAgaXMgdGhhdCAnbGVuZ3RoJyBwcm9wZXJ0eSBvZiB0aG9zZSBmdW5jdGlv
bnMgaGF2ZSBjaGFuZ2VkLiBUaGlzIGlzIGJlY2F1c2UgdGhlCisgICAgICAgIElETCBoYXMgYmVl
biB1cGRhdGVkIHRvIG1hdGNoIG91ciBpbXBsZW1lbnRhdGlvbiAoYWxsIHBhcmFtZXRlcnMgYXJl
IG9wdGlvbmFsKS4KKyAgICAgICAgV2hpbGUgdGhpcyBkb2VzIG5vdCBtYXRjaCB0aGUgc3BlY2lm
aWNhdGlvbiwgdGhlIG5ldyBsZW5ndGggbm93IG1hdGNoZXMgb3VyCisgICAgICAgIGFjdHVhbCBi
ZWhhdmlvci4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3Vy
Y2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6
YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NjaGVkdWxlZFNvdXJj
ZU5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9T
Y3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nv
ck5vZGU6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvY2Vz
c29yTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9TY3JpcHRQcm9jZXNzb3JOb2RlLmg6CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9HT2Jq
ZWN0RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHT2JqZWN0RXZlbnRMaXN0
ZW5lcjo6b3BlcmF0b3I9PSk6CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZl
bnRMaXN0ZW5lci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAg
ICAoV2ViQ29yZTo6ZXZlbnRIYW5kbGVyQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRM
aXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6Y2Fz
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OmpzRnVuY3Rp
b24pOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL29iamMvT2JqQ0V2ZW50TGlzdGVuZXIu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL09iakNFdmVudExpc3RlbmVyLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6T2JqQ0V2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbik6CisgICAgICAgIChKU1ZhbHVlVG9OYXRpdmUpOgorICAgICAgICAoR2V0UGFy
ZW50Q2xhc3NOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEdldENhbGxiYWNrQ2xhc3NOYW1lKTog
RGVsZXRlZC4KKyAgICAgICAgKEdldEpTQ2FsbGJhY2tEYXRhVHlwZSk6IERlbGV0ZWQuCisgICAg
ICAgICogZG9tL0V2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lck1h
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRMaXN0ZW5lclRvVmVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50TGlzdGVuZXJNYXA6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpyZW1v
dmVMaXN0ZW5lckZyb21WZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRMaXN0ZW5lck1h
cDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlMaXN0ZW5lcnNOb3RDcmVhdGVkRnJv
bU1hcmt1cFRvVGFyZ2V0KToKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lck1hcC5oOgorICAg
ICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdl
dDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6YWRk
RXZlbnRMaXN0ZW5lckZvckJpbmRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0
OjpyZW1vdmVFdmVudExpc3RlbmVyRm9yQmluZGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRU
YXJnZXQ6OnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRUYXJnZXQ6OmNsZWFyQXR0cmlidXRlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogZG9tL0V2
ZW50VGFyZ2V0Lmg6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0LmlkbDoKKyAgICAgICAgKiBk
b20vTWVzc2FnZVBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmFkZEV2
ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5oOgorICAgICAgICAqIGRv
bS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyeUFkZEV2ZW50TGlzdGVuZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3Jl
Ojp0cnlSZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlbW92
ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogZG9tL1Jl
Z2lzdGVyZWRFdmVudExpc3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RlcmVkRXZl
bnRMaXN0ZW5lcjo6UmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGh0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojph
ZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJl
bW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURvY3VtZW50OjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGh0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHNBcHBsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQXBw
bGU6OnNob3dDbG9zZWRDYXB0aW9uVHJhY2tMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbHNBcHBsZTo6aGlkZUNsb3NlZENhcHRpb25UcmFja0xpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PSk6CisgICAg
ICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRv
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAg
ICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjphZGRFdmVudExpc3Rl
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIp
OgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjph
dHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI6OmRl
dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcjo6b3Bl
cmF0b3I9PSk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb25kaXRpb25FdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50Ojpjb25uZWN0Q29uZGl0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6ZGlzY29ubmVjdENvbmRpdGlvbnMpOgorCiAy
MDE2LTA1LTE4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBN
b2Rlcm4gSURCOiBNYWtlIFRlc3RSdW5uZXIuY2xlYXJBbGxEYXRhYmFzZXMgYWxzbyBkZWxldGUg
SW5kZXhlZERCIGRhdGFiYXNlcyAob25jZSBkb2luZyBzbyBpcyBzdXBwb3J0ZWQpLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hh
bmdlTG9nCmluZGV4IDNhNDBkMzUwN2JjNjc2YzJmNzhhOTk1MWU2NTU2YWVhNTY5ZGMwNWEuLjQ0
M2FkNGE5YWIxNDUyZGU5MWNjMTRiYmY2Mjk3YmY4NjQyOGMxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAxNi0wNS0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIEdlbmVyYXRlIGJpbmRpbmdzIGNvZGUgZm9yIEV2ZW50VGFyZ2V0LmFk
ZEV2ZW50TGlzdGVuZXIoKSAvIHJlbW92ZUV2ZW50TGlzdGVuZXIoKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3ODgyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2VuZXJhdGUgYmluZGluZ3MgY29kZSBm
b3IgRXZlbnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigpIC8gcmVtb3ZlRXZlbnRMaXN0ZW5lcigp
CisgICAgICAgIGluc3RlYWQgb2YgaGFyZGNvZGluZyB0aGVtIGluIHRoZSBiaW5kaW5ncyBnZW5l
cmF0b3IuCisKKyAgICAgICAgKiBET01FdmVudHNDbGFzc2VzLmNwcDoKKyAgICAgICAgKFdlYkV2
ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIERPTUV2ZW50c0NsYXNzZXMuaDoK
KwogMjAxNi0wNS0xNiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQgcm9sbG91dCByMjAwOTI0LiBDYXVzZWQganMvcmVncmVzcy9zdHJp
bmctcmVwbGFjZS1nZW5lcmljLmh0bWwgdG8gZmFpbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjMWVhOTQ0NzM5
ZmJiNTRlNmJhZmEzOGFlMzM5NDEzNGMyMmMxODQyLi45MWE1Y2EyZmFlNDQxZTBkMDdjZTdjOTIw
NzRkMTU5NWI2Zjg4Zjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTYtMDUtMTgg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBHZW5lcmF0ZSBiaW5k
aW5ncyBjb2RlIGZvciBFdmVudFRhcmdldC5hZGRFdmVudExpc3RlbmVyKCkgLyByZW1vdmVFdmVu
dExpc3RlbmVyKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1Nzg4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEdlbmVyYXRlIGJpbmRpbmdzIGNvZGUgZm9yIEV2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVu
ZXIoKSAvIHJlbW92ZUV2ZW50TGlzdGVuZXIoKQorICAgICAgICBpbnN0ZWFkIG9mIGhhcmRjb2Rp
bmcgdGhlbSBpbiB0aGUgYmluZGluZ3MgZ2VuZXJhdG9yLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW5Bbm5vdGF0aW9uOjphdHRhY2gpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5B
bm5vdGF0aW9uOjp+UERGUGx1Z2luQW5ub3RhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW5QYXNzd29yZEZpZWxkOjp+UERGUGx1Z2luUGFzc3dvcmRGaWVsZCk6CisgICAgICAg
IChXZWJLaXQ6OlBERlBsdWdpblBhc3N3b3JkRmllbGQ6OmNyZWF0ZUFubm90YXRpb25FbGVtZW50
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0
aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6flBERlBs
dWdpblRleHRBbm5vdGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luVGV4dEFubm90
YXRpb246OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KToKKwogMjAxNi0wNS0xOCAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kZXJuIElEQjogTWFrZSBUZXN0
UnVubmVyLmNsZWFyQWxsRGF0YWJhc2VzIGFsc28gZGVsZXRlIEluZGV4ZWREQiBkYXRhYmFzZXMg
KG9uY2UgZG9pbmcgc28gaXMgc3VwcG9ydGVkKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcAppbmRl
eCBiYzRlZmI0YjcyY2U2ZDdlYmNjY2UzOGViNjA5OTk1Mzk0MGU5YjUwLi40Y2E2YTA0NDJmZDNh
OTMxNTdjNzI1MTRmMzQ3YTFmYWM3ODM2NGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwCkBA
IC0yMDEsNyArMjAxLDcgQEAgdm9pZCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OmZpbmlzaCgp
CiAgICAgfQogfQogCi1ib29sIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6YWRkRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+
JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgQXVkaW9TY2hlZHVsZWRTb3VyY2VO
b2RlOjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8
RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIGJvb2wg
c3VjY2VzcyA9IEF1ZGlvTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdURk1vdmUo
bGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKICAgICBpZiAoc3VjY2VzcyAmJiBldmVudFR5cGUgPT0g
ZXZlbnROYW1lcygpLmVuZGVkRXZlbnQpCkBAIC0yMDksNyArMjA5LDcgQEAgYm9vbCBBdWRpb1Nj
aGVkdWxlZFNvdXJjZU5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIFIKICAgICByZXR1cm4gc3VjY2VzczsKIH0KIAotYm9vbCBBdWRpb1NjaGVkdWxl
ZFNvdXJjZU5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIEF1
ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVy
ZSkKIHsKICAgICBib29sIHN1Y2Nlc3MgPSBBdWRpb05vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIo
ZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CiAgICAgaWYgKHN1Y2Nlc3MgJiYgZXZl
bnRUeXBlID09IGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgKaW5k
ZXggZWNlZGUzOGEwODk0MjZkMDljZGU2MWQ0MGNiN2Y3NDNiOWM2MTA1NS4uY2I0ZGQzY2RlODIx
NzVjZDE2NTYzZDBkODhmZmNjMTE3Y2ExZDA5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCkBAIC0x
MDEsOCArMTAxLDggQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgVW5rbm93
blRpbWU7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0
dXJlKSBvdmVycmlkZTsKLSAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpIG92ZXJy
aWRlOworICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7Cisg
ICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBFdmVudExpc3RlbmVyJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKICAgICB2b2lkIHJl
bW92ZUFsbEV2ZW50TGlzdGVuZXJzKCkgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAppbmRl
eCA2ODVjNjczMDg0YzhjMWYxODMzMGZmOWZmMzY3NjUzMDljZDM5M2U1Li4wY2M0MWI3NTY4YmIw
NTEwZTE1NWVlOWNlYzEwMDU2MWViNzRiYTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKQEAgLTI3Myw3ICsy
NzMsNyBAQCBkb3VibGUgU2NyaXB0UHJvY2Vzc29yTm9kZTo6bGF0ZW5jeVRpbWUoKSBjb25zdAog
ICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7CiB9CiAK
LWJvb2wgU2NyaXB0UHJvY2Vzc29yTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wg
dXNlQ2FwdHVyZSkKK2Jvb2wgU2NyaXB0UHJvY2Vzc29yTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVu
ZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICBib29sIHN1Y2Nlc3MgPSBBdWRpb05vZGU6OmFk
ZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7
CiAgICAgaWYgKHN1Y2Nlc3MgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5hdWRpb3Byb2Nl
c3NFdmVudCkKQEAgLTI4MSw3ICsyODEsNyBAQCBib29sIFNjcmlwdFByb2Nlc3Nvck5vZGU6OmFk
ZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cgogICAg
IHJldHVybiBzdWNjZXNzOwogfQogCi1ib29sIFNjcmlwdFByb2Nlc3Nvck5vZGU6OnJlbW92ZUV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIq
IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIFNjcmlwdFByb2Nlc3Nvck5vZGU6OnJl
bW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlz
dGVuZXImIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgYm9vbCBzdWNjZXNzID0g
QXVkaW9Ob2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNh
cHR1cmUpOwogICAgIGlmIChzdWNjZXNzICYmIGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuYXVk
aW9wcm9jZXNzRXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oCmluZGV4IDZiNjVkMDE4ZWJmYWY2OTZhMDVkZDhkM2Rm
ODA0YTYzYzRiYWQ0MjQuLjEzMDYyNTkwOTBhZDQzYjJhZjVkNjM3MjJkNTVlMjQzM2Q4M2JiMmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vz
c29yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJv
Y2Vzc29yTm9kZS5oCkBAIC03Myw4ICs3Myw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGZpcmVQ
cm9jZXNzRXZlbnQoKTsKIAotICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVy
ZSkgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlk
ZTsKKyAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAg
IGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
RXZlbnRMaXN0ZW5lciYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1v
dmVBbGxFdmVudExpc3RlbmVycygpIG92ZXJyaWRlOwogCiAgICAgLy8gRG91YmxlIGJ1ZmZlcmlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZl
bnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RF
dmVudExpc3RlbmVyLmNwcAppbmRleCBkNGExZDE4MzUxY2YxYWQ0MTMzMmRlMTU3ZDA2YjI5MTQx
NzhiYWFjLi5mMmVkOTMyNTFjNTJjNDY4MTlkZWQxM2I1YzBhZTYyM2U2MTEwMTUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RFdmVudExpc3RlbmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RFdmVudExp
c3RlbmVyLmNwcApAQCAtNTcsOSArNTcsOSBAQCB2b2lkIEdPYmplY3RFdmVudExpc3RlbmVyOjpn
b2JqZWN0RGVzdHJveWVkKCkKICAgICAvLyBhbmQgbGF0ZXIgdXNlLWFmdGVyLWZyZWUgd2l0aCB0
aGUgbV9oYW5kbGVyID0gMDsgYXNzaWdubWVudC4KICAgICBSZWZQdHI8R09iamVjdEV2ZW50TGlz
dGVuZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CiAKLSAgICBtX2NvcmVUYXJnZXQtPnJlbW92ZUV2
ZW50TGlzdGVuZXIobV9kb21FdmVudE5hbWUuZGF0YSgpLCB0aGlzLCBtX2NhcHR1cmUpOwotICAg
IG1fY29yZVRhcmdldCA9IDA7Ci0gICAgbV9oYW5kbGVyID0gMDsKKyAgICBtX2NvcmVUYXJnZXQt
PnJlbW92ZUV2ZW50TGlzdGVuZXIobV9kb21FdmVudE5hbWUuZGF0YSgpLCAqdGhpcywgbV9jYXB0
dXJlKTsKKyAgICBtX2NvcmVUYXJnZXQgPSBudWxscHRyOworICAgIG1faGFuZGxlciA9IG51bGxw
dHI7CiB9CiAKIHZvaWQgR09iamVjdEV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBFdmVudCogZXZlbnQpCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgR09i
amVjdEV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBF
dmVudCogZXZlbnQpCiAgICAgZ192YWx1ZV91bnNldChwYXJhbWV0ZXJzICsgMSk7CiB9CiAKLWJv
b2wgR09iamVjdEV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYg
bGlzdGVuZXIpCitib29sIEdPYmplY3RFdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IEV2
ZW50TGlzdGVuZXImIGxpc3RlbmVyKSBjb25zdAogewogICAgIGlmIChjb25zdCBHT2JqZWN0RXZl
bnRMaXN0ZW5lciogZ29iamVjdEV2ZW50TGlzdGVuZXIgPSBHT2JqZWN0RXZlbnRMaXN0ZW5lcjo6
Y2FzdCgmbGlzdGVuZXIpKQogICAgICAgICByZXR1cm4gbV90YXJnZXQgPT0gZ29iamVjdEV2ZW50
TGlzdGVuZXItPm1fdGFyZ2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9n
b2JqZWN0L0dPYmplY3RFdmVudExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9n
b2JqZWN0L0dPYmplY3RFdmVudExpc3RlbmVyLmgKaW5kZXggZTExN2Y0MGQ2ZWNlNWQ0ZjY2OGMw
OTliODA5NTZhNzNiMGZjNmM4Ni4uMjA2YmJkNzg5ZTMxMDk3MGVmZGQyY2E3ZDgyZmM3MWJhYzk2
ZmJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0
RXZlbnRMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09i
amVjdEV2ZW50TGlzdGVuZXIuaApAQCAtMzUsMTQgKzM1LDE0IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBib29sIGFkZEV2ZW50TGlzdGVuZXIoR09iamVjdCogdGFyZ2V0LCBFdmVudFRhcmdldCog
Y29yZVRhcmdldCwgY29uc3QgY2hhciogZG9tRXZlbnROYW1lLCBHQ2xvc3VyZSogaGFuZGxlciwg
Ym9vbCB1c2VDYXB0dXJlKQogICAgIHsKLSAgICAgICAgUmVmUHRyPEdPYmplY3RFdmVudExpc3Rl
bmVyPiBsaXN0ZW5lcihhZG9wdFJlZihuZXcgR09iamVjdEV2ZW50TGlzdGVuZXIodGFyZ2V0LCBj
b3JlVGFyZ2V0LCBkb21FdmVudE5hbWUsIGhhbmRsZXIsIHVzZUNhcHR1cmUpKSk7Ci0gICAgICAg
IHJldHVybiBjb3JlVGFyZ2V0LT5hZGRFdmVudExpc3RlbmVyKGRvbUV2ZW50TmFtZSwgbGlzdGVu
ZXIucmVsZWFzZSgpLCB1c2VDYXB0dXJlKTsKKyAgICAgICAgUmVmPEdPYmplY3RFdmVudExpc3Rl
bmVyPiBsaXN0ZW5lcihhZG9wdFJlZigqbmV3IEdPYmplY3RFdmVudExpc3RlbmVyKHRhcmdldCwg
Y29yZVRhcmdldCwgZG9tRXZlbnROYW1lLCBoYW5kbGVyLCB1c2VDYXB0dXJlKSkpOworICAgICAg
ICByZXR1cm4gY29yZVRhcmdldC0+YWRkRXZlbnRMaXN0ZW5lcihkb21FdmVudE5hbWUsIFdURk1v
dmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCByZW1v
dmVFdmVudExpc3RlbmVyKEdPYmplY3QqIHRhcmdldCwgRXZlbnRUYXJnZXQqIGNvcmVUYXJnZXQs
IGNvbnN0IGNoYXIqIGRvbUV2ZW50TmFtZSwgR0Nsb3N1cmUqIGhhbmRsZXIsIGJvb2wgdXNlQ2Fw
dHVyZSkKICAgICB7CiAgICAgICAgIEdPYmplY3RFdmVudExpc3RlbmVyIGtleSh0YXJnZXQsIGNv
cmVUYXJnZXQsIGRvbUV2ZW50TmFtZSwgaGFuZGxlciwgdXNlQ2FwdHVyZSk7Ci0gICAgICAgIHJl
dHVybiBjb3JlVGFyZ2V0LT5yZW1vdmVFdmVudExpc3RlbmVyKGRvbUV2ZW50TmFtZSwgJmtleSwg
dXNlQ2FwdHVyZSk7CisgICAgICAgIHJldHVybiBjb3JlVGFyZ2V0LT5yZW1vdmVFdmVudExpc3Rl
bmVyKGRvbUV2ZW50TmFtZSwga2V5LCB1c2VDYXB0dXJlKTsKICAgICB9CiAKICAgICBzdGF0aWMg
dm9pZCBnb2JqZWN0RGVzdHJveWVkQ2FsbGJhY2soR09iamVjdEV2ZW50TGlzdGVuZXIqIGxpc3Rl
bmVyLCBHT2JqZWN0KikKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgOiAw
OwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVu
ZXImIG90aGVyKTsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3Ro
ZXIpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIEdPYmplY3RFdmVudExpc3RlbmVy
KEdPYmplY3QqLCBFdmVudFRhcmdldCosIGNvbnN0IGNoYXIqIGRvbUV2ZW50TmFtZSwgR0Nsb3N1
cmUqLCBib29sIGNhcHR1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRMaXN0ZW5lci5jcHAKaW5kZXggY2M1NGZkNGE4MTg0OTc3YTYwNGI1Zjk0YTU4NTIxMzJhMWQ4
Njg3ZS4uYmZkNzhhODI5NWU4MzgxMjE5YjNiMmRiYTVmNDRhYjA5MGUxNzY2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCkBAIC0xNjMsMjAg
KzE2MywxMyBAQCBib29sIEpTRXZlbnRMaXN0ZW5lcjo6dmlydHVhbGlzQXR0cmlidXRlKCkgY29u
c3QKICAgICByZXR1cm4gbV9pc0F0dHJpYnV0ZTsKIH0KIAotYm9vbCBKU0V2ZW50TGlzdGVuZXI6
Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpCitib29sIEpTRXZlbnRM
aXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikgY29uc3QK
IHsKICAgICBpZiAoY29uc3QgSlNFdmVudExpc3RlbmVyKiBqc0V2ZW50TGlzdGVuZXIgPSBKU0V2
ZW50TGlzdGVuZXI6OmNhc3QoJmxpc3RlbmVyKSkKICAgICAgICAgcmV0dXJuIG1fanNGdW5jdGlv
biA9PSBqc0V2ZW50TGlzdGVuZXItPm1fanNGdW5jdGlvbiAmJiBtX2lzQXR0cmlidXRlID09IGpz
RXZlbnRMaXN0ZW5lci0+bV9pc0F0dHJpYnV0ZTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJl
ZjxKU0V2ZW50TGlzdGVuZXI+IGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvckFkZChKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIEpTQzo6SlNPYmplY3QmIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0JiB3cmFw
cGVyKQotewotICAgIC8vIEZJWE1FOiBUaGlzIGFic3RyYWN0aW9uIGlzIG5vIGxvbmdlciBuZWVk
ZWQuIEl0IHdhcyBwYXJ0IG9mIHN1cHBvcnQgZm9yIFNWR0VsZW1lbnRJbnN0YW5jZS4KLSAgICAv
LyBXZSBzaG91bGQgcmVtb3ZlIGl0IGFuZCBzaW1wbGlmeSB0aGUgYmluZGluZ3MgZ2VuZXJhdGlv
biBzY3JpcHRzLgotICAgIHJldHVybiBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZSgmbGlzdGVuZXIs
ICZ3cmFwcGVyLCBmYWxzZSwgY3VycmVudFdvcmxkKCZzdGF0ZSkpOwotfQotCiBzdGF0aWMgaW5s
aW5lIEpTQzo6SlNWYWx1ZSBldmVudEhhbmRsZXJBdHRyaWJ1dGUoRXZlbnRMaXN0ZW5lciogYWJz
dHJhY3RMaXN0ZW5lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBp
ZiAoIWFic3RyYWN0TGlzdGVuZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0V2ZW50TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRMaXN0ZW5lci5oCmluZGV4IGEwMzk1NTM3MWJmMWNmM2NjYTgwMDBhMjQ2YjRiNjY2YTg5ZTJh
OTUuLmU1NWEyNWIwZjY5NDNlMjJiMjgzOWYxODkxODNlOTY3OGJiOTE3MzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCkBAIC00Myw2ICs0MywxNCBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpTRXZlbnRMaXN0ZW5lcihs
aXN0ZW5lciwgd3JhcHBlciwgaXNBdHRyaWJ1dGUsIHdvcmxkKSk7CiAgICAgfQogCisgICAgc3Rh
dGljIFJlZlB0cjxKU0V2ZW50TGlzdGVuZXI+IGNyZWF0ZShKU0M6OkpTVmFsdWUgbGlzdGVuZXIs
IEpTQzo6SlNPYmplY3QmIHdyYXBwZXIsIGJvb2wgaXNBdHRyaWJ1dGUsIERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQpCisgICAgeworICAgICAgICBpZiAoVU5MSUtFTFkoIWxpc3RlbmVyLmlzT2JqZWN0
KCkpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBKU0V2ZW50TGlzdGVuZXIoSlNDOjphc09iamVjdChsaXN0ZW5lciksICZ3cmFwcGVy
LCBpc0F0dHJpYnV0ZSwgd29ybGQpKTsKKyAgICB9CisKICAgICBzdGF0aWMgY29uc3QgSlNFdmVu
dExpc3RlbmVyKiBjYXN0KGNvbnN0IEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGxpc3RlbmVyLT50eXBlKCkgPT0gSlNFdmVudExpc3RlbmVyVHlwZQpAQCAt
NTIsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5KU0V2ZW50TGlzdGVuZXIoKTsK
IAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgb3ZlcnJp
ZGU7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGV2ZW50IGxpc3RlbmVy
IHdhcyBjcmVhdGVkIGZvciBhbiBldmVudCBoYW5kbGVyIGF0dHJpYnV0ZSwgbGlrZSAib25sb2Fk
IiBvciAib25jbGljayIuCiAgICAgYm9vbCBpc0F0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNBdHRyaWJ1dGU7IH0KQEAgLTk5LDkgKzEwNyw2IEBAIHZvaWQgc2V0RG9jdW1lbnRFdmVudEhh
bmRsZXJBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTT2JqZWN0JiwgSFRNTEVsZW1l
CiBKU0M6OkpTVmFsdWUgZG9jdW1lbnRFdmVudEhhbmRsZXJBdHRyaWJ1dGUoRG9jdW1lbnQmLCBj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7CiB2b2lkIHNldERvY3VtZW50RXZlbnRIYW5k
bGVyQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU09iamVjdCYsIERvY3VtZW50Jiwg
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEpTQzo6SlNWYWx1ZSk7CiAKLVJlZjxKU0V2
ZW50TGlzdGVuZXI+IGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvckFkZChKU0M6OkV4ZWNTdGF0ZSYs
IEpTQzo6SlNPYmplY3QmIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0JiB3cmFwcGVyKTsKLVJlZjxK
U0V2ZW50TGlzdGVuZXI+IGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvclJlbW92ZShKU0M6OkV4ZWNT
dGF0ZSYsIEpTQzo6SlNPYmplY3QmIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0JiB3cmFwcGVyKTsK
LQogaW5saW5lIEpTQzo6SlNPYmplY3QqIEpTRXZlbnRMaXN0ZW5lcjo6anNGdW5jdGlvbihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSBjb25zdAogewogICAg
IC8vIGluaXRpYWxpemVKU0Z1bmN0aW9uIGNhbiB0cmlnZ2VyIGNvZGUgdGhhdCBkZWxldGVzIHRo
aXMgZXZlbnQgbGlzdGVuZXIKQEAgLTEzMywxMSArMTM4LDYgQEAgaW5saW5lIEpTQzo6SlNPYmpl
Y3QqIEpTRXZlbnRMaXN0ZW5lcjo6anNGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHQKICAgICByZXR1cm4gbV9qc0Z1bmN0aW9uLmdldCgpOwogfQogCi1pbmxpbmUgUmVmPEpT
RXZlbnRMaXN0ZW5lcj4gY3JlYXRlSlNFdmVudExpc3RlbmVyRm9yUmVtb3ZlKEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgSlNDOjpKU09iamVjdCYgbGlzdGVuZXIsIEpTQzo6SlNPYmplY3QmIHdyYXBw
ZXIpCi17Ci0gICAgcmV0dXJuIGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvckFkZChzdGF0ZSwgbGlz
dGVuZXIsIHdyYXBwZXIpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBKU0V2ZW50TGlzdGVuZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
b2JqYy9PYmpDRXZlbnRMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9P
YmpDRXZlbnRMaXN0ZW5lci5oCmluZGV4IGYzZTk4NDM3ZmJhYWQ3OWEyY2I1MzNkYmI4MzgxNDMz
NjFmM2E1M2EuLjIzYzk4NDU1NTRmZTk4ZTcwNzBmOWY5YTFkYmNmODdkNTc0MzQ1NmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ0V2ZW50TGlzdGVuZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL09iakNFdmVudExpc3RlbmVyLmgKQEAg
LTUyLDcgKzUyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIE9iakNFdmVudExp
c3RlbmVyKE9iakNMaXN0ZW5lcik7CiAgICAgICAgIHZpcnR1YWwgfk9iakNFdmVudExpc3RlbmVy
KCk7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXIm
KTsKKyAgICAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYp
IGNvbnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIEV2ZW50Kik7CiAKICAgICAgICAgUmV0YWluUHRyPE9iakNMaXN0ZW5lcj4gbV9s
aXN0ZW5lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ0V2
ZW50TGlzdGVuZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL09iakNFdmVudExp
c3RlbmVyLm1tCmluZGV4IDA5OWQ0NTVjMGNhNWI0NzU4NzQ0OTdlZGYyOWUyNzE2YjFmNDA2YzMu
LjMyZmU2ZTY1MWIxNTA1MWMyMTMyM2M3OWM2MDM5NDhiMjU0MGE0MDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ0V2ZW50TGlzdGVuZXIubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9PYmpDRXZlbnRMaXN0ZW5lci5tbQpAQCAtNzksNyAr
NzksNyBAQCB2b2lkIE9iakNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgRXZlbnQqIGV2ZW50KQogICAgIFtsaXN0ZW5lciBoYW5kbGVFdmVudDpraXQo
ZXZlbnQpXTsKIH0KIAotYm9vbCBPYmpDRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBF
dmVudExpc3RlbmVyJiBsaXN0ZW5lcikKK2Jvb2wgT2JqQ0V2ZW50TGlzdGVuZXI6Om9wZXJhdG9y
PT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpIGNvbnN0CiB7CiAgICAgaWYgKGNvbnN0
IE9iakNFdmVudExpc3RlbmVyKiBvYmpDRXZlbnRMaXN0ZW5lciA9IE9iakNFdmVudExpc3RlbmVy
OjpjYXN0KCZsaXN0ZW5lcikpCiAgICAgICAgIHJldHVybiBtX2xpc3RlbmVyID09IG9iakNFdmVu
dExpc3RlbmVyLT5tX2xpc3RlbmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBmNzE3OGQxNTAxNDE2M2IwMTVkMWZmYWVi
ZGYzYjA0YWM2Y2FkODMyLi41MTVkYzRmNjJkOGU0OWU2NWMxOTE1ZGVjYzUxZjVmNGJiMzYwZjg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQpAQCAtMTQzLDI2ICsxNDMsNiBAQCBzdWIgRXZlbnRIYW5kbGVyQXR0cmlidXRlRXZl
bnROYW1lCiAgICAgcmV0dXJuICJldmVudE5hbWVzKCkuJHtldmVudFR5cGV9RXZlbnQiOwogfQog
Ci1zdWIgR2VuZXJhdGVFdmVudExpc3RlbmVyQ2FsbAotewotICAgIG15ICRmdW5jdGlvbk5hbWUg
PSBzaGlmdDsKLSAgICBteSAkc3VmZml4ID0gdWNmaXJzdCAkZnVuY3Rpb25OYW1lOwotICAgIG15
ICRwYXNzUmVmUHRySGFuZGxpbmcgPSAoJGZ1bmN0aW9uTmFtZSBlcSAiYWRkIikgPyAiIiA6ICIu
cHRyKCkiOwotCi0gICAgJGltcGxJbmNsdWRlc3siSlNFdmVudExpc3RlbmVyLmgifSA9IDE7Ci0K
LSAgICBteSBAR2VuZXJhdGVFdmVudExpc3RlbmVySW1wbCA9ICgpOwotCi0gICAgcHVzaChAR2Vu
ZXJhdGVFdmVudExpc3RlbmVySW1wbCwgPDxFTkQpOwotICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBz
dGF0ZS0+YXJndW1lbnQoMSk7Ci0gICAgaWYgKFVOTElLRUxZKCFsaXN0ZW5lci5pc09iamVjdCgp
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBp
bXBsLiR7ZnVuY3Rpb25OYW1lfUV2ZW50TGlzdGVuZXIoc3RhdGUtPmFyZ3VtZW50KDApLnRvU3Ry
aW5nKHN0YXRlKS0+dG9BdG9taWNTdHJpbmcoc3RhdGUpLCBjcmVhdGVKU0V2ZW50TGlzdGVuZXJG
b3Ikc3VmZml4KCpzdGF0ZSwgKmFzT2JqZWN0KGxpc3RlbmVyKSwgKmNhc3RlZFRoaXMpJHBhc3NS
ZWZQdHJIYW5kbGluZywgc3RhdGUtPmFyZ3VtZW50KDIpLnRvQm9vbGVhbihzdGF0ZSkpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci1FTkQKLSAgICByZXR1cm4g
QEdlbmVyYXRlRXZlbnRMaXN0ZW5lckltcGw7Ci19Ci0KIHN1YiBHZXRQYXJlbnRDbGFzc05hbWUK
IHsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CkBAIC0zMjE5LDMwICszMTk5LDI0IEBAIEVO
RAogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAjIEZvciBjb21wYXRpYmlsaXR5IHdpdGgg
bGVnYWN5IGNvbnRlbnQsIHRoZSBFdmVudExpc3RlbmVyIGNhbGxzIGFyZSBnZW5lcmF0ZWQgd2l0
aG91dCBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2suCi0gICAgICAgICAgICAgICAgICAgIGlm
ICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSBlcSAiYWRkRXZlbnRMaXN0ZW5lciIpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUV2ZW50TGlz
dGVuZXJDYWxsKCJhZGQiKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5uYW1lIGVxICJyZW1vdmVFdmVudExpc3RlbmVyIikgewotICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRlRXZlbnRMaXN0ZW5lckNh
bGwoInJlbW92ZSIpKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjayhcQGltcGxDb250ZW50LCAk
ZnVuY3Rpb24sICRpbnRlcmZhY2UpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHJh
aXNlc0V4Y2VwdGlvbldpdGhNZXNzYWdlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlIGVjO1xuIik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkcmFpc2VzRXhjZXB0aW9uKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKFxAaW1wbENvbnRlbnQsICRm
dW5jdGlvbiwgJGludGVyZmFjZSk7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZnVu
Y3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrU2VjdXJpdHlGb3JO
b2RlIn0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9Ob2RlKHN0YXRlLCBpbXBsLiIgLiAkZnVuY3Rp
b24tPnNpZ25hdHVyZS0+bmFtZSAuICIoIiAuICgkcmFpc2VzRXhjZXB0aW9uID8gImVjIiA6ICIi
KSAuIikpKVxuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpO1xuIik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNET01CaW5kaW5nLmgifSA9
IDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICgk
cmFpc2VzRXhjZXB0aW9uV2l0aE1lc3NhZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSBlYztcbiIpOwor
ICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkcmFpc2VzRXhjZXB0aW9uKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDtcbiIpOworICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG15ICRudW1QYXJhbWV0ZXJzID0gQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OwotICAgICAg
ICAgICAgICAgICAgICAgICAgbXkgKCRmdW5jdGlvblN0cmluZywgJGR1bW15KSA9IEdlbmVyYXRl
UGFyYW1ldGVyc0NoZWNrKFxAaW1wbENvbnRlbnQsICRmdW5jdGlvbiwgJGludGVyZmFjZSwgJG51
bVBhcmFtZXRlcnMsICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSwgJHN2Z1Byb3BlcnR5VHlw
ZSwgJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlLCAkc3ZnTGlzdFByb3BlcnR5VHlwZSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25D
YWxsKCRmdW5jdGlvbiwgJGZ1bmN0aW9uU3RyaW5nLCAiICAgICIsICRzdmdQcm9wZXJ0eVR5cGUs
ICRpbnRlcmZhY2UpOworICAgICAgICAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5Rm9yTm9kZSJ9KSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIXNob3VsZEFs
bG93QWNjZXNzVG9Ob2RlKHN0YXRlLCBpbXBsLiIgLiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFt
ZSAuICIoIiAuICgkcmFpc2VzRXhjZXB0aW9uID8gImVjIiA6ICIiKSAuIikpKVxuIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bGwoKSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICRp
bXBsSW5jbHVkZXN7IkpTRE9NQmluZGluZy5oIn0gPSAxOwogICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgbXkgJG51bVBhcmFtZXRlcnMgPSBAeyRmdW5jdGlvbi0+
cGFyYW1ldGVyc307CisgICAgICAgICAgICAgICAgICAgIG15ICgkZnVuY3Rpb25TdHJpbmcsICRk
dW1teSkgPSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayhcQGltcGxDb250ZW50LCAkZnVuY3Rpb24s
ICRpbnRlcmZhY2UsICRudW1QYXJhbWV0ZXJzLCAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUs
ICRzdmdQcm9wZXJ0eVR5cGUsICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSwgJHN2Z0xp
c3RQcm9wZXJ0eVR5cGUpOworICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uRnVuY3Rpb25DYWxsKCRmdW5jdGlvbiwgJGZ1bmN0aW9uU3RyaW5nLCAiICAgICIsICRzdmdQ
cm9wZXJ0eVR5cGUsICRpbnRlcmZhY2UpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KIApAQCAtNDQ1Myw2ICs0NDI3LDkgQEAgc3ViIEpTVmFsdWVUb05hdGl2ZQogCiAgICAgQWRk
VG9JbXBsSW5jbHVkZXMoIkpTJHR5cGUuaCIsICRjb25kaXRpb25hbCk7CiAKKyAgICAjIEZJWE1F
OiBFdmVudExpc3RlbmVyIHNob3VsZCBiZSBhIGNhbGxiYWNrIGludGVyZmFjZS4KKyAgICByZXR1
cm4gIkpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKCR2YWx1ZSwgKmNhc3RlZFRoaXMsIGZhbHNlLCBj
dXJyZW50V29ybGQoc3RhdGUpKSIgaWYgJHR5cGUgZXEgIkV2ZW50TGlzdGVuZXIiOworCiAgICAg
bXkgJGV4dGVuZGVkQXR0cmlidXRlcyA9ICRjb2RlR2VuZXJhdG9yLT5nZXRJbnRlcmZhY2VFeHRl
bmRlZEF0dHJpYnV0ZXNGcm9tTmFtZSgkdHlwZSk7CiAgICAgcmV0dXJuICgiSlMke3R5cGV9Ojp0
b1dyYXBwZWQoKnN0YXRlLCAkdmFsdWUpIiwgMSkgaWYgJGV4dGVuZGVkQXR0cmlidXRlcy0+eyJK
U0N1c3RvbVRvTmF0aXZlT2JqZWN0In07CiAgICAgcmV0dXJuICgiSlMke3R5cGV9Ojp0b1dyYXBw
ZWQoJHZhbHVlKSIsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlz
dGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmgKaW5kZXggYmI0Zjlm
MDJkZWFkNWVkMzEzY2U3NjQwNmE2ZDE5ZWQ4Yzg2ZjZkMS4uMjI0MzUyOTU1OWQ4MzAzMzc1NGZi
MGU3MmJkZGM2NGM4Yzk1M2E3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
TGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5oCkBAIC00
OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgdmlydHVhbCB+RXZlbnRMaXN0ZW5l
cigpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXIm
KSA9IDA7CisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIEV2ZW50KikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCB3YXNDcmVhdGVkRnJvbU1h
cmt1cCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExp
c3RlbmVyTWFwLmNwcAppbmRleCBmMTk3YzIwNjAxMWM4YmFhNDhkMzA4MWRkZmJjMjAxYTA1ZTM4
OTA4Li5iMDRlMTIxM2E1NWNiNjVjMmYyZTUyMzg5ZWU0NjRkN2Y4NDVlZWQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCkBAIC05NSw5ICs5NSw5IEBAIFZlY3RvcjxB
dG9taWNTdHJpbmc+IEV2ZW50TGlzdGVuZXJNYXA6OmV2ZW50VHlwZXMoKSBjb25zdAogICAgIHJl
dHVybiB0eXBlczsKIH0KIAotc3RhdGljIGJvb2wgYWRkTGlzdGVuZXJUb1ZlY3RvcihFdmVudExp
c3RlbmVyVmVjdG9yKiB2ZWN0b3IsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIs
IGJvb2wgdXNlQ2FwdHVyZSkKK3N0YXRpYyBib29sIGFkZExpc3RlbmVyVG9WZWN0b3IoRXZlbnRM
aXN0ZW5lclZlY3RvciogdmVjdG9yLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9v
bCB1c2VDYXB0dXJlKQogewotICAgIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyIHJlZ2lzdGVyZWRM
aXN0ZW5lcihsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CisgICAgUmVnaXN0ZXJlZEV2ZW50TGlzdGVu
ZXIgcmVnaXN0ZXJlZExpc3RlbmVyKFdURk1vdmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKIAog
ICAgIGlmICh2ZWN0b3ItPmZpbmQocmVnaXN0ZXJlZExpc3RlbmVyKSAhPSBub3RGb3VuZCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOyAvLyBEdXBsaWNhdGUgbGlzdGVuZXIuCkBAIC0xMDYsMjAgKzEw
NiwyMCBAQCBzdGF0aWMgYm9vbCBhZGRMaXN0ZW5lclRvVmVjdG9yKEV2ZW50TGlzdGVuZXJWZWN0
b3IqIHZlY3RvciwgUGFzc1JlZlB0cjxFdmVudExpcwogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIEV2ZW50TGlzdGVuZXJNYXA6OmFkZChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
UGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9v
bCBFdmVudExpc3RlbmVyTWFwOjphZGQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJl
ZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgYXNz
ZXJ0Tm9BY3RpdmVJdGVyYXRvcnMoKTsKIAogICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2VudHJp
ZXMpIHsKICAgICAgICAgaWYgKGVudHJ5LmZpcnN0ID09IGV2ZW50VHlwZSkKLSAgICAgICAgICAg
IHJldHVybiBhZGRMaXN0ZW5lclRvVmVjdG9yKGVudHJ5LnNlY29uZC5nZXQoKSwgbGlzdGVuZXIs
IHVzZUNhcHR1cmUpOworICAgICAgICAgICAgcmV0dXJuIGFkZExpc3RlbmVyVG9WZWN0b3IoZW50
cnkuc2Vjb25kLmdldCgpLCBXVEZNb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiAgICAgfQog
CiAgICAgbV9lbnRyaWVzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihldmVudFR5cGUsIHN0ZDo6bWFr
ZV91bmlxdWU8RXZlbnRMaXN0ZW5lclZlY3Rvcj4oKSkpOwotICAgIHJldHVybiBhZGRMaXN0ZW5l
clRvVmVjdG9yKG1fZW50cmllcy5sYXN0KCkuc2Vjb25kLmdldCgpLCBsaXN0ZW5lciwgdXNlQ2Fw
dHVyZSk7CisgICAgcmV0dXJuIGFkZExpc3RlbmVyVG9WZWN0b3IobV9lbnRyaWVzLmxhc3QoKS5z
ZWNvbmQuZ2V0KCksIFdURk1vdmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKIH0KIAotc3RhdGlj
IGJvb2wgcmVtb3ZlTGlzdGVuZXJGcm9tVmVjdG9yKEV2ZW50TGlzdGVuZXJWZWN0b3IqIGxpc3Rl
bmVyVmVjdG9yLCBFdmVudExpc3RlbmVyKiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlLCBzaXpl
X3QmIGluZGV4T2ZSZW1vdmVkTGlzdGVuZXIpCitzdGF0aWMgYm9vbCByZW1vdmVMaXN0ZW5lckZy
b21WZWN0b3IoRXZlbnRMaXN0ZW5lclZlY3RvciogbGlzdGVuZXJWZWN0b3IsIEV2ZW50TGlzdGVu
ZXImIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUsIHNpemVfdCYgaW5kZXhPZlJlbW92ZWRMaXN0
ZW5lcikKIHsKICAgICBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciByZWdpc3RlcmVkTGlzdGVuZXIo
bGlzdGVuZXIsIHVzZUNhcHR1cmUpOwogICAgIGluZGV4T2ZSZW1vdmVkTGlzdGVuZXIgPSBsaXN0
ZW5lclZlY3Rvci0+ZmluZChyZWdpc3RlcmVkTGlzdGVuZXIpOwpAQCAtMTI5LDcgKzEyOSw3IEBA
IHN0YXRpYyBib29sIHJlbW92ZUxpc3RlbmVyRnJvbVZlY3RvcihFdmVudExpc3RlbmVyVmVjdG9y
KiBsaXN0ZW5lclZlY3RvciwgRXZlbnRMCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRXZl
bnRMaXN0ZW5lck1hcDo6cmVtb3ZlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVu
dExpc3RlbmVyKiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlLCBzaXplX3QmIGluZGV4T2ZSZW1v
dmVkTGlzdGVuZXIpCitib29sIEV2ZW50TGlzdGVuZXJNYXA6OnJlbW92ZShjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVy
ZSwgc2l6ZV90JiBpbmRleE9mUmVtb3ZlZExpc3RlbmVyKQogewogICAgIGFzc2VydE5vQWN0aXZl
SXRlcmF0b3JzKCk7CiAKQEAgLTE4NSw3ICsxODUsNyBAQCBzdGF0aWMgdm9pZCBjb3B5TGlzdGVu
ZXJzTm90Q3JlYXRlZEZyb21NYXJrdXBUb1RhcmdldChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VAogICAgICAgICAvLyBFdmVudCBsaXN0ZW5lcnMgY3JlYXRlZCBmcm9tIG1hcmt1cCBoYXZlIGFs
cmVhZHkgYmVlbiB0cmFuc2ZlcmVkIHRvIHRoZSBzaGFkb3cgdHJlZSBkdXJpbmcgY2xvbmluZy4K
ICAgICAgICAgaWYgKGxpc3RlbmVyLmxpc3RlbmVyLT53YXNDcmVhdGVkRnJvbU1hcmt1cCgpKQog
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHRhcmdldC0+YWRkRXZlbnRMaXN0ZW5lcihl
dmVudFR5cGUsIGxpc3RlbmVyLmxpc3RlbmVyLmNvcHlSZWYoKSwgbGlzdGVuZXIudXNlQ2FwdHVy
ZSk7CisgICAgICAgIHRhcmdldC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsICpsaXN0ZW5l
ci5saXN0ZW5lciwgbGlzdGVuZXIudXNlQ2FwdHVyZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50TGlzdGVuZXJNYXAuaAppbmRleCA4OWZmNjY2OGQ3MmZmOTAxZDY4N2QzYjc3ZmIz
NDFiM2M2YjgxN2YwLi4xZWZlNmFiZjhjZWVkMmQ5NjNhYzc2MzE5MWMwYTJhOGZmOWI2MzMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmgKQEAgLTU0LDggKzU0LDggQEAgcHVi
bGljOgogICAgIGJvb2wgY29udGFpbnNDYXB0dXJpbmcoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUpIGNvbnN0OwogCiAgICAgdm9pZCBjbGVhcigpOwotICAgIGJvb2wgYWRkKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVz
ZUNhcHR1cmUpOwotICAgIGJvb2wgcmVtb3ZlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlLCBzaXplX3QmIGluZGV4T2ZSZW1vdmVk
TGlzdGVuZXIpOworICAgIGJvb2wgYWRkKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBS
ZWY8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKTsKKyAgICBib29sIHJlbW92ZShj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYsIGJvb2wgdXNlQ2Fw
dHVyZSwgc2l6ZV90JiBpbmRleE9mUmVtb3ZlZExpc3RlbmVyKTsKICAgICBFdmVudExpc3RlbmVy
VmVjdG9yKiBmaW5kKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKTsKICAgICBWZWN0b3I8
QXRvbWljU3RyaW5nPiBldmVudFR5cGVzKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJn
ZXQuY3BwCmluZGV4IGVjMjEwOTg2N2FjMzBkMGMzMWJlNjkyNjE2MzFjMzI1MTZmZWEzY2UuLmQy
NDgzODU5M2QxN2Y2YWI1NmQ2ZDkwOTk1ODU5MjkwNTZiMGUwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50VGFyZ2V0LmNwcApAQCAtNzUsMTIgKzc1LDI4IEBAIGJvb2wgRXZlbnRUYXJnZXQ6OmlzTWVz
c2FnZVBvcnQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBFdmVudFRhcmdl
dDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRy
PEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgRXZlbnRU
YXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJl
ZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgcmV0
dXJuIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpLmV2ZW50TGlzdGVuZXJNYXAuYWRkKGV2ZW50VHlw
ZSwgV1RGTW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOwogfQogCi1ib29sIEV2ZW50VGFyZ2V0
OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVu
dExpc3RlbmVyKiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQordm9pZCBFdmVudFRhcmdldDo6
YWRkRXZlbnRMaXN0ZW5lckZvckJpbmRpbmdzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorewor
ICAgIC8vIEZJWE1FOiBsaXN0ZW5lciBpcyBub3Qgc3VwcG9zZWQgdG8gYmUgbnVsbGFibGUuCisg
ICAgaWYgKCFsaXN0ZW5lcikKKyAgICAgICAgcmV0dXJuOworICAgIGFkZEV2ZW50TGlzdGVuZXIo
ZXZlbnRUeXBlLCBsaXN0ZW5lci5yZWxlYXNlTm9uTnVsbCgpLCB1c2VDYXB0dXJlKTsKK30KKwor
dm9pZCBFdmVudFRhcmdldDo6cmVtb3ZlRXZlbnRMaXN0ZW5lckZvckJpbmRpbmdzKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwg
Ym9vbCB1c2VDYXB0dXJlKQoreworICAgIC8vIEZJWE1FOiBsaXN0ZW5lciBpcyBub3Qgc3VwcG9z
ZWQgdG8gYmUgbnVsbGFibGUuCisgICAgaWYgKCFsaXN0ZW5lcikKKyAgICAgICAgcmV0dXJuOwor
ICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCAqbGlzdGVuZXIsIHVzZUNhcHR1cmUp
OworfQorCitib29sIEV2ZW50VGFyZ2V0OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0
dXJlKQogewogICAgIEV2ZW50VGFyZ2V0RGF0YSogZCA9IGV2ZW50VGFyZ2V0RGF0YSgpOwogICAg
IGlmICghZCkKQEAgLTExMCwxMiArMTI2LDEyIEBAIGJvb2wgRXZlbnRUYXJnZXQ6OnJlbW92ZUV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRXZlbnRUYXJnZXQ6OnNldEF0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4gbGlzdGVuZXIpCitib29sIEV2ZW50VGFyZ2V0OjpzZXRBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5l
cj4mJiBsaXN0ZW5lcikKIHsKICAgICBjbGVhckF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRU
eXBlKTsKICAgICBpZiAoIWxpc3RlbmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0
dXJuIGFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgZmFsc2UpOworICAgIHJl
dHVybiBhZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIucmVsZWFzZU5vbk51bGwo
KSwgZmFsc2UpOwogfQogCiBFdmVudExpc3RlbmVyKiBFdmVudFRhcmdldDo6Z2V0QXR0cmlidXRl
RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkKQEAgLTEzMiw3ICsx
NDgsNyBAQCBib29sIEV2ZW50VGFyZ2V0OjpjbGVhckF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpCiAgICAgRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIg
PSBnZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSk7CiAgICAgaWYgKCFsaXN0ZW5l
cikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiByZW1vdmVFdmVudExpc3RlbmVy
KGV2ZW50VHlwZSwgbGlzdGVuZXIsIGZhbHNlKTsKKyAgICByZXR1cm4gcmVtb3ZlRXZlbnRMaXN0
ZW5lcihldmVudFR5cGUsICpsaXN0ZW5lciwgZmFsc2UpOwogfQogCiBib29sIEV2ZW50VGFyZ2V0
OjpkaXNwYXRjaEV2ZW50Rm9yQmluZGluZ3MoRXZlbnQqIGV2ZW50LCBFeGNlcHRpb25Db2RlJiBl
YykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKaW5kZXggZjliMGYyMTE3NGY1NDE4ZDUxZjdkNTQz
ODFiMDFjODc4MjEyZWFhZi4uMWIxZGVkMTlhNWQ5Y2E1NjY0ZTUwYTk5OWQ2YzNlZmI5MmE3ZWU5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKQEAgLTEyMSwxNSArMTIxLDE4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIERPTVdpbmRvdyogdG9ET01XaW5kb3coKTsKICAgICB2aXJ0dWFsIGJv
b2wgaXNNZXNzYWdlUG9ydCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVy
PiYmLCBib29sIHVzZUNhcHR1cmUpOwotICAgIHZpcnR1YWwgYm9vbCByZW1vdmVFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1
c2VDYXB0dXJlKTsKKyAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXJGb3JCaW5kaW5ncyhjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNl
Q2FwdHVyZSk7CisgICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyRm9yQmluZGluZ3MoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVz
ZUNhcHR1cmUpOworICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJl
KTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYsIGJvb2wgdXNlQ2FwdHVyZSk7CisKICAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKICAgICB2aXJ0dWFsIGJvb2wg
ZGlzcGF0Y2hFdmVudChFdmVudCYpOwogICAgIGJvb2wgZGlzcGF0Y2hFdmVudEZvckJpbmRpbmdz
KEV2ZW50KiwgRXhjZXB0aW9uQ29kZSYpOyAvLyBET00gQVBJCiAgICAgdmlydHVhbCB2b2lkIHVu
Y2F1Z2h0RXhjZXB0aW9uSW5FdmVudEhhbmRsZXIoKTsKIAogICAgIC8vIFVzZWQgZm9yIGxlZ2Fj
eSAib25FdmVudCIgYXR0cmlidXRlIEFQSXMuCi0gICAgYm9vbCBzZXRBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlz
dGVuZXI+KTsKKyAgICBib29sIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmKTsKICAgICBib29sIGNs
ZWFyQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7
CiAgICAgRXZlbnRMaXN0ZW5lciogZ2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaWRsCmluZGV4
IDU5M2U0YzA2ODZhMDhiOTBjMTNlYmViZjZjZWMyODJmNGI3NmU4NWQuLmM1OTQ1ODk2ZTAwYTY2
NzU2MzkwMzlhMDg2MWZmNjY1NzVlZGJlMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0Lmlk
bApAQCAtMjUsOCArMjUsMTAgQEAKICAgICBKU0N1c3RvbVRvTmF0aXZlT2JqZWN0LAogICAgIE9i
akNQcm90b2NvbCwKIF0gaW50ZXJmYWNlIEV2ZW50VGFyZ2V0IHsKLSAgICBbT2JqQ0xlZ2FjeVVu
bmFtZWRQYXJhbWV0ZXJzXSB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoRE9NU3RyaW5nIHR5cGUsIEV2
ZW50TGlzdGVuZXI/IGxpc3RlbmVyLCBvcHRpb25hbCBib29sZWFuIHVzZUNhcHR1cmUgPSBmYWxz
ZSk7Ci0gICAgW09iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVyc10gdm9pZCByZW1vdmVFdmVudExp
c3RlbmVyKERPTVN0cmluZyB0eXBlLCBFdmVudExpc3RlbmVyPyBsaXN0ZW5lciwgb3B0aW9uYWwg
Ym9vbGVhbiB1c2VDYXB0dXJlID0gZmFsc2UpOworICAgIC8vIEZJWE1FOiBUaGUgJ3R5cGUnIGFu
ZCAnbGlzdGVuZXInIHBhcmFtZXRlcnMgc2hvdWxkIG5vdCBiZSBvcHRpb25hbC4KKyAgICBbT2Jq
Q0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzLCBJbXBsZW1lbnRlZEFzPWFkZEV2ZW50TGlzdGVuZXJG
b3JCaW5kaW5nc10gdm9pZCBhZGRFdmVudExpc3RlbmVyKFtBdG9taWNTdHJpbmddIG9wdGlvbmFs
IERPTVN0cmluZyB0eXBlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIEV2ZW50TGlzdGVuZXI/IGxp
c3RlbmVyLCBvcHRpb25hbCBib29sZWFuIHVzZUNhcHR1cmUgPSBmYWxzZSk7CisgICAgW09iakNM
ZWdhY3lVbm5hbWVkUGFyYW1ldGVycywgSW1wbGVtZW50ZWRBcz1yZW1vdmVFdmVudExpc3RlbmVy
Rm9yQmluZGluZ3NdIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihbQXRvbWljU3RyaW5nXSBvcHRp
b25hbCBET01TdHJpbmcgdHlwZSA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCBFdmVudExpc3RlbmVy
PyBsaXN0ZW5lciwgb3B0aW9uYWwgYm9vbGVhbiB1c2VDYXB0dXJlID0gZmFsc2UpOworCiAgICAg
Ly8gRklYTUU6IGV2ZW50IHNob3VsZCBub3QgYmUgbnVsbGFibGUuCiAgICAgW0ltcGxlbWVudGVk
QXM9ZGlzcGF0Y2hFdmVudEZvckJpbmRpbmdzLCBSYWlzZXNFeGNlcHRpb25dIGJvb2xlYW4gZGlz
cGF0Y2hFdmVudChFdmVudD8gZXZlbnQpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NZXNzYWdlUG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3Bw
CmluZGV4IDVhODRhNDRhMjA4YWJlYmU0MTNiOTlmMTFlNmY1MDExOWRhNDAyYjguLjNkNzg0N2Nh
ZWRiMjkyMGUzYjI2NGI2NTJiYzU0Y2JjMzQ3OGEzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQ
b3J0LmNwcApAQCAtMjIxLDkgKzIyMSw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydEFy
cmF5PiBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhTY3JpcHRFeGVjdXRpb25Db250CiAgICAg
cmV0dXJuIHBvcnRBcnJheTsKIH0KIAotYm9vbCBNZXNzYWdlUG9ydDo6YWRkRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYg
bGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgTWVzc2FnZVBvcnQ6OmFkZEV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYm
IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7Ci0gICAgaWYgKGxpc3RlbmVyICYmIGxpc3Rl
bmVyLT5pc0F0dHJpYnV0ZSgpICYmIGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkubWVzc2FnZUV2
ZW50KQorICAgIGlmIChsaXN0ZW5lci0+aXNBdHRyaWJ1dGUoKSAmJiBldmVudFR5cGUgPT0gZXZl
bnROYW1lcygpLm1lc3NhZ2VFdmVudCkKICAgICAgICAgc3RhcnQoKTsKICAgICByZXR1cm4gRXZl
bnRUYXJnZXRXaXRoSW5saW5lRGF0YTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdURk1v
dmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NZXNzYWdlUG9ydC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKaW5k
ZXggYmFlMDFkNWI5NTFkZDc4MjM3YWZkZjg3MjMxNGY4MjRkMTU3YjE2ZS4uOWNhMTI0ZjRhMmVm
Yzk4MWRmNTU2M2JiYmI3NTA0NmY3OWNmY2RlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL01lc3NhZ2VQb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgK
QEAgLTkyLDcgKzkyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBBIHBvcnQg
Z2V0cyBuZXV0ZXJlZCB3aGVuIGl0IGlzIHRyYW5zZmVycmVkIHRvIGEgbmV3IG93bmVyIHZpYSBw
b3N0TWVzc2FnZSgpLgogICAgICAgICBib29sIGlzTmV1dGVyZWQoKSB7IHJldHVybiAhbV9lbnRh
bmdsZWRDaGFubmVsOyB9CiAKLSAgICAgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VD
YXB0dXJlKSBvdmVycmlkZTsKKyAgICAgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0
dXJlKSBvdmVycmlkZTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0IE1lc3NhZ2VQ
b3J0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA0YzQ3NTEw
NGI3MjI2MDJhMzkzODhiZTEyMzlhOGU0NjM3ZjViYjVkLi5kMGM1ZDRjNDJlYWMzZTM2YmZiZjgw
NTkzNzkxNmNlODcyYTNmNzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xOTYwLDcgKzE5NjAsNyBA
QCB2b2lkIE5vZGU6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkK
ICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCB0cnlBZGRFdmVudExpc3RlbmVyKE5vZGUq
IHRhcmdldE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorc3RhdGljIGlubGluZSBib29s
IHRyeUFkZEV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1
cmUpCiB7CiAgICAgaWYgKCF0YXJnZXROb2RlLT5FdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5l
cihldmVudFR5cGUsIGxpc3RlbmVyLmNvcHlSZWYoKSwgdXNlQ2FwdHVyZSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTE5OTYsMTIgKzE5OTYsMTIgQEAgc3RhdGljIGlubGluZSBib29sIHRy
eUFkZEV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBl
dmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBOb2RlOjphZGRFdmVudExpc3RlbmVyKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0
ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBOb2RlOjphZGRFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwg
Ym9vbCB1c2VDYXB0dXJlKQogewogICAgIHJldHVybiB0cnlBZGRFdmVudExpc3RlbmVyKHRoaXMs
IGV2ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOwogfQogCi1zdGF0aWMg
aW5saW5lIGJvb2wgdHJ5UmVtb3ZlRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJnZXROb2RlLCBjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIsIGJvb2wg
dXNlQ2FwdHVyZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCB0cnlSZW1vdmVFdmVudExpc3RlbmVyKE5v
ZGUqIHRhcmdldE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3Rl
bmVyJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIGlmICghdGFyZ2V0Tm9kZS0+
RXZlbnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNl
Q2FwdHVyZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIwMzcsNyArMjAzNyw3IEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCB0cnlSZW1vdmVFdmVudExpc3RlbmVyKE5vZGUqIHRhcmdldE5vZGUs
IGNvbnN0IEF0b21pY1N0cmluZyYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBOb2RlOjpy
ZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExp
c3RlbmVyKiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBOb2RlOjpyZW1vdmVFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBs
aXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIHJldHVybiB0cnlSZW1vdmVFdmVudExp
c3RlbmVyKHRoaXMsIGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmgKaW5kZXggNTU3ZGRjYzExNzMxOTRhOGYwZGQxOTRjYjM2YjE3NjcwZTA0ZTM0OS4uMjA4ZTI4
OGYxNzk3NzJkYzlmOTIwMDc1YzQyNjdhMmI0ZWRlNDU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC01MDYs
OCArNTA2LDggQEAgcHVibGljOgogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0
SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsOyAvLyBJbXBsZW1lbnRlZCBpbiBE
b2N1bWVudC5oCiAKLSAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92
ZXJyaWRlOwotICAgIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBS
ZWY8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKKyAgICBib29s
IHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50
TGlzdGVuZXImLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogCiAgICAgdXNpbmcgRXZlbnRU
YXJnZXQ6OmRpc3BhdGNoRXZlbnQ7CiAgICAgYm9vbCBkaXNwYXRjaEV2ZW50KEV2ZW50Jikgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmVnaXN0ZXJlZEV2ZW50TGlz
dGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oCmlu
ZGV4IDEyNDgzZmE2MTE4OWUyZWUzZjQ0ODI2NGE2NWY1OTNlMjRjMDg5ZGIuLjFjYzY5Y2EyZTI4
MWU1ZTY1OGIzOGJhODY1YWI3MzBiMWU3YjU3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9S
ZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oCkBAIC0zMSw4ICszMSw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgIGNsYXNzIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyIHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5l
cj4gbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKLSAgICAgICAgICAgIDogbGlzdGVuZXIobGlz
dGVuZXIpCisgICAgICAgIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyKFJlZjxFdmVudExpc3RlbmVy
PiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorICAgICAgICAgICAgOiBsaXN0ZW5lcihXVEZN
b3ZlKGxpc3RlbmVyKSkKICAgICAgICAgICAgICwgdXNlQ2FwdHVyZSh1c2VDYXB0dXJlKQogICAg
ICAgICB7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CmluZGV4IDg3ZTgwM2IzZmM2NzM3ZmI0ZGY4YWNjMGE1YmU2MjE4MWM3ZmI1YTUuLjM4YmU0NGIy
NzhhZDk0ZThkNGM0ZTE5YWY0MzhiYWZmMWQyNDA2M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNTIxNiw3ICs1MjE2LDcgQEAgYm9vbCBIVE1MTWVkaWFF
bGVtZW50OjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBldmVudCkKICAgICByZXR1cm4gSFRNTEVsZW1l
bnQ6OmRpc3BhdGNoRXZlbnQoZXZlbnQpOwogfQogCi1ib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmFk
ZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVu
dExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIEhUTUxNZWRpYUVs
ZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJl
ZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgaWYg
KGV2ZW50VHlwZSAhPSBldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxp
dHljaGFuZ2VkRXZlbnQpCiAgICAgICAgIHJldHVybiBOb2RlOjphZGRFdmVudExpc3RlbmVyKGV2
ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOwpAQCAtNTIzNiw3ICs1MjM2
LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQor
Ym9vbCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJl
KQogewogICAgIGlmIChldmVudFR5cGUgIT0gZXZlbnROYW1lcygpLndlYmtpdHBsYXliYWNrdGFy
Z2V0YXZhaWxhYmlsaXR5Y2hhbmdlZEV2ZW50KQogICAgICAgICByZXR1cm4gTm9kZTo6cmVtb3Zl
RXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggYjM4OTM5OGIzM2FkNjdhMjgyY2ExMjNj
OTUyODlmNTJhNGE1MGYzNi4uNjY3OThhY2NjNzE3NmY2ODQwZTEwNmE4NWFiZDRlNDE5ZGI5ZWRj
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTM0NCw4ICszNDQs
OCBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAg
IHZvaWQgd2Via2l0U2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKCk7Ci0gICAgYm9vbCBhZGRFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKLSAgICBib29sIHJlbW92ZUV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBi
b29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNl
Q2FwdHVyZSkgb3ZlcnJpZGU7CisgICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiwgYm9vbCB1c2VDYXB0dXJlKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgd2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2UoKSBv
dmVycmlkZTsKICAgICBib29sIGNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKSBjb25z
dCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IDJmMzVi
MjliMzliNjcyOGRlMGJhODU3NWVkNzU2ODg4M2U1NzdjZTYuLjdmZDJjN2M5ZTU3NmE5NWFiMTRm
OWNkN2JlOWJjN2EwODBlM2ZhZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNw
cApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYpIG92ZXJyaWRlOworICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBFdmVudExpc3RlbmVyJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBoYW5k
bGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqKSBvdmVycmlkZTsKIAogICAg
IEltYWdlRG9jdW1lbnQmIG1fZG9jdW1lbnQ7CkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBJbWFn
ZURvY3VtZW50OjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpCiAgICAgICAgIC8vIFNldCB0aGUg
dmlld3BvcnQgdG8gYmUgaW4gZGV2aWNlIHBpeGVscyAocmF0aGVyIHRoYW4gdGhlIGRlZmF1bHQg
b2YgOTgwKS4KICAgICAgICAgcHJvY2Vzc1ZpZXdwb3J0KEFTQ0lJTGl0ZXJhbCgid2lkdGg9ZGV2
aWNlLXdpZHRoIiksIFZpZXdwb3J0QXJndW1lbnRzOjpJbWFnZURvY3VtZW50KTsKICNlbHNlCi0g
ICAgICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9IEltYWdlRXZlbnRMaXN0ZW5l
cjo6Y3JlYXRlKCp0aGlzKTsKKyAgICAgICAgYXV0byBsaXN0ZW5lciA9IEltYWdlRXZlbnRMaXN0
ZW5lcjo6Y3JlYXRlKCp0aGlzKTsKICAgICAgICAgaWYgKERPTVdpbmRvdyogd2luZG93ID0gdGhp
cy0+ZG9tV2luZG93KCkpCiAgICAgICAgICAgICB3aW5kb3ctPmFkZEV2ZW50TGlzdGVuZXIoInJl
c2l6ZSIsIGxpc3RlbmVyLmNvcHlSZWYoKSwgZmFsc2UpOwogICAgICAgICBpbWFnZUVsZW1lbnQt
PmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgV1RGTW92ZShsaXN0ZW5lciksIGZhbHNlKTsKQEAg
LTQwNyw3ICs0MDcsNyBAQCB2b2lkIEltYWdlRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50KiBldmVudCkKICAgICB9CiB9CiAKLWJvb2wgSW1h
Z2VFdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKQor
Ym9vbCBJbWFnZUV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYg
b3RoZXIpIGNvbnN0CiB7CiAgICAgLy8gQWxsIEltYWdlRXZlbnRMaXN0ZW5lciBvYmplY3RzIGNv
bXBhcmUgYXMgZXF1YWw7IE9LIHNpbmNlIHRoZXJlIGlzIG9ubHkgb25lIHBlciBkb2N1bWVudC4K
ICAgICByZXR1cm4gb3RoZXIudHlwZSgpID09IEltYWdlRXZlbnRMaXN0ZW5lclR5cGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcAppbmRl
eCBjZjdhYzRiY2ZmNzMyNGU5ZTAwMmE5YzcwNGYzMDIyZjkzMThmNjAyLi5kOTdkYTc4ZTU2MTEz
NzFhY2I0ZDI5ZGIwMGUwZWUwYmNjNzQ3ZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAKQEAgLTUwOSwxNSArNTA5LDE1IEBAIHZv
aWQgTWVkaWFDb250cm9sc0FwcGxlOjpzaG93Q2xvc2VkQ2FwdGlvblRyYWNrTGlzdCgpCiAgICAg
bV9wYW5lbC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHMs
IENTU1ZhbHVlTm9uZSk7CiAKICAgICBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciA9IGV2ZW50TGlz
dGVuZXIoKTsKLSAgICBtX2Nsb3NlZENhcHRpb25zQ29udGFpbmVyLT5hZGRFdmVudExpc3RlbmVy
KGV2ZW50TmFtZXMoKS53aGVlbEV2ZW50LCAmbGlzdGVuZXIsIHRydWUpOworICAgIG1fY2xvc2Vk
Q2FwdGlvbnNDb250YWluZXItPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLndoZWVsRXZl
bnQsIGxpc3RlbmVyLCB0cnVlKTsKIAogICAgIC8vIFRyYWNrIGNsaWNrIGV2ZW50cyBpbiB0aGUg
Y2FwdHVyZSBwaGFzZSBhdCB0d28gbGV2ZWxzLCBmaXJzdCBhdCB0aGUgZG9jdW1lbnQgbGV2ZWwK
ICAgICAvLyBzdWNoIHRoYXQgYSBjbGljayBvdXRzaWRlIG9mIHRoZSA8dmlkZW8+IG1heSBkaXNt
aXNzIHRoZSB0cmFjayBsaXN0LCBzZWNvbmQgYXQgdGhlCiAgICAgLy8gbWVkaWEgY29udHJvbHMg
bGV2ZWwgc3VjaCB0aGF0IGEgY2xpY2sgYW55d2hlcmUgb3V0c2lkZSBvZiB0aGUgdHJhY2sgbGlz
dCBoaWRlcyB0aGUKICAgICAvLyB0cmFjayBsaXN0LiBUaGVzZSB0d28gbGV2ZWxzIGFyZSBuZWNl
c3Nhcnkgc2luY2UgaXQgd291bGQgbm90IGJlIHBvc3NpYmxlIHRvIGdldCBhCiAgICAgLy8gcmVm
ZXJlbmNlIHRvIHRoZSB0cmFjayBsaXN0IHdoZW4gaGFuZGxpbmcgdGhlIGV2ZW50IG91dHNpZGUg
b2YgdGhlIHNoYWRvdyB0cmVlLgotICAgIGRvY3VtZW50KCkuYWRkRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkuY2xpY2tFdmVudCwgJmxpc3RlbmVyLCB0cnVlKTsKLSAgICBhZGRFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCAmbGlzdGVuZXIsIHRydWUpOworICAgIGRvY3Vt
ZW50KCkuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgbGlzdGVuZXIs
IHRydWUpOworICAgIGFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIGxp
c3RlbmVyLCB0cnVlKTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xzQXBwbGU6OmhpZGVDbG9zZWRD
YXB0aW9uVHJhY2tMaXN0KCkKQEAgLTUzMSw5ICs1MzEsOSBAQCB2b2lkIE1lZGlhQ29udHJvbHNB
cHBsZTo6aGlkZUNsb3NlZENhcHRpb25UcmFja0xpc3QoKQogICAgIG1fcGFuZWwtPnJlbW92ZUlu
bGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzKTsKIAogICAgIEV2ZW50
TGlzdGVuZXImIGxpc3RlbmVyID0gZXZlbnRMaXN0ZW5lcigpOwotICAgIG1fY2xvc2VkQ2FwdGlv
bnNDb250YWluZXItPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLndoZWVsRXZlbnQs
ICZsaXN0ZW5lciwgdHJ1ZSk7Ci0gICAgZG9jdW1lbnQoKS5yZW1vdmVFdmVudExpc3RlbmVyKGV2
ZW50TmFtZXMoKS5jbGlja0V2ZW50LCAmbGlzdGVuZXIsIHRydWUpOwotICAgIHJlbW92ZUV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsICZsaXN0ZW5lciwgdHJ1ZSk7CisgICAg
bV9jbG9zZWRDYXB0aW9uc0NvbnRhaW5lci0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVz
KCkud2hlZWxFdmVudCwgbGlzdGVuZXIsIHRydWUpOworICAgIGRvY3VtZW50KCkucmVtb3ZlRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgbGlzdGVuZXIsIHRydWUpOworICAg
IHJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIGxpc3RlbmVyLCB0
cnVlKTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xzQXBwbGU6OnNldEZ1bGxzY3JlZW5TbGlkZXJW
b2x1bWUoKQpAQCAtNTk1LDcgKzU5NSw3IEBAIHZvaWQgTWVkaWFDb250cm9sc0FwcGxlRXZlbnRM
aXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50CiAgICAg
fQogfQogCi1ib29sIE1lZGlhQ29udHJvbHNBcHBsZUV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0o
Y29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpCitib29sIE1lZGlhQ29udHJvbHNBcHBsZUV2
ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpIGNv
bnN0CiB7CiAgICAgaWYgKGNvbnN0IE1lZGlhQ29udHJvbHNBcHBsZUV2ZW50TGlzdGVuZXIqIG1l
ZGlhQ29udHJvbHNBcHBsZUV2ZW50TGlzdGVuZXIgPSBNZWRpYUNvbnRyb2xzQXBwbGVFdmVudExp
c3RlbmVyOjpjYXN0KCZsaXN0ZW5lcikpCiAgICAgICAgIHJldHVybiBtX21lZGlhQ29udHJvbHMg
PT0gbWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0ZW5lci0+bV9tZWRpYUNvbnRyb2xzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuaAppbmRleCA2
OThjYzM4OWQ5ZjJkNzIwMmJmMjQxZGNjMWJhZjczZjAzYmYwNDI5Li5mMjhkZDZiN2Y1MTQxMGIx
Y2RlZWQ0MmM4MzNlMGNmZjkzZDFjYzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICA6IDA7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlz
dGVuZXImIG90aGVyKSBvdmVycmlkZTsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRM
aXN0ZW5lciYgb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIE1lZGlhQ29u
dHJvbHNBcHBsZUV2ZW50TGlzdGVuZXIoTWVkaWFDb250cm9sc0FwcGxlKiBtZWRpYUNvbnRyb2xz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWRE
QkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJB
Z2VudC5jcHAKaW5kZXggNDQxNTQzMjE0NDhkMTE1NDVmMjExNDIyYzFkZmQ4MDM5ZjhlNjQ3MC4u
YWMwZWRkNDg2YWRmNGMyZGUwN2M4MmFhYWFjNmIzMTMxMDAyY2JlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC0x
MTIsNyArMTEyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+T3BlbkRhdGFiYXNlQ2FsbGJh
Y2soKSB7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhl
cikgb3ZlcnJpZGUKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3Ro
ZXIpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcyA9PSAmb3RoZXI7
CiAgICAgfQpAQCAtMzcxLDcgKzM3MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfk9wZW5D
dXJzb3JDYWxsYmFjaygpIHsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlz
dGVuZXImIG90aGVyKSBvdmVycmlkZQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExp
c3RlbmVyJiBvdGhlcikgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
ID09ICZvdGhlcjsKICAgICB9CkBAIC02NjAsNyArNjYwLDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB+Q2xlYXJPYmplY3RTdG9yZUxpc3RlbmVyKCkgeyB9CiAKLSAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3RoZXIpIG92ZXJyaWRlCisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMgPT0gJm90aGVyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcAppbmRleCBlNzgxYjdjYzRiOTFiYWJkZjMxZmQ3ODYyYjk4ODUxNzNiYWZiZTgwLi5iNzU0
MWVkMzg0MWM4NThiZjQwNzNiYjQ5YmYzYjljM2RiZWI5MTlmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCkBAIC0xNzI0LDcgKzE3MjQsNyBAQCBib29sIERPTVdpbmRvdzo6aXNTYW1lU2Vj
dXJpdHlPcmlnaW5Bc01haW5GcmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1i
b29sIERPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkK
K2Jvb2wgRE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQog
ewogICAgIGlmICghRXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEZN
b3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE4
MjcsNyArMTgyNyw3IEBAIHZvaWQgRE9NV2luZG93OjpyZXNldEFsbEdlb2xvY2F0aW9uUGVybWlz
c2lvbigpCiAjZW5kaWYKIH0KIAotYm9vbCBET01XaW5kb3c6OnJlbW92ZUV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBi
b29sIHVzZUNhcHR1cmUpCitib29sIERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wg
dXNlQ2FwdHVyZSkKIHsKICAgICBpZiAoIUV2ZW50VGFyZ2V0OjpyZW1vdmVFdmVudExpc3RlbmVy
KGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCA0YjI0Yjk5ODEzNzczMjc2MzhiNjRlNjg3ZDc1
ZmUyZmQ4ZDg3MmVlLi4wMTU4ZTE0MDY2Mjc0OGZjODk0ZjkyNTgxNGQ0NjI0ODFiZmFmNDFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKQEAgLTI3OSw4ICsyNzksOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgLy8gRXZlbnRzCiAgICAgICAgIC8vIEV2ZW50VGFyZ2V0IEFQSQot
ICAgICAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwot
ICAgICAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgICAg
ICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJl
ZjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgICAgICBi
b29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2
ZW50TGlzdGVuZXImLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIHJl
bW92ZUFsbEV2ZW50TGlzdGVuZXJzKCkgb3ZlcnJpZGU7CiAKICAgICAgICAgdXNpbmcgRXZlbnRU
YXJnZXQ6OmRpc3BhdGNoRXZlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQu
aAppbmRleCA5YjU3MzljYmE4MTY5YTA0ZmZhMTJlMTQ5MzI4YjdjMzQ1MzAwMmU5Li4wYmY0MTQ2
NDgxMWEwNDlhNTRlZjlmMjQ1ZWNiY2ZjMzMwNGU2MGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsTWVkaWFFbGVtZW50LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBoYW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgV2ViQ29yZTo6RXZlbnQqKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUZvckV2ZW50TmFtZShj
b25zdCBXVEY6OkF0b21pY1N0cmluZyYpOwotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVu
dExpc3RlbmVyJiByaHMpIGZpbmFsIHsgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6OkV2ZW50
TGlzdGVuZXIqPih0aGlzKSA9PSAmcmhzOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2
ZW50TGlzdGVuZXImIHJocykgY29uc3QgZmluYWwgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
V2ViQ29yZTo6RXZlbnRMaXN0ZW5lcio+KHRoaXMpID09ICZyaHM7IH0KIAogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcGxheSgpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGF1c2Uo
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KaW5kZXggYTRj
NmZhM2NkZTA2ZmVjZjE5NGM1YTIyOTJmYmVkNWM0NDdjMmQ5My4uZjViY2IxMmIzOTlmMGVjOTZm
MWEwN2RmZjhjYmYzMmY0MDRkZmExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVs
ZW1lbnQubW0KQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1l
ZGlhRWxlbWVudDo6c2V0TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGkKIAogICAg
IGlmIChtX21lZGlhRWxlbWVudCAmJiBtX2lzTGlzdGVuaW5nKSB7CiAgICAgICAgIGZvciAoYXV0
byYgZXZlbnROYW1lIDogb2JzZXJ2ZWRFdmVudE5hbWVzKCkpCi0gICAgICAgICAgICBtX21lZGlh
RWxlbWVudC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIHRoaXMsIGZhbHNlKTsKKyAg
ICAgICAgICAgIG1fbWVkaWFFbGVtZW50LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwg
KnRoaXMsIGZhbHNlKTsKICAgICB9CiAgICAgbV9pc0xpc3RlbmluZyA9IGZhbHNlOwogCkBAIC05
OSw3ICs5OSw3IEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnNl
dE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGZvciAoYXV0byYgZXZlbnROYW1lIDogb2JzZXJ2ZWRFdmVudE5hbWVzKCkpCi0gICAgICAg
IG1fbWVkaWFFbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdGhpcywgZmFsc2Up
OworICAgICAgICBtX21lZGlhRWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsICp0
aGlzLCBmYWxzZSk7CiAgICAgbV9pc0xpc3RlbmluZyA9IHRydWU7CiAKICAgICB1cGRhdGVGb3JF
dmVudE5hbWUoZXZlbnROYW1lQWxsKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50LmgKaW5kZXggNzE5YTI1NzBjMGZkYjgyN2QwZTZkM2ZmYTFlNmJlMzM0ZDgyM2ZkYS4uNjY1
YmUxZWE4MTk4ZWIxY2I1Y2VmYTg3YThjMDEwODdkZDAxODBmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbFZpZGVvRWxlbWVudC5oCkBAIC01OSw4ICs1OSw3IEBAIHB1YmxpYzoKICAgICAKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZUV2ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBXZWJDb3JlOjpFdmVudCopIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlRm9y
RXZlbnROYW1lKGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJik7Ci0gICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEV2ZW50TGlzdGVuZXImIHJocykgb3ZlcnJpZGUKLSAgICAgICAge3JldHVybiBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpFdmVudExpc3RlbmVyKj4odGhpcykgPT0gJnJoczt9CisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIHJocykgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RXZlbnRMaXN0ZW5lcio+KHRoaXMpID09ICZyaHM7
IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxN
ZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJpZGU7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0xheWVyRnJhbWUoRmxvYXRSZWN0KSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCBmYzgzMWU2NzY1OGJhMDliODlhODNiMWU3
NTg5YTAwMWNiYjU5NTUxLi5hYjI0NWQ1N2Y1ODliZGJkMDU0MTRhNzg4NDI5N2I4MjJkMGNkNjdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC01MjgsNyArNTI4LDcgQEAgYm9vbCBT
VkdFbGVtZW50OjpoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKQogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFNWR0VsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVz
ZUNhcHR1cmUpCitib29sIFNWR0VsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVz
ZUNhcHR1cmUpCiB7ICAgCiAgICAgLy8gQWRkIGV2ZW50IGxpc3RlbmVyIHRvIHJlZ3VsYXIgRE9N
IGVsZW1lbnQKICAgICBpZiAoIU5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0
ZW5lci5jb3B5UmVmKCksIHVzZUNhcHR1cmUpKQpAQCAtNTQ4LDcgKzU0OCw3IEBAIGJvb2wgU1ZH
RWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
UmVmUHRyPEV2ZW50TGlzCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgU1ZHRWxlbWVudDo6
cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRM
aXN0ZW5lciogbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgU1ZHRWxlbWVudDo6cmVt
b3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0
ZW5lciYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICBpZiAoY29udGFpbmluZ1No
YWRvd1Jvb3QoKSkKICAgICAgICAgcmV0dXJuIE5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZl
bnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CkBAIC01NTgsNyArNTU4LDcgQEAgYm9vbCBT
VkdFbGVtZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBFdmVudExpc3RlbmUKICAgICAvLyBldmVudCBsaXN0ZW5lciBpbiBhIGNhY2hlLiBJZiB3
ZSB3YW50IHRvIGJlIGFibGUgdG8gY2FsbCByZW1vdmVFdmVudExpc3RlbmVyKCkgbXVsdGlwbGUK
ICAgICAvLyB0aW1lcyBvbiBkaWZmZXJlbnQgbm9kZXMsIHdlIGhhdmUgdG8gZGVsYXkgaXRzIGlt
bWVkaWF0ZSBkZXN0cnVjdGlvbiwgd2hpY2ggd291bGQgaGFwcGVuCiAgICAgLy8gYWZ0ZXIgdGhl
IGZpcnN0IGNhbGwgYmVsb3cuCi0gICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IHByb3RlY3Rvcihs
aXN0ZW5lcik7CisgICAgUmVmPEV2ZW50TGlzdGVuZXI+IHByb3RlY3RvcihsaXN0ZW5lcik7CiAK
ICAgICAvLyBSZW1vdmUgZXZlbnQgbGlzdGVuZXIgZnJvbSByZWd1bGFyIERPTSBlbGVtZW50CiAg
ICAgaWYgKCFOb2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVz
ZUNhcHR1cmUpKQpAQCAtNTczLDcgKzU3Myw3IEBAIGJvb2wgU1ZHRWxlbWVudDo6cmVtb3ZlRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAvLyBUaGlzIGNhc2UgY2FuIG9ubHkgYmUg
aGl0IGZvciBldmVudCBsaXN0ZW5lcnMgY3JlYXRlZCBmcm9tIG1hcmt1cAotICAgICAgICBBU1NF
UlQobGlzdGVuZXItPndhc0NyZWF0ZWRGcm9tTWFya3VwKCkpOworICAgICAgICBBU1NFUlQobGlz
dGVuZXIud2FzQ3JlYXRlZEZyb21NYXJrdXAoKSk7CiAKICAgICAgICAgLy8gSWYgdGhlIGV2ZW50
IGxpc3RlbmVyICdsaXN0ZW5lcicgaGFzIGJlZW4gY3JlYXRlZCBmcm9tIG1hcmt1cCBhbmQgaGFz
IGJlZW4gZmlyZWQgYmVmb3JlCiAgICAgICAgIC8vIHRoZW4gSlNMYXp5RXZlbnRMaXN0ZW5lcjo6
cGFyc2VDb2RlKCkgaGFzIGJlZW4gY2FsbGVkIGFuZCBtX2pzRnVuY3Rpb24gb2YgdGhhdCBsaXN0
ZW5lcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5kZXggMzgxNjgxMDJhZjVlZTc1YWY3ODdjYjBm
ZTE1YThlN2EyYmE3MWNmYi4uOTZkNmM5MDQ2MzFhYjA5NDg4ZmI1YjZhYWJhZWUyMGZjNjJjMzdi
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC0xMzMsOCArMTMzLDggQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCBib29sIGhhdmVMb2FkZWRSZXF1aXJlZFJlc291cmNlcygpOwogCi0gICAg
Ym9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKLSAgICBib29s
IHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50
TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgIGJvb2wgYWRkRXZlbnRM
aXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+
JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CisgICAgYm9vbCByZW1vdmVFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiwgYm9vbCB1
c2VDYXB0dXJlKSBvdmVycmlkZTsKICAgICBib29sIGhhc0ZvY3VzRXZlbnRMaXN0ZW5lcnMoKSBj
b25zdDsKIAogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVs
ZW1lbnQuY3BwCmluZGV4IGM3ZDg0NmVhMjMxYWUxNTBkYTgxMmRmYTc4NTk3MzgxMWVlYzM2YWEu
LjZkZGJiNzYyN2RhNGY3OWM0MWVmY2U0NjZhYTY1NjhlZDdkM2ZjY2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RSZWZFbGVtZW50LmNwcApAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgogICAgIGV4
cGxpY2l0IFNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyKFNWR1RSZWZFbGVtZW50JiB0cmVmRWxl
bWVudCk7CiAKICAgICB2b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBF
dmVudCopIG92ZXJyaWRlOwotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVy
Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIFNWR1RSZWZFbGVtZW50JiBtX3RyZWZFbGVtZW50OwogICAg
IFJlZlB0cjxFbGVtZW50PiBtX3RhcmdldDsKQEAgLTkyLDggKzkyLDggQEAgdm9pZCBTVkdUUmVm
VGFyZ2V0RXZlbnRMaXN0ZW5lcjo6YXR0YWNoKFJlZlB0cjxFbGVtZW50PiYmIHRhcmdldCkKICAg
ICBBU1NFUlQodGFyZ2V0LmdldCgpKTsKICAgICBBU1NFUlQodGFyZ2V0LT5pbkRvY3VtZW50KCkp
OwogCi0gICAgdGFyZ2V0LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5ET01TdWJ0cmVl
TW9kaWZpZWRFdmVudCwgdGhpcywgZmFsc2UpOwotICAgIHRhcmdldC0+YWRkRXZlbnRMaXN0ZW5l
cihldmVudE5hbWVzKCkuRE9NTm9kZVJlbW92ZWRGcm9tRG9jdW1lbnRFdmVudCwgdGhpcywgZmFs
c2UpOworICAgIHRhcmdldC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuRE9NU3VidHJl
ZU1vZGlmaWVkRXZlbnQsICp0aGlzLCBmYWxzZSk7CisgICAgdGFyZ2V0LT5hZGRFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5ET01Ob2RlUmVtb3ZlZEZyb21Eb2N1bWVudEV2ZW50LCAqdGhpcywg
ZmFsc2UpOwogICAgIG1fdGFyZ2V0ID0gV1RGTW92ZSh0YXJnZXQpOwogfQogCkBAIC0xMDIsMTIg
KzEwMiwxMiBAQCB2b2lkIFNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjpkZXRhY2goKQogICAg
IGlmICghaXNBdHRhY2hlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3RhcmdldC0+cmVt
b3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuRE9NU3VidHJlZU1vZGlmaWVkRXZlbnQsIHRo
aXMsIGZhbHNlKTsKLSAgICBtX3RhcmdldC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVz
KCkuRE9NTm9kZVJlbW92ZWRGcm9tRG9jdW1lbnRFdmVudCwgdGhpcywgZmFsc2UpOworICAgIG1f
dGFyZ2V0LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5ET01TdWJ0cmVlTW9kaWZp
ZWRFdmVudCwgKnRoaXMsIGZhbHNlKTsKKyAgICBtX3RhcmdldC0+cmVtb3ZlRXZlbnRMaXN0ZW5l
cihldmVudE5hbWVzKCkuRE9NTm9kZVJlbW92ZWRGcm9tRG9jdW1lbnRFdmVudCwgKnRoaXMsIGZh
bHNlKTsKICAgICBtX3RhcmdldCA9IG51bGxwdHI7CiB9CiAKLWJvb2wgU1ZHVFJlZlRhcmdldEV2
ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpCiti
b29sIFNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlz
dGVuZXImIGxpc3RlbmVyKSBjb25zdAogewogICAgIGlmIChjb25zdCBTVkdUUmVmVGFyZ2V0RXZl
bnRMaXN0ZW5lciogdGFyZ2V0TGlzdGVuZXIgPSBTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcjo6
Y2FzdCgmbGlzdGVuZXIpKQogICAgICAgICByZXR1cm4gJm1fdHJlZkVsZW1lbnQgPT0gJnRhcmdl
dExpc3RlbmVyLT5tX3RyZWZFbGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0
aW9uL1NWR1NNSUxFbGVtZW50LmNwcAppbmRleCA3YjI5ODcwZjNlMmQ0Y2ZjNTBiMGQxMjRjYjEy
MzlmNGMzZTc1NGU2Li4wZDI0YTYxNzRmYmYxYTk0YmYyYWQ3ZDk5MGRlMzA0MjU4ODgyMGM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcApA
QCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICA6IG51bGxwdHI7CiAgICAgfQog
Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKSBvdmVycmlk
ZTsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3RoZXIpIGNvbnN0
IG92ZXJyaWRlOwogICAgIAogICAgIHZvaWQgZGlzY29ubmVjdEFuaW1hdGlvbigpCiAgICAgewpA
QCAtOTcsNyArOTcsNyBAQCBwcml2YXRlOgogICAgIFNWR1NNSUxFbGVtZW50OjpDb25kaXRpb24q
IG1fY29uZGl0aW9uOwogfTsKIAotYm9vbCBDb25kaXRpb25FdmVudExpc3RlbmVyOjpvcGVyYXRv
cj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyKQorYm9vbCBDb25kaXRpb25FdmVudExp
c3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyKSBjb25zdAog
ewogICAgIGlmIChjb25zdCBDb25kaXRpb25FdmVudExpc3RlbmVyKiBjb25kaXRpb25FdmVudExp
c3RlbmVyID0gQ29uZGl0aW9uRXZlbnRMaXN0ZW5lcjo6Y2FzdCgmbGlzdGVuZXIpKQogICAgICAg
ICByZXR1cm4gbV9hbmltYXRpb24gPT0gY29uZGl0aW9uRXZlbnRMaXN0ZW5lci0+bV9hbmltYXRp
b24gJiYgbV9jb25kaXRpb24gPT0gY29uZGl0aW9uRXZlbnRMaXN0ZW5lci0+bV9jb25kaXRpb247
CkBAIC01NDUsNyArNTQ1LDcgQEAgdm9pZCBTVkdTTUlMRWxlbWVudDo6Y29ubmVjdENvbmRpdGlv
bnMoKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgQVNTRVJUKCFjb25k
aXRpb24ubV9ldmVudExpc3RlbmVyKTsKICAgICAgICAgICAgIGNvbmRpdGlvbi5tX2V2ZW50TGlz
dGVuZXIgPSBDb25kaXRpb25FdmVudExpc3RlbmVyOjpjcmVhdGUodGhpcywgJmNvbmRpdGlvbik7
Ci0gICAgICAgICAgICBldmVudEJhc2UtPmFkZEV2ZW50TGlzdGVuZXIoY29uZGl0aW9uLm1fbmFt
ZSwgY29uZGl0aW9uLm1fZXZlbnRMaXN0ZW5lciwgZmFsc2UpOworICAgICAgICAgICAgZXZlbnRC
YXNlLT5hZGRFdmVudExpc3RlbmVyKGNvbmRpdGlvbi5tX25hbWUsICpjb25kaXRpb24ubV9ldmVu
dExpc3RlbmVyLCBmYWxzZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY29uZGl0aW9uLm1fdHlwZSA9
PSBDb25kaXRpb246OlN5bmNiYXNlKSB7CiAgICAgICAgICAgICBBU1NFUlQoIWNvbmRpdGlvbi5t
X2Jhc2VJRC5pc0VtcHR5KCkpOwogICAgICAgICAgICAgY29uZGl0aW9uLm1fc3luY2Jhc2UgPSB0
cmVlU2NvcGUoKS5nZXRFbGVtZW50QnlJZChjb25kaXRpb24ubV9iYXNlSUQpOwpAQCAtNTc3LDcg
KzU3Nyw3IEBAIHZvaWQgU1ZHU01JTEVsZW1lbnQ6OmRpc2Nvbm5lY3RDb25kaXRpb25zKCkKICAg
ICAgICAgICAgIC8vIG91ciBjb25kaXRpb24gZXZlbnQgbGlzdGVuZXIsIGluIGNhc2UgaXQgbGF0
ZXIgZmlyZXMuCiAgICAgICAgICAgICBFbGVtZW50KiBldmVudEJhc2UgPSBldmVudEJhc2VGb3Io
Y29uZGl0aW9uKTsKICAgICAgICAgICAgIGlmIChldmVudEJhc2UpCi0gICAgICAgICAgICAgICAg
ZXZlbnRCYXNlLT5yZW1vdmVFdmVudExpc3RlbmVyKGNvbmRpdGlvbi5tX25hbWUsIGNvbmRpdGlv
bi5tX2V2ZW50TGlzdGVuZXIuZ2V0KCksIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBldmVudEJh
c2UtPnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uZGl0aW9uLm1fbmFtZSwgKmNvbmRpdGlvbi5tX2V2
ZW50TGlzdGVuZXIsIGZhbHNlKTsKICAgICAgICAgICAgIGNvbmRpdGlvbi5tX2V2ZW50TGlzdGVu
ZXItPmRpc2Nvbm5lY3RBbmltYXRpb24oKTsKICAgICAgICAgICAgIGNvbmRpdGlvbi5tX2V2ZW50
TGlzdGVuZXIgPSBudWxscHRyOwogICAgICAgICB9IGVsc2UgaWYgKGNvbmRpdGlvbi5tX3R5cGUg
PT0gQ29uZGl0aW9uOjpTeW5jYmFzZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
RE9NRXZlbnRzQ2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01FdmVudHNDbGFzc2Vz
LmNwcAppbmRleCA4MGI0ZDJlYWNiYjVjZmQ3YzNlNWVmYzcxZWE5YTFlYTE0ZmNhM2JlLi5mMGIz
MTAwNGJlOGUzNjMzN2FlNmZlN2I5NGJlOWFkOGYxYjJlZjU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9ET01FdmVudHNDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9E
T01FdmVudHNDbGFzc2VzLmNwcApAQCAtNjgsNyArNjgsNyBAQCBXZWJFdmVudExpc3RlbmVyOjp+
V2ViRXZlbnRMaXN0ZW5lcigpCiAgICAgbV9pRE9NRXZlbnRMaXN0ZW5lci0+UmVsZWFzZSgpOwog
fQogCi1ib29sIFdlYkV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0oY29uc3QgV2ViQ29yZTo6RXZl
bnRMaXN0ZW5lciYgb3RoZXIpCitib29sIFdlYkV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0oY29u
c3QgV2ViQ29yZTo6RXZlbnRMaXN0ZW5lciYgb3RoZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIChv
dGhlci50eXBlKCkgPT0gQ1BQRXZlbnRMaXN0ZW5lclR5cGUgCiAgICAgICAgICYmIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgV2ViRXZlbnRMaXN0ZW5lcio+KCZvdGhlciktPm1faURPTUV2ZW50TGlz
dGVuZXIgPT0gbV9pRE9NRXZlbnRMaXN0ZW5lcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3dpbi9ET01FdmVudHNDbGFzc2VzLmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01FdmVudHNDbGFz
c2VzLmgKaW5kZXggNGFiMmNlZTFjMWYzMmE5OWI3MDljY2Y0ODI3ODcyMDU4ZTE2ZGM1ZS4uMTUy
NmY5ZDc2ZDEyMWY1Nzk2ZWM4YjQyMmFhNDI5NmVhMTMyNDJhYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vRE9NRXZlbnRzQ2xhc3Nlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0RP
TUV2ZW50c0NsYXNzZXMuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBXZWJFdmVudExpc3RlbmVy
IDogcHVibGljIFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIgewogcHVibGljOgogICAgIFdlYkV2ZW50
TGlzdGVuZXIoSURPTUV2ZW50TGlzdGVuZXIqKTsKICAgICB+V2ViRXZlbnRMaXN0ZW5lcigpOwot
ICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImKTsKKyAgICB2
aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJikgY29uc3Q7CiAgICAg
dmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBXZWJDb3JlOjpFdmVudCopOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkV2ZW50TGlzdGVu
ZXI+IGNyZWF0ZShJRE9NRXZlbnRMaXN0ZW5lciopOwogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0
aW9uLmgKaW5kZXggNjNhNDhhYzU2MDZiNzQ0YTk1MTFhMjdlNjYyYzgxODA1MmZlYjEzZS4uZjYz
Mzk3MDFlNjYwMTA5ZTI5MWE4ZmMwYzViOTFhNDk4OWEzNGViZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0
aW9uLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFBERlBsdWdpbkFubm90YXRpb25FdmVudExpc3RlbmVyKGFubm90YXRpb24pKTsK
ICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVy
JiBsaXN0ZW5lcikgb3ZlcnJpZGUgeyByZXR1cm4gdGhpcyA9PSAmbGlzdGVuZXI7IH0KKyAgICAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0aGlzID09ICZsaXN0ZW5lcjsgfQogCiAgICAgICAgIHZvaWQgc2V0
QW5ub3RhdGlvbihQREZQbHVnaW5Bbm5vdGF0aW9uKiBhbm5vdGF0aW9uKSB7IG1fYW5ub3RhdGlv
biA9IGFubm90YXRpb247IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tCmluZGV4IDQ3YmE5YzI5
MzUxODRhNTU4MGQ5ZTY3NWM3MjVlYzI3YWNiZjNhM2MuLjNjYTdlNDg5ODg3Y2ZlNThjNDNjOGVh
NzQzNDZlMWM0Nzg3Y2VhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24ubW0KQEAgLTY5LDggKzY5
LDggQEAgdm9pZCBQREZQbHVnaW5Bbm5vdGF0aW9uOjphdHRhY2goRWxlbWVudCogcGFyZW50KQog
ICAgIG1fZWxlbWVudCA9IGNyZWF0ZUFubm90YXRpb25FbGVtZW50KCk7CiAKICAgICBtX2VsZW1l
bnQtPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsICJhbm5vdGF0aW9uIik7Ci0gICAgbV9lbGVtZW50
LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jaGFuZ2VFdmVudCwgbV9ldmVudExpc3Rl
bmVyLCBmYWxzZSk7Ci0gICAgbV9lbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMo
KS5ibHVyRXZlbnQsIG1fZXZlbnRMaXN0ZW5lciwgZmFsc2UpOworICAgIG1fZWxlbWVudC0+YWRk
RXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2hhbmdlRXZlbnQsICptX2V2ZW50TGlzdGVuZXIs
IGZhbHNlKTsKKyAgICBtX2VsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJs
dXJFdmVudCwgKm1fZXZlbnRMaXN0ZW5lciwgZmFsc2UpOwogCiAgICAgdXBkYXRlR2VvbWV0cnko
KTsKIApAQCAtODcsOCArODcsOCBAQCB2b2lkIFBERlBsdWdpbkFubm90YXRpb246OmNvbW1pdCgp
CiAKIFBERlBsdWdpbkFubm90YXRpb246On5QREZQbHVnaW5Bbm5vdGF0aW9uKCkKIHsKLSAgICBt
X2VsZW1lbnQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNoYW5nZUV2ZW50LCBt
X2V2ZW50TGlzdGVuZXIuZ2V0KCksIGZhbHNlKTsKLSAgICBtX2VsZW1lbnQtPnJlbW92ZUV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLmJsdXJFdmVudCwgbV9ldmVudExpc3RlbmVyLmdldCgpLCBm
YWxzZSk7CisgICAgbV9lbGVtZW50LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5j
aGFuZ2VFdmVudCwgKm1fZXZlbnRMaXN0ZW5lciwgZmFsc2UpOworICAgIG1fZWxlbWVudC0+cmVt
b3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYmx1ckV2ZW50LCAqbV9ldmVudExpc3RlbmVy
LCBmYWxzZSk7CiAKICAgICBtX2V2ZW50TGlzdGVuZXItPnNldEFubm90YXRpb24oMCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
UGFzc3dvcmRGaWVsZC5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luUGFzc3dvcmRGaWVsZC5tbQppbmRleCBiMmEzYzdmMGZlZmE1YmIwZjU3ZjEzNWQz
YjM2YWM3MDIxN2VkZDdiLi42Nzc2NDc1NzJkNmZhMjAxZGMzMjkzM2RiMzFiMDZkZmM5MWIwODFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpblBhc3N3b3JkRmllbGQubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tCkBAIC00OSwxNCArNDksMTQgQEAgUmVm
PFBERlBsdWdpblBhc3N3b3JkRmllbGQ+IFBERlBsdWdpblBhc3N3b3JkRmllbGQ6OmNyZWF0ZShQ
REZMYXllckNvbnRyb2xsZXIgKnAKIAogUERGUGx1Z2luUGFzc3dvcmRGaWVsZDo6flBERlBsdWdp
blBhc3N3b3JkRmllbGQoKQogewotICAgIGVsZW1lbnQoKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkua2V5dXBFdmVudCwgZXZlbnRMaXN0ZW5lcigpLCBmYWxzZSk7CisgICAgZWxl
bWVudCgpLT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5rZXl1cEV2ZW50LCAqZXZl
bnRMaXN0ZW5lcigpLCBmYWxzZSk7CiB9CiAKIFBhc3NSZWZQdHI8RWxlbWVudD4gUERGUGx1Z2lu
UGFzc3dvcmRGaWVsZDo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKQogewogICAgIFJlZlB0cjxF
bGVtZW50PiBlbGVtZW50ID0gUERGUGx1Z2luVGV4dEFubm90YXRpb246OmNyZWF0ZUFubm90YXRp
b25FbGVtZW50KCk7CiAgICAgZWxlbWVudC0+c2V0QXR0cmlidXRlKHR5cGVBdHRyLCAicGFzc3dv
cmQiKTsKLSAgICBlbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5rZXl1cEV2
ZW50LCBldmVudExpc3RlbmVyKCksIGZhbHNlKTsKKyAgICBlbGVtZW50LT5hZGRFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5rZXl1cEV2ZW50LCAqZXZlbnRMaXN0ZW5lcigpLCBmYWxzZSk7CiAg
ICAgcmV0dXJuIGVsZW1lbnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tCmlu
ZGV4IGZiZWQzYTZmZGE2ODkzZDhkMmU1NTM1ZGI0MzNkZDI5NDcxNmZiMTcuLjhjMDc0NjljNmQ1
OGFiMTc2MjgxODA4OGRiZTE5NTYyYzM3OGZjYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3Rh
dGlvbi5tbQpAQCAtNzgsNyArNzgsNyBAQCBSZWY8UERGUGx1Z2luVGV4dEFubm90YXRpb24+IFBE
RlBsdWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGUoUERGQW5ub3RhdGlvbiAqYW5ubwogCiBQREZQ
bHVnaW5UZXh0QW5ub3RhdGlvbjo6flBERlBsdWdpblRleHRBbm5vdGF0aW9uKCkKIHsKLSAgICBl
bGVtZW50KCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleWRvd25FdmVudCwg
ZXZlbnRMaXN0ZW5lcigpLCBmYWxzZSk7CisgICAgZWxlbWVudCgpLT5yZW1vdmVFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQsICpldmVudExpc3RlbmVyKCksIGZhbHNlKTsK
IH0KIAogUGFzc1JlZlB0cjxFbGVtZW50PiBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6Y3JlYXRl
QW5ub3RhdGlvbkVsZW1lbnQoKQpAQCAtOTcsNyArOTcsNyBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+
IFBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpCiAgICAg
ZWxzZQogICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpbnB1dFRhZywg
ZmFsc2UpOwogCi0gICAgZWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkua2V5
ZG93bkV2ZW50LCBldmVudExpc3RlbmVyKCksIGZhbHNlKTsKKyAgICBlbGVtZW50LT5hZGRFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQsICpldmVudExpc3RlbmVyKCksIGZh
bHNlKTsKIAogICAgIFN0eWxlZEVsZW1lbnQqIHN0eWxlZEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxT
dHlsZWRFbGVtZW50Kj4oZWxlbWVudC5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmOTFlODNjMjIxZmUxNzdm
YWUxNzhhZTg5ZWRkYTA0Y2NmMjY1NmZiLi5kMDcyZWViODE1NWM2MGQ1NzVkMzQxNzM5ODg3M2Rk
NzJhOGMyOGEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMDUtMTggIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBHZW5lcmF0ZSBiaW5kaW5ncyBjb2RlIGZv
ciBFdmVudFRhcmdldC5hZGRFdmVudExpc3RlbmVyKCkgLyByZW1vdmVFdmVudExpc3RlbmVyKCkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Nzg4Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlYmFzZWxp
bmUgZXhpc3RpbmcgdGVzdCBub3cgdGhhdCB0aGUgJ2xlbmd0aCcgcHJvcGVydHkgb2YgdGhvc2Ug
ZnVuY3Rpb25zCisgICAgICAgIGhhdmUgY2hhbmdlZC4gVGhpcyBpcyBiZWNhdXNlIHRoZSBJREwg
aGFzIGJlZW4gdXBkYXRlZCB0byBtYXRjaCBvdXIKKyAgICAgICAgaW1wbGVtZW50YXRpb24gKGFs
bCBwYXJhbWV0ZXJzIGFyZSBvcHRpb25hbCkuIFdoaWxlIHRoaXMgZG9lcyBub3QgbWF0Y2gKKyAg
ICAgICAgdGhlIHNwZWNpZmljYXRpb24sIHRoZSBuZXcgbGVuZ3RoIG5vdyBtYXRjaGVzIG91ciBh
Y3R1YWwgYmVoYXZpb3IuCisKKyAgICAgICAgKiBqcy9kb20vZnVuY3Rpb24tbGVuZ3RoLWV4cGVj
dGVkLnR4dDoKKwogMjAxNi0wNS0xOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3Jm
LmNhbm9uLmZyPgogCiAgICAgICAgIFN5bmMgRE9NIGV4Y2VwdGlvbiB0eXBlcyB3aXRoIFdlYklE
TCBhbmQgdXBkYXRlIHByb21pc2UgcmVqZWN0aW9ucwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvZG9tL2Z1bmN0aW9uLWxlbmd0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20v
ZnVuY3Rpb24tbGVuZ3RoLWV4cGVjdGVkLnR4dAppbmRleCA0YTM2Yjk4ZjZiOGMyMjA4MjRiYjky
ZWEwODVhYzEzYTYwNGI0N2VhLi5lOTViZTUwZTUwNjVhZDc3MTZjYjU4OTMwZjQ4ZTIzMTc0YTRh
OTU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9kb20vZnVuY3Rpb24tbGVuZ3RoLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZnVuY3Rpb24tbGVuZ3RoLWV4cGVjdGVk
LnR4dApAQCAtOCw3ICs4LDcgQEAgUEFTUyB3aW5kb3cub3Blbi5sZW5ndGggaXMgMgogUEFTUyB3
aW5kb3cuc2hvd01vZGFsRGlhbG9nLmxlbmd0aCBpcyAxCiBQQVNTIHdpbmRvdy5zZXRUaW1lb3V0
Lmxlbmd0aCBpcyAxCiBQQVNTIHdpbmRvdy5jbGVhclRpbWVvdXQubGVuZ3RoIGlzIDAKLVBBU1Mg
d2luZG93LmFkZEV2ZW50TGlzdGVuZXIubGVuZ3RoIGlzIDIKK0ZBSUwgd2luZG93LmFkZEV2ZW50
TGlzdGVuZXIubGVuZ3RoIHNob3VsZCBiZSAyLiBXYXMgMC4KIFBBU1MgQXJyYXkucHJvdG90eXBl
LmNvbmNhdC5sZW5ndGggaXMgMQogUEFTUyBBcnJheS5wcm90b3R5cGUuam9pbi5sZW5ndGggaXMg
MQogUEFTUyBBcnJheS5wcm90b3R5cGUucHVzaC5sZW5ndGggaXMgMQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279353</attachid>
            <date>2016-05-18 22:45:07 -0700</date>
            <delta_ts>2016-05-18 22:54:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157882-20160518224606.patch</filename>
            <type>text/plain</type>
            <size>73598</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxMDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzczYWNlZjg4MjA4MzNi
MTc1ZjVmNGFkMjMyY2NjZjVhMzQ2MDUyYi4uNGI5NjcyZWJkZGRkNDU2ZDU5NWIxODA3NzBkNmE1
NDBkYjk4Zjk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxNi0wNS0xOCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEdlbmVyYXRlIGJpbmRpbmdz
IGNvZGUgZm9yIEV2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoKSAvIHJlbW92ZUV2ZW50TGlz
dGVuZXIoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU3ODgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
R2VuZXJhdGUgYmluZGluZ3MgY29kZSBmb3IgRXZlbnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigp
IC8gcmVtb3ZlRXZlbnRMaXN0ZW5lcigpCisgICAgICAgIGluc3RlYWQgb2YgaGFyZGNvZGluZyB0
aGVtIGluIHRoZSBiaW5kaW5ncyBnZW5lcmF0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBy
ZWJhc2VsaW5lZCBleGlzdGluZyB0ZXN0LiBUaGUgb25seSBXZWItRXhwb3NlZCBiZWhhdmlvciBj
aGFuZ2UKKyAgICAgICAgaXMgdGhhdCAnbGVuZ3RoJyBwcm9wZXJ0eSBvZiB0aG9zZSBmdW5jdGlv
bnMgaGF2ZSBjaGFuZ2VkLiBUaGlzIGlzIGJlY2F1c2UgdGhlCisgICAgICAgIElETCBoYXMgYmVl
biB1cGRhdGVkIHRvIG1hdGNoIG91ciBpbXBsZW1lbnRhdGlvbiAoYWxsIHBhcmFtZXRlcnMgYXJl
IG9wdGlvbmFsKS4KKyAgICAgICAgV2hpbGUgdGhpcyBkb2VzIG5vdCBtYXRjaCB0aGUgc3BlY2lm
aWNhdGlvbiwgdGhlIG5ldyBsZW5ndGggbm93IG1hdGNoZXMgb3VyCisgICAgICAgIGFjdHVhbCBi
ZWhhdmlvci4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3Vy
Y2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6
YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NjaGVkdWxlZFNvdXJj
ZU5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9T
Y3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nv
ck5vZGU6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvY2Vz
c29yTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9TY3JpcHRQcm9jZXNzb3JOb2RlLmg6CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9HT2Jq
ZWN0RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHT2JqZWN0RXZlbnRMaXN0
ZW5lcjo6b3BlcmF0b3I9PSk6CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZl
bnRMaXN0ZW5lci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAg
ICAoV2ViQ29yZTo6ZXZlbnRIYW5kbGVyQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRM
aXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6Y2Fz
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OmpzRnVuY3Rp
b24pOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL29iamMvT2JqQ0V2ZW50TGlzdGVuZXIu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL09iakNFdmVudExpc3RlbmVyLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6T2JqQ0V2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbik6CisgICAgICAgIChKU1ZhbHVlVG9OYXRpdmUpOgorICAgICAgICAoR2V0UGFy
ZW50Q2xhc3NOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEdldENhbGxiYWNrQ2xhc3NOYW1lKTog
RGVsZXRlZC4KKyAgICAgICAgKEdldEpTQ2FsbGJhY2tEYXRhVHlwZSk6IERlbGV0ZWQuCisgICAg
ICAgICogZG9tL0V2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lck1h
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRMaXN0ZW5lclRvVmVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50TGlzdGVuZXJNYXA6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpyZW1v
dmVMaXN0ZW5lckZyb21WZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRMaXN0ZW5lck1h
cDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlMaXN0ZW5lcnNOb3RDcmVhdGVkRnJv
bU1hcmt1cFRvVGFyZ2V0KToKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lck1hcC5oOgorICAg
ICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdl
dDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6YWRk
RXZlbnRMaXN0ZW5lckZvckJpbmRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0
OjpyZW1vdmVFdmVudExpc3RlbmVyRm9yQmluZGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRU
YXJnZXQ6OnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRUYXJnZXQ6OmNsZWFyQXR0cmlidXRlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogZG9tL0V2
ZW50VGFyZ2V0Lmg6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0LmlkbDoKKyAgICAgICAgKiBk
b20vTWVzc2FnZVBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmFkZEV2
ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5oOgorICAgICAgICAqIGRv
bS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyeUFkZEV2ZW50TGlzdGVuZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3Jl
Ojp0cnlSZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlbW92
ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogZG9tL1Jl
Z2lzdGVyZWRFdmVudExpc3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RlcmVkRXZl
bnRMaXN0ZW5lcjo6UmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGh0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojph
ZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJl
bW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURvY3VtZW50OjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGh0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHNBcHBsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQXBw
bGU6OnNob3dDbG9zZWRDYXB0aW9uVHJhY2tMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbHNBcHBsZTo6aGlkZUNsb3NlZENhcHRpb25UcmFja0xpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PSk6CisgICAg
ICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRv
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAg
ICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjphZGRFdmVudExpc3Rl
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIp
OgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjph
dHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI6OmRl
dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcjo6b3Bl
cmF0b3I9PSk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb25kaXRpb25FdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50Ojpjb25uZWN0Q29uZGl0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6ZGlzY29ubmVjdENvbmRpdGlvbnMpOgorCiAy
MDE2LTA1LTE4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBN
b2Rlcm4gSURCOiBNYWtlIFRlc3RSdW5uZXIuY2xlYXJBbGxEYXRhYmFzZXMgYWxzbyBkZWxldGUg
SW5kZXhlZERCIGRhdGFiYXNlcyAob25jZSBkb2luZyBzbyBpcyBzdXBwb3J0ZWQpLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hh
bmdlTG9nCmluZGV4IDNhNDBkMzUwN2JjNjc2YzJmNzhhOTk1MWU2NTU2YWVhNTY5ZGMwNWEuLjQ0
M2FkNGE5YWIxNDUyZGU5MWNjMTRiYmY2Mjk3YmY4NjQyOGMxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAxNi0wNS0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIEdlbmVyYXRlIGJpbmRpbmdzIGNvZGUgZm9yIEV2ZW50VGFyZ2V0LmFk
ZEV2ZW50TGlzdGVuZXIoKSAvIHJlbW92ZUV2ZW50TGlzdGVuZXIoKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3ODgyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2VuZXJhdGUgYmluZGluZ3MgY29kZSBm
b3IgRXZlbnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigpIC8gcmVtb3ZlRXZlbnRMaXN0ZW5lcigp
CisgICAgICAgIGluc3RlYWQgb2YgaGFyZGNvZGluZyB0aGVtIGluIHRoZSBiaW5kaW5ncyBnZW5l
cmF0b3IuCisKKyAgICAgICAgKiBET01FdmVudHNDbGFzc2VzLmNwcDoKKyAgICAgICAgKFdlYkV2
ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIERPTUV2ZW50c0NsYXNzZXMuaDoK
KwogMjAxNi0wNS0xNiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQgcm9sbG91dCByMjAwOTI0LiBDYXVzZWQganMvcmVncmVzcy9zdHJp
bmctcmVwbGFjZS1nZW5lcmljLmh0bWwgdG8gZmFpbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjMWVhOTQ0NzM5
ZmJiNTRlNmJhZmEzOGFlMzM5NDEzNGMyMmMxODQyLi45MWE1Y2EyZmFlNDQxZTBkMDdjZTdjOTIw
NzRkMTU5NWI2Zjg4Zjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTYtMDUtMTgg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBHZW5lcmF0ZSBiaW5k
aW5ncyBjb2RlIGZvciBFdmVudFRhcmdldC5hZGRFdmVudExpc3RlbmVyKCkgLyByZW1vdmVFdmVu
dExpc3RlbmVyKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1Nzg4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEdlbmVyYXRlIGJpbmRpbmdzIGNvZGUgZm9yIEV2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVu
ZXIoKSAvIHJlbW92ZUV2ZW50TGlzdGVuZXIoKQorICAgICAgICBpbnN0ZWFkIG9mIGhhcmRjb2Rp
bmcgdGhlbSBpbiB0aGUgYmluZGluZ3MgZ2VuZXJhdG9yLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW5Bbm5vdGF0aW9uOjphdHRhY2gpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5B
bm5vdGF0aW9uOjp+UERGUGx1Z2luQW5ub3RhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW5QYXNzd29yZEZpZWxkOjp+UERGUGx1Z2luUGFzc3dvcmRGaWVsZCk6CisgICAgICAg
IChXZWJLaXQ6OlBERlBsdWdpblBhc3N3b3JkRmllbGQ6OmNyZWF0ZUFubm90YXRpb25FbGVtZW50
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0
aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6flBERlBs
dWdpblRleHRBbm5vdGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luVGV4dEFubm90
YXRpb246OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KToKKwogMjAxNi0wNS0xOCAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kZXJuIElEQjogTWFrZSBUZXN0
UnVubmVyLmNsZWFyQWxsRGF0YWJhc2VzIGFsc28gZGVsZXRlIEluZGV4ZWREQiBkYXRhYmFzZXMg
KG9uY2UgZG9pbmcgc28gaXMgc3VwcG9ydGVkKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcAppbmRl
eCBiYzRlZmI0YjcyY2U2ZDdlYmNjY2UzOGViNjA5OTk1Mzk0MGU5YjUwLi40Y2E2YTA0NDJmZDNh
OTMxNTdjNzI1MTRmMzQ3YTFmYWM3ODM2NGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwCkBA
IC0yMDEsNyArMjAxLDcgQEAgdm9pZCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OmZpbmlzaCgp
CiAgICAgfQogfQogCi1ib29sIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6YWRkRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+
JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgQXVkaW9TY2hlZHVsZWRTb3VyY2VO
b2RlOjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8
RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIGJvb2wg
c3VjY2VzcyA9IEF1ZGlvTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdURk1vdmUo
bGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKICAgICBpZiAoc3VjY2VzcyAmJiBldmVudFR5cGUgPT0g
ZXZlbnROYW1lcygpLmVuZGVkRXZlbnQpCkBAIC0yMDksNyArMjA5LDcgQEAgYm9vbCBBdWRpb1Nj
aGVkdWxlZFNvdXJjZU5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIFIKICAgICByZXR1cm4gc3VjY2VzczsKIH0KIAotYm9vbCBBdWRpb1NjaGVkdWxl
ZFNvdXJjZU5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIEF1
ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVy
ZSkKIHsKICAgICBib29sIHN1Y2Nlc3MgPSBBdWRpb05vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIo
ZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CiAgICAgaWYgKHN1Y2Nlc3MgJiYgZXZl
bnRUeXBlID09IGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgKaW5k
ZXggZWNlZGUzOGEwODk0MjZkMDljZGU2MWQ0MGNiN2Y3NDNiOWM2MTA1NS4uY2I0ZGQzY2RlODIx
NzVjZDE2NTYzZDBkODhmZmNjMTE3Y2ExZDA5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCkBAIC0x
MDEsOCArMTAxLDggQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgVW5rbm93
blRpbWU7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0
dXJlKSBvdmVycmlkZTsKLSAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpIG92ZXJy
aWRlOworICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7Cisg
ICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBFdmVudExpc3RlbmVyJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKICAgICB2b2lkIHJl
bW92ZUFsbEV2ZW50TGlzdGVuZXJzKCkgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAppbmRl
eCA2ODVjNjczMDg0YzhjMWYxODMzMGZmOWZmMzY3NjUzMDljZDM5M2U1Li4wY2M0MWI3NTY4YmIw
NTEwZTE1NWVlOWNlYzEwMDU2MWViNzRiYTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKQEAgLTI3Myw3ICsy
NzMsNyBAQCBkb3VibGUgU2NyaXB0UHJvY2Vzc29yTm9kZTo6bGF0ZW5jeVRpbWUoKSBjb25zdAog
ICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7CiB9CiAK
LWJvb2wgU2NyaXB0UHJvY2Vzc29yTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wg
dXNlQ2FwdHVyZSkKK2Jvb2wgU2NyaXB0UHJvY2Vzc29yTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVu
ZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICBib29sIHN1Y2Nlc3MgPSBBdWRpb05vZGU6OmFk
ZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7
CiAgICAgaWYgKHN1Y2Nlc3MgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5hdWRpb3Byb2Nl
c3NFdmVudCkKQEAgLTI4MSw3ICsyODEsNyBAQCBib29sIFNjcmlwdFByb2Nlc3Nvck5vZGU6OmFk
ZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cgogICAg
IHJldHVybiBzdWNjZXNzOwogfQogCi1ib29sIFNjcmlwdFByb2Nlc3Nvck5vZGU6OnJlbW92ZUV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIq
IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIFNjcmlwdFByb2Nlc3Nvck5vZGU6OnJl
bW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlz
dGVuZXImIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgYm9vbCBzdWNjZXNzID0g
QXVkaW9Ob2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNh
cHR1cmUpOwogICAgIGlmIChzdWNjZXNzICYmIGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuYXVk
aW9wcm9jZXNzRXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oCmluZGV4IDZiNjVkMDE4ZWJmYWY2OTZhMDVkZDhkM2Rm
ODA0YTYzYzRiYWQ0MjQuLjEzMDYyNTkwOTBhZDQzYjJhZjVkNjM3MjJkNTVlMjQzM2Q4M2JiMmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vz
c29yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJv
Y2Vzc29yTm9kZS5oCkBAIC03Myw4ICs3Myw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGZpcmVQ
cm9jZXNzRXZlbnQoKTsKIAotICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVy
ZSkgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlk
ZTsKKyAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAg
IGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
RXZlbnRMaXN0ZW5lciYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1v
dmVBbGxFdmVudExpc3RlbmVycygpIG92ZXJyaWRlOwogCiAgICAgLy8gRG91YmxlIGJ1ZmZlcmlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZl
bnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RF
dmVudExpc3RlbmVyLmNwcAppbmRleCBkNGExZDE4MzUxY2YxYWQ0MTMzMmRlMTU3ZDA2YjI5MTQx
NzhiYWFjLi5mMmVkOTMyNTFjNTJjNDY4MTlkZWQxM2I1YzBhZTYyM2U2MTEwMTUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RFdmVudExpc3RlbmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RFdmVudExp
c3RlbmVyLmNwcApAQCAtNTcsOSArNTcsOSBAQCB2b2lkIEdPYmplY3RFdmVudExpc3RlbmVyOjpn
b2JqZWN0RGVzdHJveWVkKCkKICAgICAvLyBhbmQgbGF0ZXIgdXNlLWFmdGVyLWZyZWUgd2l0aCB0
aGUgbV9oYW5kbGVyID0gMDsgYXNzaWdubWVudC4KICAgICBSZWZQdHI8R09iamVjdEV2ZW50TGlz
dGVuZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CiAKLSAgICBtX2NvcmVUYXJnZXQtPnJlbW92ZUV2
ZW50TGlzdGVuZXIobV9kb21FdmVudE5hbWUuZGF0YSgpLCB0aGlzLCBtX2NhcHR1cmUpOwotICAg
IG1fY29yZVRhcmdldCA9IDA7Ci0gICAgbV9oYW5kbGVyID0gMDsKKyAgICBtX2NvcmVUYXJnZXQt
PnJlbW92ZUV2ZW50TGlzdGVuZXIobV9kb21FdmVudE5hbWUuZGF0YSgpLCAqdGhpcywgbV9jYXB0
dXJlKTsKKyAgICBtX2NvcmVUYXJnZXQgPSBudWxscHRyOworICAgIG1faGFuZGxlciA9IG51bGxw
dHI7CiB9CiAKIHZvaWQgR09iamVjdEV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBFdmVudCogZXZlbnQpCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgR09i
amVjdEV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBF
dmVudCogZXZlbnQpCiAgICAgZ192YWx1ZV91bnNldChwYXJhbWV0ZXJzICsgMSk7CiB9CiAKLWJv
b2wgR09iamVjdEV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYg
bGlzdGVuZXIpCitib29sIEdPYmplY3RFdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IEV2
ZW50TGlzdGVuZXImIGxpc3RlbmVyKSBjb25zdAogewogICAgIGlmIChjb25zdCBHT2JqZWN0RXZl
bnRMaXN0ZW5lciogZ29iamVjdEV2ZW50TGlzdGVuZXIgPSBHT2JqZWN0RXZlbnRMaXN0ZW5lcjo6
Y2FzdCgmbGlzdGVuZXIpKQogICAgICAgICByZXR1cm4gbV90YXJnZXQgPT0gZ29iamVjdEV2ZW50
TGlzdGVuZXItPm1fdGFyZ2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9n
b2JqZWN0L0dPYmplY3RFdmVudExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9n
b2JqZWN0L0dPYmplY3RFdmVudExpc3RlbmVyLmgKaW5kZXggZTExN2Y0MGQ2ZWNlNWQ0ZjY2OGMw
OTliODA5NTZhNzNiMGZjNmM4Ni4uMjA2YmJkNzg5ZTMxMDk3MGVmZGQyY2E3ZDgyZmM3MWJhYzk2
ZmJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0
RXZlbnRMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09i
amVjdEV2ZW50TGlzdGVuZXIuaApAQCAtMzUsMTQgKzM1LDE0IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBib29sIGFkZEV2ZW50TGlzdGVuZXIoR09iamVjdCogdGFyZ2V0LCBFdmVudFRhcmdldCog
Y29yZVRhcmdldCwgY29uc3QgY2hhciogZG9tRXZlbnROYW1lLCBHQ2xvc3VyZSogaGFuZGxlciwg
Ym9vbCB1c2VDYXB0dXJlKQogICAgIHsKLSAgICAgICAgUmVmUHRyPEdPYmplY3RFdmVudExpc3Rl
bmVyPiBsaXN0ZW5lcihhZG9wdFJlZihuZXcgR09iamVjdEV2ZW50TGlzdGVuZXIodGFyZ2V0LCBj
b3JlVGFyZ2V0LCBkb21FdmVudE5hbWUsIGhhbmRsZXIsIHVzZUNhcHR1cmUpKSk7Ci0gICAgICAg
IHJldHVybiBjb3JlVGFyZ2V0LT5hZGRFdmVudExpc3RlbmVyKGRvbUV2ZW50TmFtZSwgbGlzdGVu
ZXIucmVsZWFzZSgpLCB1c2VDYXB0dXJlKTsKKyAgICAgICAgUmVmPEdPYmplY3RFdmVudExpc3Rl
bmVyPiBsaXN0ZW5lcihhZG9wdFJlZigqbmV3IEdPYmplY3RFdmVudExpc3RlbmVyKHRhcmdldCwg
Y29yZVRhcmdldCwgZG9tRXZlbnROYW1lLCBoYW5kbGVyLCB1c2VDYXB0dXJlKSkpOworICAgICAg
ICByZXR1cm4gY29yZVRhcmdldC0+YWRkRXZlbnRMaXN0ZW5lcihkb21FdmVudE5hbWUsIFdURk1v
dmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCByZW1v
dmVFdmVudExpc3RlbmVyKEdPYmplY3QqIHRhcmdldCwgRXZlbnRUYXJnZXQqIGNvcmVUYXJnZXQs
IGNvbnN0IGNoYXIqIGRvbUV2ZW50TmFtZSwgR0Nsb3N1cmUqIGhhbmRsZXIsIGJvb2wgdXNlQ2Fw
dHVyZSkKICAgICB7CiAgICAgICAgIEdPYmplY3RFdmVudExpc3RlbmVyIGtleSh0YXJnZXQsIGNv
cmVUYXJnZXQsIGRvbUV2ZW50TmFtZSwgaGFuZGxlciwgdXNlQ2FwdHVyZSk7Ci0gICAgICAgIHJl
dHVybiBjb3JlVGFyZ2V0LT5yZW1vdmVFdmVudExpc3RlbmVyKGRvbUV2ZW50TmFtZSwgJmtleSwg
dXNlQ2FwdHVyZSk7CisgICAgICAgIHJldHVybiBjb3JlVGFyZ2V0LT5yZW1vdmVFdmVudExpc3Rl
bmVyKGRvbUV2ZW50TmFtZSwga2V5LCB1c2VDYXB0dXJlKTsKICAgICB9CiAKICAgICBzdGF0aWMg
dm9pZCBnb2JqZWN0RGVzdHJveWVkQ2FsbGJhY2soR09iamVjdEV2ZW50TGlzdGVuZXIqIGxpc3Rl
bmVyLCBHT2JqZWN0KikKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgOiAw
OwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVu
ZXImIG90aGVyKTsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3Ro
ZXIpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIEdPYmplY3RFdmVudExpc3RlbmVy
KEdPYmplY3QqLCBFdmVudFRhcmdldCosIGNvbnN0IGNoYXIqIGRvbUV2ZW50TmFtZSwgR0Nsb3N1
cmUqLCBib29sIGNhcHR1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRMaXN0ZW5lci5jcHAKaW5kZXggY2M1NGZkNGE4MTg0OTc3YTYwNGI1Zjk0YTU4NTIxMzJhMWQ4
Njg3ZS4uYmZkNzhhODI5NWU4MzgxMjE5YjNiMmRiYTVmNDRhYjA5MGUxNzY2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCkBAIC0xNjMsMjAg
KzE2MywxMyBAQCBib29sIEpTRXZlbnRMaXN0ZW5lcjo6dmlydHVhbGlzQXR0cmlidXRlKCkgY29u
c3QKICAgICByZXR1cm4gbV9pc0F0dHJpYnV0ZTsKIH0KIAotYm9vbCBKU0V2ZW50TGlzdGVuZXI6
Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpCitib29sIEpTRXZlbnRM
aXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikgY29uc3QK
IHsKICAgICBpZiAoY29uc3QgSlNFdmVudExpc3RlbmVyKiBqc0V2ZW50TGlzdGVuZXIgPSBKU0V2
ZW50TGlzdGVuZXI6OmNhc3QoJmxpc3RlbmVyKSkKICAgICAgICAgcmV0dXJuIG1fanNGdW5jdGlv
biA9PSBqc0V2ZW50TGlzdGVuZXItPm1fanNGdW5jdGlvbiAmJiBtX2lzQXR0cmlidXRlID09IGpz
RXZlbnRMaXN0ZW5lci0+bV9pc0F0dHJpYnV0ZTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJl
ZjxKU0V2ZW50TGlzdGVuZXI+IGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvckFkZChKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIEpTQzo6SlNPYmplY3QmIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0JiB3cmFw
cGVyKQotewotICAgIC8vIEZJWE1FOiBUaGlzIGFic3RyYWN0aW9uIGlzIG5vIGxvbmdlciBuZWVk
ZWQuIEl0IHdhcyBwYXJ0IG9mIHN1cHBvcnQgZm9yIFNWR0VsZW1lbnRJbnN0YW5jZS4KLSAgICAv
LyBXZSBzaG91bGQgcmVtb3ZlIGl0IGFuZCBzaW1wbGlmeSB0aGUgYmluZGluZ3MgZ2VuZXJhdGlv
biBzY3JpcHRzLgotICAgIHJldHVybiBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZSgmbGlzdGVuZXIs
ICZ3cmFwcGVyLCBmYWxzZSwgY3VycmVudFdvcmxkKCZzdGF0ZSkpOwotfQotCiBzdGF0aWMgaW5s
aW5lIEpTQzo6SlNWYWx1ZSBldmVudEhhbmRsZXJBdHRyaWJ1dGUoRXZlbnRMaXN0ZW5lciogYWJz
dHJhY3RMaXN0ZW5lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBp
ZiAoIWFic3RyYWN0TGlzdGVuZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0V2ZW50TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRMaXN0ZW5lci5oCmluZGV4IGEwMzk1NTM3MWJmMWNmM2NjYTgwMDBhMjQ2YjRiNjY2YTg5ZTJh
OTUuLmU1NWEyNWIwZjY5NDNlMjJiMjgzOWYxODkxODNlOTY3OGJiOTE3MzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCkBAIC00Myw2ICs0MywxNCBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpTRXZlbnRMaXN0ZW5lcihs
aXN0ZW5lciwgd3JhcHBlciwgaXNBdHRyaWJ1dGUsIHdvcmxkKSk7CiAgICAgfQogCisgICAgc3Rh
dGljIFJlZlB0cjxKU0V2ZW50TGlzdGVuZXI+IGNyZWF0ZShKU0M6OkpTVmFsdWUgbGlzdGVuZXIs
IEpTQzo6SlNPYmplY3QmIHdyYXBwZXIsIGJvb2wgaXNBdHRyaWJ1dGUsIERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQpCisgICAgeworICAgICAgICBpZiAoVU5MSUtFTFkoIWxpc3RlbmVyLmlzT2JqZWN0
KCkpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBKU0V2ZW50TGlzdGVuZXIoSlNDOjphc09iamVjdChsaXN0ZW5lciksICZ3cmFwcGVy
LCBpc0F0dHJpYnV0ZSwgd29ybGQpKTsKKyAgICB9CisKICAgICBzdGF0aWMgY29uc3QgSlNFdmVu
dExpc3RlbmVyKiBjYXN0KGNvbnN0IEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGxpc3RlbmVyLT50eXBlKCkgPT0gSlNFdmVudExpc3RlbmVyVHlwZQpAQCAt
NTIsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5KU0V2ZW50TGlzdGVuZXIoKTsK
IAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgb3ZlcnJp
ZGU7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGV2ZW50IGxpc3RlbmVy
IHdhcyBjcmVhdGVkIGZvciBhbiBldmVudCBoYW5kbGVyIGF0dHJpYnV0ZSwgbGlrZSAib25sb2Fk
IiBvciAib25jbGljayIuCiAgICAgYm9vbCBpc0F0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNBdHRyaWJ1dGU7IH0KQEAgLTk5LDkgKzEwNyw2IEBAIHZvaWQgc2V0RG9jdW1lbnRFdmVudEhh
bmRsZXJBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTT2JqZWN0JiwgSFRNTEVsZW1l
CiBKU0M6OkpTVmFsdWUgZG9jdW1lbnRFdmVudEhhbmRsZXJBdHRyaWJ1dGUoRG9jdW1lbnQmLCBj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7CiB2b2lkIHNldERvY3VtZW50RXZlbnRIYW5k
bGVyQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU09iamVjdCYsIERvY3VtZW50Jiwg
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEpTQzo6SlNWYWx1ZSk7CiAKLVJlZjxKU0V2
ZW50TGlzdGVuZXI+IGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvckFkZChKU0M6OkV4ZWNTdGF0ZSYs
IEpTQzo6SlNPYmplY3QmIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0JiB3cmFwcGVyKTsKLVJlZjxK
U0V2ZW50TGlzdGVuZXI+IGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvclJlbW92ZShKU0M6OkV4ZWNT
dGF0ZSYsIEpTQzo6SlNPYmplY3QmIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0JiB3cmFwcGVyKTsK
LQogaW5saW5lIEpTQzo6SlNPYmplY3QqIEpTRXZlbnRMaXN0ZW5lcjo6anNGdW5jdGlvbihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSBjb25zdAogewogICAg
IC8vIGluaXRpYWxpemVKU0Z1bmN0aW9uIGNhbiB0cmlnZ2VyIGNvZGUgdGhhdCBkZWxldGVzIHRo
aXMgZXZlbnQgbGlzdGVuZXIKQEAgLTEzMywxMSArMTM4LDYgQEAgaW5saW5lIEpTQzo6SlNPYmpl
Y3QqIEpTRXZlbnRMaXN0ZW5lcjo6anNGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHQKICAgICByZXR1cm4gbV9qc0Z1bmN0aW9uLmdldCgpOwogfQogCi1pbmxpbmUgUmVmPEpT
RXZlbnRMaXN0ZW5lcj4gY3JlYXRlSlNFdmVudExpc3RlbmVyRm9yUmVtb3ZlKEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgSlNDOjpKU09iamVjdCYgbGlzdGVuZXIsIEpTQzo6SlNPYmplY3QmIHdyYXBw
ZXIpCi17Ci0gICAgcmV0dXJuIGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvckFkZChzdGF0ZSwgbGlz
dGVuZXIsIHdyYXBwZXIpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBKU0V2ZW50TGlzdGVuZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
b2JqYy9PYmpDRXZlbnRMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9P
YmpDRXZlbnRMaXN0ZW5lci5oCmluZGV4IGYzZTk4NDM3ZmJhYWQ3OWEyY2I1MzNkYmI4MzgxNDMz
NjFmM2E1M2EuLjIzYzk4NDU1NTRmZTk4ZTcwNzBmOWY5YTFkYmNmODdkNTc0MzQ1NmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ0V2ZW50TGlzdGVuZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL09iakNFdmVudExpc3RlbmVyLmgKQEAg
LTUyLDcgKzUyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIE9iakNFdmVudExp
c3RlbmVyKE9iakNMaXN0ZW5lcik7CiAgICAgICAgIHZpcnR1YWwgfk9iakNFdmVudExpc3RlbmVy
KCk7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXIm
KTsKKyAgICAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYp
IGNvbnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIEV2ZW50Kik7CiAKICAgICAgICAgUmV0YWluUHRyPE9iakNMaXN0ZW5lcj4gbV9s
aXN0ZW5lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ0V2
ZW50TGlzdGVuZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL09iakNFdmVudExp
c3RlbmVyLm1tCmluZGV4IDA5OWQ0NTVjMGNhNWI0NzU4NzQ0OTdlZGYyOWUyNzE2YjFmNDA2YzMu
LjMyZmU2ZTY1MWIxNTA1MWMyMTMyM2M3OWM2MDM5NDhiMjU0MGE0MDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ0V2ZW50TGlzdGVuZXIubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9PYmpDRXZlbnRMaXN0ZW5lci5tbQpAQCAtNzksNyAr
NzksNyBAQCB2b2lkIE9iakNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgRXZlbnQqIGV2ZW50KQogICAgIFtsaXN0ZW5lciBoYW5kbGVFdmVudDpraXQo
ZXZlbnQpXTsKIH0KIAotYm9vbCBPYmpDRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBF
dmVudExpc3RlbmVyJiBsaXN0ZW5lcikKK2Jvb2wgT2JqQ0V2ZW50TGlzdGVuZXI6Om9wZXJhdG9y
PT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpIGNvbnN0CiB7CiAgICAgaWYgKGNvbnN0
IE9iakNFdmVudExpc3RlbmVyKiBvYmpDRXZlbnRMaXN0ZW5lciA9IE9iakNFdmVudExpc3RlbmVy
OjpjYXN0KCZsaXN0ZW5lcikpCiAgICAgICAgIHJldHVybiBtX2xpc3RlbmVyID09IG9iakNFdmVu
dExpc3RlbmVyLT5tX2xpc3RlbmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBmNzE3OGQxNTAxNDE2M2IwMTVkMWZmYWVi
ZGYzYjA0YWM2Y2FkODMyLi41MTVkYzRmNjJkOGU0OWU2NWMxOTE1ZGVjYzUxZjVmNGJiMzYwZjg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQpAQCAtMTQzLDI2ICsxNDMsNiBAQCBzdWIgRXZlbnRIYW5kbGVyQXR0cmlidXRlRXZl
bnROYW1lCiAgICAgcmV0dXJuICJldmVudE5hbWVzKCkuJHtldmVudFR5cGV9RXZlbnQiOwogfQog
Ci1zdWIgR2VuZXJhdGVFdmVudExpc3RlbmVyQ2FsbAotewotICAgIG15ICRmdW5jdGlvbk5hbWUg
PSBzaGlmdDsKLSAgICBteSAkc3VmZml4ID0gdWNmaXJzdCAkZnVuY3Rpb25OYW1lOwotICAgIG15
ICRwYXNzUmVmUHRySGFuZGxpbmcgPSAoJGZ1bmN0aW9uTmFtZSBlcSAiYWRkIikgPyAiIiA6ICIu
cHRyKCkiOwotCi0gICAgJGltcGxJbmNsdWRlc3siSlNFdmVudExpc3RlbmVyLmgifSA9IDE7Ci0K
LSAgICBteSBAR2VuZXJhdGVFdmVudExpc3RlbmVySW1wbCA9ICgpOwotCi0gICAgcHVzaChAR2Vu
ZXJhdGVFdmVudExpc3RlbmVySW1wbCwgPDxFTkQpOwotICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBz
dGF0ZS0+YXJndW1lbnQoMSk7Ci0gICAgaWYgKFVOTElLRUxZKCFsaXN0ZW5lci5pc09iamVjdCgp
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBp
bXBsLiR7ZnVuY3Rpb25OYW1lfUV2ZW50TGlzdGVuZXIoc3RhdGUtPmFyZ3VtZW50KDApLnRvU3Ry
aW5nKHN0YXRlKS0+dG9BdG9taWNTdHJpbmcoc3RhdGUpLCBjcmVhdGVKU0V2ZW50TGlzdGVuZXJG
b3Ikc3VmZml4KCpzdGF0ZSwgKmFzT2JqZWN0KGxpc3RlbmVyKSwgKmNhc3RlZFRoaXMpJHBhc3NS
ZWZQdHJIYW5kbGluZywgc3RhdGUtPmFyZ3VtZW50KDIpLnRvQm9vbGVhbihzdGF0ZSkpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci1FTkQKLSAgICByZXR1cm4g
QEdlbmVyYXRlRXZlbnRMaXN0ZW5lckltcGw7Ci19Ci0KIHN1YiBHZXRQYXJlbnRDbGFzc05hbWUK
IHsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CkBAIC0zMjE5LDMwICszMTk5LDI0IEBAIEVO
RAogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAjIEZvciBjb21wYXRpYmlsaXR5IHdpdGgg
bGVnYWN5IGNvbnRlbnQsIHRoZSBFdmVudExpc3RlbmVyIGNhbGxzIGFyZSBnZW5lcmF0ZWQgd2l0
aG91dCBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2suCi0gICAgICAgICAgICAgICAgICAgIGlm
ICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSBlcSAiYWRkRXZlbnRMaXN0ZW5lciIpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUV2ZW50TGlz
dGVuZXJDYWxsKCJhZGQiKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5uYW1lIGVxICJyZW1vdmVFdmVudExpc3RlbmVyIikgewotICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRlRXZlbnRMaXN0ZW5lckNh
bGwoInJlbW92ZSIpKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjayhcQGltcGxDb250ZW50LCAk
ZnVuY3Rpb24sICRpbnRlcmZhY2UpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHJh
aXNlc0V4Y2VwdGlvbldpdGhNZXNzYWdlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlIGVjO1xuIik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkcmFpc2VzRXhjZXB0aW9uKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKFxAaW1wbENvbnRlbnQsICRm
dW5jdGlvbiwgJGludGVyZmFjZSk7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZnVu
Y3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrU2VjdXJpdHlGb3JO
b2RlIn0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9Ob2RlKHN0YXRlLCBpbXBsLiIgLiAkZnVuY3Rp
b24tPnNpZ25hdHVyZS0+bmFtZSAuICIoIiAuICgkcmFpc2VzRXhjZXB0aW9uID8gImVjIiA6ICIi
KSAuIikpKVxuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpO1xuIik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNET01CaW5kaW5nLmgifSA9
IDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICgk
cmFpc2VzRXhjZXB0aW9uV2l0aE1lc3NhZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSBlYztcbiIpOwor
ICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkcmFpc2VzRXhjZXB0aW9uKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDtcbiIpOworICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG15ICRudW1QYXJhbWV0ZXJzID0gQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OwotICAgICAg
ICAgICAgICAgICAgICAgICAgbXkgKCRmdW5jdGlvblN0cmluZywgJGR1bW15KSA9IEdlbmVyYXRl
UGFyYW1ldGVyc0NoZWNrKFxAaW1wbENvbnRlbnQsICRmdW5jdGlvbiwgJGludGVyZmFjZSwgJG51
bVBhcmFtZXRlcnMsICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSwgJHN2Z1Byb3BlcnR5VHlw
ZSwgJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlLCAkc3ZnTGlzdFByb3BlcnR5VHlwZSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25D
YWxsKCRmdW5jdGlvbiwgJGZ1bmN0aW9uU3RyaW5nLCAiICAgICIsICRzdmdQcm9wZXJ0eVR5cGUs
ICRpbnRlcmZhY2UpOworICAgICAgICAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5Rm9yTm9kZSJ9KSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIXNob3VsZEFs
bG93QWNjZXNzVG9Ob2RlKHN0YXRlLCBpbXBsLiIgLiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFt
ZSAuICIoIiAuICgkcmFpc2VzRXhjZXB0aW9uID8gImVjIiA6ICIiKSAuIikpKVxuIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bGwoKSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICRp
bXBsSW5jbHVkZXN7IkpTRE9NQmluZGluZy5oIn0gPSAxOwogICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgbXkgJG51bVBhcmFtZXRlcnMgPSBAeyRmdW5jdGlvbi0+
cGFyYW1ldGVyc307CisgICAgICAgICAgICAgICAgICAgIG15ICgkZnVuY3Rpb25TdHJpbmcsICRk
dW1teSkgPSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayhcQGltcGxDb250ZW50LCAkZnVuY3Rpb24s
ICRpbnRlcmZhY2UsICRudW1QYXJhbWV0ZXJzLCAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUs
ICRzdmdQcm9wZXJ0eVR5cGUsICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSwgJHN2Z0xp
c3RQcm9wZXJ0eVR5cGUpOworICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uRnVuY3Rpb25DYWxsKCRmdW5jdGlvbiwgJGZ1bmN0aW9uU3RyaW5nLCAiICAgICIsICRzdmdQ
cm9wZXJ0eVR5cGUsICRpbnRlcmZhY2UpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KIApAQCAtNDQ1Myw2ICs0NDI3LDkgQEAgc3ViIEpTVmFsdWVUb05hdGl2ZQogCiAgICAgQWRk
VG9JbXBsSW5jbHVkZXMoIkpTJHR5cGUuaCIsICRjb25kaXRpb25hbCk7CiAKKyAgICAjIEZJWE1F
OiBFdmVudExpc3RlbmVyIHNob3VsZCBiZSBhIGNhbGxiYWNrIGludGVyZmFjZS4KKyAgICByZXR1
cm4gIkpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKCR2YWx1ZSwgKmNhc3RlZFRoaXMsIGZhbHNlLCBj
dXJyZW50V29ybGQoc3RhdGUpKSIgaWYgJHR5cGUgZXEgIkV2ZW50TGlzdGVuZXIiOworCiAgICAg
bXkgJGV4dGVuZGVkQXR0cmlidXRlcyA9ICRjb2RlR2VuZXJhdG9yLT5nZXRJbnRlcmZhY2VFeHRl
bmRlZEF0dHJpYnV0ZXNGcm9tTmFtZSgkdHlwZSk7CiAgICAgcmV0dXJuICgiSlMke3R5cGV9Ojp0
b1dyYXBwZWQoKnN0YXRlLCAkdmFsdWUpIiwgMSkgaWYgJGV4dGVuZGVkQXR0cmlidXRlcy0+eyJK
U0N1c3RvbVRvTmF0aXZlT2JqZWN0In07CiAgICAgcmV0dXJuICgiSlMke3R5cGV9Ojp0b1dyYXBw
ZWQoJHZhbHVlKSIsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCAyNjFmYTcwYTU1ZGNjMGM2NTZjZGQyMzdm
Y2M3MGMyNDMzNGEzMWIyLi5lOGE0NmE5MjdmMGNjMDY3YzA5ODg3YTk1N2YxZmZkZGFiYTgwZThi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcApAQCAtNDQzMCwxMCArNDQzMCwxOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5lcihFeGVj
U3RhdAogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAiYWRkRXZlbnRMaXN0ZW5lciIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSBsaXN0ZW5lciA9IHN0YXRlLT5hcmd1bWVudCgxKTsK
LSAgICBpZiAoVU5MSUtFTFkoIWxpc3RlbmVyLmlzT2JqZWN0KCkpKQorICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgYXV0
byB0eXBlID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKHN0YXRlKTsKKyAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBhdXRvIGxpc3RlbmVyID0gSlNFdmVudExpc3Rl
bmVyOjpjcmVhdGUoc3RhdGUtPmFyZ3VtZW50KDEpLCAqY2FzdGVkVGhpcywgZmFsc2UsIGN1cnJl
bnRXb3JsZChzdGF0ZSkpOworICAgIGlmIChVTkxJS0VMWSghbGlzdGVuZXIpKQorICAgICAgICBy
ZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDEsICJsaXN0ZW5lciIsICJUZXN0
T2JqIiwgImFkZEV2ZW50TGlzdGVuZXIiLCAiRXZlbnRMaXN0ZW5lciIpOworICAgIGF1dG8gdXNl
Q2FwdHVyZSA9IHN0YXRlLT5hcmd1bWVudCgyKS50b0Jvb2xlYW4oc3RhdGUpOworICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGltcGwuYWRkRXZlbnRMaXN0ZW5lcihzdGF0ZS0+
YXJndW1lbnQoMCkudG9TdHJpbmcoc3RhdGUpLT50b0F0b21pY1N0cmluZyhzdGF0ZSksIGNyZWF0
ZUpTRXZlbnRMaXN0ZW5lckZvckFkZCgqc3RhdGUsICphc09iamVjdChsaXN0ZW5lciksICpjYXN0
ZWRUaGlzKSwgc3RhdGUtPmFyZ3VtZW50KDIpLnRvQm9vbGVhbihzdGF0ZSkpOworICAgIGltcGwu
YWRkRXZlbnRMaXN0ZW5lcihXVEZNb3ZlKHR5cGUpLCAqbGlzdGVuZXIsIFdURk1vdmUodXNlQ2Fw
dHVyZSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
QEAgLTQ0NDUsMTAgKzQ0NTMsMTggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuZXIoRXhlY1MKICAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlbW92ZUV2ZW50
TGlzdGVuZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwotICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBzdGF0ZS0+YXJndW1lbnQoMSk7Ci0gICAgaWYgKFVO
TElLRUxZKCFsaXN0ZW5lci5pc09iamVjdCgpKSkKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDIpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgIGF1dG8gdHlwZSA9IHN0
YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CisgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CisgICAgYXV0byBsaXN0ZW5lciA9IEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRl
KHN0YXRlLT5hcmd1bWVudCgxKSwgKmNhc3RlZFRoaXMsIGZhbHNlLCBjdXJyZW50V29ybGQoc3Rh
dGUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWxpc3RlbmVyKSkKKyAgICAgICAgcmV0dXJuIHRocm93
QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAxLCAibGlzdGVuZXIiLCAiVGVzdE9iaiIsICJyZW1v
dmVFdmVudExpc3RlbmVyIiwgIkV2ZW50TGlzdGVuZXIiKTsKKyAgICBhdXRvIHVzZUNhcHR1cmUg
PSBzdGF0ZS0+YXJndW1lbnQoMikudG9Cb29sZWFuKHN0YXRlKTsKKyAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLSAgICBpbXBsLnJlbW92ZUV2ZW50TGlzdGVuZXIoc3RhdGUtPmFyZ3Vt
ZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dG9BdG9taWNTdHJpbmcoc3RhdGUpLCBjcmVhdGVKU0V2
ZW50TGlzdGVuZXJGb3JSZW1vdmUoKnN0YXRlLCAqYXNPYmplY3QobGlzdGVuZXIpLCAqY2FzdGVk
VGhpcykucHRyKCksIHN0YXRlLT5hcmd1bWVudCgyKS50b0Jvb2xlYW4oc3RhdGUpKTsKKyAgICBp
bXBsLnJlbW92ZUV2ZW50TGlzdGVuZXIoV1RGTW92ZSh0eXBlKSwgKmxpc3RlbmVyLCBXVEZNb3Zl
KHVzZUNhcHR1cmUpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaAppbmRleCBiYjRmOWYwMmRlYWQ1ZWQz
MTNjZTc2NDA2YTZkMTllZDhjODZmNmQxLi4yMjQzNTI5NTU5ZDgzMDMzNzU0ZmIwZTcyYmRkYzY0
YzhjOTUzYTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmgKQEAgLTQ4LDcgKzQ4LDcg
QEAgcHVibGljOgogICAgIH07CiAKICAgICB2aXJ0dWFsIH5FdmVudExpc3RlbmVyKCkgeyB9Ci0g
ICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYpID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJikgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
RXZlbnQqKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHdhc0NyZWF0ZWRGcm9tTWFya3VwKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50TGlzdGVuZXJNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAu
Y3BwCmluZGV4IGYxOTdjMjA2MDExYzhiYWE0OGQzMDgxZGRmYmMyMDFhMDVlMzg5MDguLmIwNGUx
MjEzYTU1Y2I2NWMyZjJlNTIzODllZTQ2NGQ3Zjg0NWVlZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRMaXN0ZW5lck1hcC5jcHAKQEAgLTk1LDkgKzk1LDkgQEAgVmVjdG9yPEF0b21pY1N0cmlu
Zz4gRXZlbnRMaXN0ZW5lck1hcDo6ZXZlbnRUeXBlcygpIGNvbnN0CiAgICAgcmV0dXJuIHR5cGVz
OwogfQogCi1zdGF0aWMgYm9vbCBhZGRMaXN0ZW5lclRvVmVjdG9yKEV2ZW50TGlzdGVuZXJWZWN0
b3IqIHZlY3RvciwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciwgYm9vbCB1c2VD
YXB0dXJlKQorc3RhdGljIGJvb2wgYWRkTGlzdGVuZXJUb1ZlY3RvcihFdmVudExpc3RlbmVyVmVj
dG9yKiB2ZWN0b3IsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1
cmUpCiB7Ci0gICAgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIgcmVnaXN0ZXJlZExpc3RlbmVyKGxp
c3RlbmVyLCB1c2VDYXB0dXJlKTsKKyAgICBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciByZWdpc3Rl
cmVkTGlzdGVuZXIoV1RGTW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOwogCiAgICAgaWYgKHZl
Y3Rvci0+ZmluZChyZWdpc3RlcmVkTGlzdGVuZXIpICE9IG5vdEZvdW5kKQogICAgICAgICByZXR1
cm4gZmFsc2U7IC8vIER1cGxpY2F0ZSBsaXN0ZW5lci4KQEAgLTEwNiwyMCArMTA2LDIwIEBAIHN0
YXRpYyBib29sIGFkZExpc3RlbmVyVG9WZWN0b3IoRXZlbnRMaXN0ZW5lclZlY3RvciogdmVjdG9y
LCBQYXNzUmVmUHRyPEV2ZW50TGlzCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRXZlbnRM
aXN0ZW5lck1hcDo6YWRkKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRy
PEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIEV2ZW50TGlz
dGVuZXJNYXA6OmFkZChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlz
dGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICBhc3NlcnROb0FjdGl2
ZUl0ZXJhdG9ycygpOwogCiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZW50cmllcykgewogICAg
ICAgICBpZiAoZW50cnkuZmlyc3QgPT0gZXZlbnRUeXBlKQotICAgICAgICAgICAgcmV0dXJuIGFk
ZExpc3RlbmVyVG9WZWN0b3IoZW50cnkuc2Vjb25kLmdldCgpLCBsaXN0ZW5lciwgdXNlQ2FwdHVy
ZSk7CisgICAgICAgICAgICByZXR1cm4gYWRkTGlzdGVuZXJUb1ZlY3RvcihlbnRyeS5zZWNvbmQu
Z2V0KCksIFdURk1vdmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKICAgICB9CiAKICAgICBtX2Vu
dHJpZXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGV2ZW50VHlwZSwgc3RkOjptYWtlX3VuaXF1ZTxF
dmVudExpc3RlbmVyVmVjdG9yPigpKSk7Ci0gICAgcmV0dXJuIGFkZExpc3RlbmVyVG9WZWN0b3Io
bV9lbnRyaWVzLmxhc3QoKS5zZWNvbmQuZ2V0KCksIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKKyAg
ICByZXR1cm4gYWRkTGlzdGVuZXJUb1ZlY3RvcihtX2VudHJpZXMubGFzdCgpLnNlY29uZC5nZXQo
KSwgV1RGTW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOwogfQogCi1zdGF0aWMgYm9vbCByZW1v
dmVMaXN0ZW5lckZyb21WZWN0b3IoRXZlbnRMaXN0ZW5lclZlY3RvciogbGlzdGVuZXJWZWN0b3Is
IEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUsIHNpemVfdCYgaW5kZXhP
ZlJlbW92ZWRMaXN0ZW5lcikKK3N0YXRpYyBib29sIHJlbW92ZUxpc3RlbmVyRnJvbVZlY3RvcihF
dmVudExpc3RlbmVyVmVjdG9yKiBsaXN0ZW5lclZlY3RvciwgRXZlbnRMaXN0ZW5lciYgbGlzdGVu
ZXIsIGJvb2wgdXNlQ2FwdHVyZSwgc2l6ZV90JiBpbmRleE9mUmVtb3ZlZExpc3RlbmVyKQogewog
ICAgIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyIHJlZ2lzdGVyZWRMaXN0ZW5lcihsaXN0ZW5lciwg
dXNlQ2FwdHVyZSk7CiAgICAgaW5kZXhPZlJlbW92ZWRMaXN0ZW5lciA9IGxpc3RlbmVyVmVjdG9y
LT5maW5kKHJlZ2lzdGVyZWRMaXN0ZW5lcik7CkBAIC0xMjksNyArMTI5LDcgQEAgc3RhdGljIGJv
b2wgcmVtb3ZlTGlzdGVuZXJGcm9tVmVjdG9yKEV2ZW50TGlzdGVuZXJWZWN0b3IqIGxpc3RlbmVy
VmVjdG9yLCBFdmVudEwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBFdmVudExpc3RlbmVy
TWFwOjpyZW1vdmUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIq
IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUsIHNpemVfdCYgaW5kZXhPZlJlbW92ZWRMaXN0ZW5l
cikKK2Jvb2wgRXZlbnRMaXN0ZW5lck1hcDo6cmVtb3ZlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlLCBzaXplX3Qm
IGluZGV4T2ZSZW1vdmVkTGlzdGVuZXIpCiB7CiAgICAgYXNzZXJ0Tm9BY3RpdmVJdGVyYXRvcnMo
KTsKIApAQCAtMTg1LDcgKzE4NSw3IEBAIHN0YXRpYyB2b2lkIGNvcHlMaXN0ZW5lcnNOb3RDcmVh
dGVkRnJvbU1hcmt1cFRvVGFyZ2V0KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUCiAgICAgICAg
IC8vIEV2ZW50IGxpc3RlbmVycyBjcmVhdGVkIGZyb20gbWFya3VwIGhhdmUgYWxyZWFkeSBiZWVu
IHRyYW5zZmVyZWQgdG8gdGhlIHNoYWRvdyB0cmVlIGR1cmluZyBjbG9uaW5nLgogICAgICAgICBp
ZiAobGlzdGVuZXIubGlzdGVuZXItPndhc0NyZWF0ZWRGcm9tTWFya3VwKCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgdGFyZ2V0LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwg
bGlzdGVuZXIubGlzdGVuZXIuY29weVJlZigpLCBsaXN0ZW5lci51c2VDYXB0dXJlKTsKKyAgICAg
ICAgdGFyZ2V0LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgKmxpc3RlbmVyLmxpc3RlbmVy
LCBsaXN0ZW5lci51c2VDYXB0dXJlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRM
aXN0ZW5lck1hcC5oCmluZGV4IDg5ZmY2NjY4ZDcyZmY5MDFkNjg3ZDNiNzdmYjM0MWIzYzZiODE3
ZjAuLjFlZmU2YWJmOGNlZWQyZDk2M2FjNzYzMTkxYzBhMmE4ZmY5YjYzMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuaApAQCAtNTQsOCArNTQsOCBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBjb250YWluc0NhcHR1cmluZyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkgY29u
c3Q7CiAKICAgICB2b2lkIGNsZWFyKCk7Ci0gICAgYm9vbCBhZGQoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSk7
Ci0gICAgYm9vbCByZW1vdmUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlz
dGVuZXIqLCBib29sIHVzZUNhcHR1cmUsIHNpemVfdCYgaW5kZXhPZlJlbW92ZWRMaXN0ZW5lcik7
CisgICAgYm9vbCBhZGQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExp
c3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpOworICAgIGJvb2wgcmVtb3ZlKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiwgYm9vbCB1c2VDYXB0dXJlLCBzaXpl
X3QmIGluZGV4T2ZSZW1vdmVkTGlzdGVuZXIpOwogICAgIEV2ZW50TGlzdGVuZXJWZWN0b3IqIGZp
bmQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpOwogICAgIFZlY3RvcjxBdG9taWNTdHJp
bmc+IGV2ZW50VHlwZXMoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKaW5k
ZXggZWMyMTA5ODY3YWMzMGQwYzMxYmU2OTI2MTYzMWMzMjUxNmZlYTNjZS4uZDI0ODM4NTkzZDE3
ZjZhYjU2ZDZkOTA5OTU4NTkyOTA1NmIwZTA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQu
Y3BwCkBAIC03NSwxMiArNzUsMjggQEAgYm9vbCBFdmVudFRhcmdldDo6aXNNZXNzYWdlUG9ydCgp
IGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEV2ZW50VGFyZ2V0OjphZGRFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBFdmVudFRhcmdldDo6YWRk
RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlz
dGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICByZXR1cm4gZW5zdXJl
RXZlbnRUYXJnZXREYXRhKCkuZXZlbnRMaXN0ZW5lck1hcC5hZGQoZXZlbnRUeXBlLCBXVEZNb3Zl
KGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiB9CiAKLWJvb2wgRXZlbnRUYXJnZXQ6OnJlbW92ZUV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIq
IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCit2b2lkIEV2ZW50VGFyZ2V0OjphZGRFdmVudExp
c3RlbmVyRm9yQmluZGluZ3MoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxF
dmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCit7CisgICAgLy8gRklY
TUU6IGxpc3RlbmVyIGlzIG5vdCBzdXBwb3NlZCB0byBiZSBudWxsYWJsZS4KKyAgICBpZiAoIWxp
c3RlbmVyKQorICAgICAgICByZXR1cm47CisgICAgYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUs
IGxpc3RlbmVyLnJlbGVhc2VOb25OdWxsKCksIHVzZUNhcHR1cmUpOworfQorCit2b2lkIEV2ZW50
VGFyZ2V0OjpyZW1vdmVFdmVudExpc3RlbmVyRm9yQmluZGluZ3MoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNh
cHR1cmUpCit7CisgICAgLy8gRklYTUU6IGxpc3RlbmVyIGlzIG5vdCBzdXBwb3NlZCB0byBiZSBu
dWxsYWJsZS4KKyAgICBpZiAoIWxpc3RlbmVyKQorICAgICAgICByZXR1cm47CisgICAgcmVtb3Zl
RXZlbnRMaXN0ZW5lcihldmVudFR5cGUsICpsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7Cit9CisKK2Jv
b2wgRXZlbnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAg
ICAgRXZlbnRUYXJnZXREYXRhKiBkID0gZXZlbnRUYXJnZXREYXRhKCk7CiAgICAgaWYgKCFkKQpA
QCAtMTEwLDEyICsxMjYsMTIgQEAgYm9vbCBFdmVudFRhcmdldDo6cmVtb3ZlRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW4KICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBFdmVudFRhcmdldDo6c2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBs
aXN0ZW5lcikKK2Jvb2wgRXZlbnRUYXJnZXQ6OnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3Rl
bmVyKQogewogICAgIGNsZWFyQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUpOwogICAg
IGlmICghbGlzdGVuZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gYWRkRXZl
bnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCBmYWxzZSk7CisgICAgcmV0dXJuIGFkZEV2
ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lci5yZWxlYXNlTm9uTnVsbCgpLCBmYWxzZSk7
CiB9CiAKIEV2ZW50TGlzdGVuZXIqIEV2ZW50VGFyZ2V0OjpnZXRBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKQpAQCAtMTMyLDcgKzE0OCw3IEBAIGJv
b2wgRXZlbnRUYXJnZXQ6OmNsZWFyQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSkKICAgICBFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IGdldEF0dHJp
YnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlKTsKICAgICBpZiAoIWxpc3RlbmVyKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBl
LCBsaXN0ZW5lciwgZmFsc2UpOworICAgIHJldHVybiByZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50
VHlwZSwgKmxpc3RlbmVyLCBmYWxzZSk7CiB9CiAKIGJvb2wgRXZlbnRUYXJnZXQ6OmRpc3BhdGNo
RXZlbnRGb3JCaW5kaW5ncyhFdmVudCogZXZlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXQuaAppbmRleCBmOWIwZjIxMTc0ZjU0MThkNTFmN2Q1NDM4MWIwMWM4Nzgy
MTJlYWFmLi4xYjFkZWQxOWE1ZDljYTU2NjRlNTBhOTk5ZDZjM2VmYjkyYTdlZTk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXQuaApAQCAtMTIxLDE1ICsxMjEsMTggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgRE9NV2luZG93KiB0b0RPTVdpbmRvdygpOwogICAgIHZpcnR1YWwgYm9vbCBpc01lc3Nh
Z2VQb3J0KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wg
dXNlQ2FwdHVyZSk7Ci0gICAgdmlydHVhbCBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUp
OworICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lckZvckJpbmRpbmdzKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKTsK
KyAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXJGb3JCaW5kaW5ncyhjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSk7
CisgICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpOworICAgIHZp
cnR1YWwgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBFdmVudExpc3RlbmVyJiwgYm9vbCB1c2VDYXB0dXJlKTsKKwogICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVBbGxFdmVudExpc3RlbmVycygpOwogICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEV2
ZW50KEV2ZW50Jik7CiAgICAgYm9vbCBkaXNwYXRjaEV2ZW50Rm9yQmluZGluZ3MoRXZlbnQqLCBF
eGNlcHRpb25Db2RlJik7IC8vIERPTSBBUEkKICAgICB2aXJ0dWFsIHZvaWQgdW5jYXVnaHRFeGNl
cHRpb25JbkV2ZW50SGFuZGxlcigpOwogCiAgICAgLy8gVXNlZCBmb3IgbGVnYWN5ICJvbkV2ZW50
IiBhdHRyaWJ1dGUgQVBJcy4KLSAgICBib29sIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4pOwor
ICAgIGJvb2wgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYpOwogICAgIGJvb2wgY2xlYXJBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKTsKICAgICBFdmVu
dExpc3RlbmVyKiBnZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5pZGwKaW5kZXggNTkzZTRjMDY4
NmEwOGI5MGMxM2ViZWJmNmNlYzI4MmY0Yjc2ZTg1ZC4uYzU5NDU4OTZlMDBhNjY3NTYzOTAzOWEw
ODYxZmY2NjU3NWVkYmUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaWRsCkBAIC0yNSw4
ICsyNSwxMCBAQAogICAgIEpTQ3VzdG9tVG9OYXRpdmVPYmplY3QsCiAgICAgT2JqQ1Byb3RvY29s
LAogXSBpbnRlcmZhY2UgRXZlbnRUYXJnZXQgewotICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFt
ZXRlcnNdIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihET01TdHJpbmcgdHlwZSwgRXZlbnRMaXN0ZW5l
cj8gbGlzdGVuZXIsIG9wdGlvbmFsIGJvb2xlYW4gdXNlQ2FwdHVyZSA9IGZhbHNlKTsKLSAgICBb
T2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzXSB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoRE9N
U3RyaW5nIHR5cGUsIEV2ZW50TGlzdGVuZXI/IGxpc3RlbmVyLCBvcHRpb25hbCBib29sZWFuIHVz
ZUNhcHR1cmUgPSBmYWxzZSk7CisgICAgLy8gRklYTUU6IFRoZSAndHlwZScgYW5kICdsaXN0ZW5l
cicgcGFyYW1ldGVycyBzaG91bGQgbm90IGJlIG9wdGlvbmFsLgorICAgIFtPYmpDTGVnYWN5VW5u
YW1lZFBhcmFtZXRlcnMsIEltcGxlbWVudGVkQXM9YWRkRXZlbnRMaXN0ZW5lckZvckJpbmRpbmdz
XSB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoW0F0b21pY1N0cmluZ10gb3B0aW9uYWwgRE9NU3RyaW5n
IHR5cGUgPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgRXZlbnRMaXN0ZW5lcj8gbGlzdGVuZXIsIG9w
dGlvbmFsIGJvb2xlYW4gdXNlQ2FwdHVyZSA9IGZhbHNlKTsKKyAgICBbT2JqQ0xlZ2FjeVVubmFt
ZWRQYXJhbWV0ZXJzLCBJbXBsZW1lbnRlZEFzPXJlbW92ZUV2ZW50TGlzdGVuZXJGb3JCaW5kaW5n
c10gdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKFtBdG9taWNTdHJpbmddIG9wdGlvbmFsIERPTVN0
cmluZyB0eXBlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIEV2ZW50TGlzdGVuZXI/IGxpc3RlbmVy
LCBvcHRpb25hbCBib29sZWFuIHVzZUNhcHR1cmUgPSBmYWxzZSk7CisKICAgICAvLyBGSVhNRTog
ZXZlbnQgc2hvdWxkIG5vdCBiZSBudWxsYWJsZS4KICAgICBbSW1wbGVtZW50ZWRBcz1kaXNwYXRj
aEV2ZW50Rm9yQmluZGluZ3MsIFJhaXNlc0V4Y2VwdGlvbl0gYm9vbGVhbiBkaXNwYXRjaEV2ZW50
KEV2ZW50PyBldmVudCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VQb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKaW5kZXggNWE4
NGE0NGEyMDhhYmViZTQxM2I5OWYxMWU2ZjUwMTE5ZGE0MDJiOC4uM2Q3ODQ3Y2FlZGIyOTIwZTNi
MjY0YjY1MmJjNTRjYmMzNDc4YTNhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VQb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCkBA
IC0yMjEsOSArMjIxLDkgQEAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0QXJyYXk+IE1lc3Nh
Z2VQb3J0OjplbnRhbmdsZVBvcnRzKFNjcmlwdEV4ZWN1dGlvbkNvbnQKICAgICByZXR1cm4gcG9y
dEFycmF5OwogfQogCi1ib29sIE1lc3NhZ2VQb3J0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwg
Ym9vbCB1c2VDYXB0dXJlKQorYm9vbCBNZXNzYWdlUG9ydDo6YWRkRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIs
IGJvb2wgdXNlQ2FwdHVyZSkKIHsKLSAgICBpZiAobGlzdGVuZXIgJiYgbGlzdGVuZXItPmlzQXR0
cmlidXRlKCkgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQpCisgICAg
aWYgKGxpc3RlbmVyLT5pc0F0dHJpYnV0ZSgpICYmIGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCku
bWVzc2FnZUV2ZW50KQogICAgICAgICBzdGFydCgpOwogICAgIHJldHVybiBFdmVudFRhcmdldFdp
dGhJbmxpbmVEYXRhOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5l
ciksIHVzZUNhcHR1cmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VQb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaAppbmRleCBiYWUwMWQ1
Yjk1MWRkNzgyMzdhZmRmODcyMzE0ZjgyNGQxNTdiMTZlLi45Y2ExMjRmNGEyZWZjOTgxZGY1NTYz
YmJiYjc1MDQ2Zjc5Y2ZjZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2Fn
ZVBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaApAQCAtOTIsNyAr
OTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIEEgcG9ydCBnZXRzIG5ldXRl
cmVkIHdoZW4gaXQgaXMgdHJhbnNmZXJyZWQgdG8gYSBuZXcgb3duZXIgdmlhIHBvc3RNZXNzYWdl
KCkuCiAgICAgICAgIGJvb2wgaXNOZXV0ZXJlZCgpIHsgcmV0dXJuICFtX2VudGFuZ2xlZENoYW5u
ZWw7IH0KIAotICAgICAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92
ZXJyaWRlOworICAgICAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJy
aWRlOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZXhwbGljaXQgTWVzc2FnZVBvcnQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDRjNDc1MTA0YjcyMjYwMmEz
OTM4OGJlMTIzOWE4ZTQ2MzdmNWJiNWQuLmQwYzVkNGM0MmVhYzNlMzZiZmJmODA1OTM3OTE2Y2U4
NzJhM2Y3N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTE5NjAsNyArMTk2MCw3IEBAIHZvaWQgTm9k
ZTo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KQogICAgIH0KIH0K
IAotc3RhdGljIGlubGluZSBib29sIHRyeUFkZEV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0Tm9k
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYm
IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitzdGF0aWMgaW5saW5lIGJvb2wgdHJ5QWRkRXZl
bnRMaXN0ZW5lcihOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAg
ICBpZiAoIXRhcmdldE5vZGUtPkV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlw
ZSwgbGlzdGVuZXIuY29weVJlZigpLCB1c2VDYXB0dXJlKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMTk5NiwxMiArMTk5NiwxMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdHJ5QWRkRXZlbnRM
aXN0ZW5lcihOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIE5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29s
IHVzZUNhcHR1cmUpCitib29sIE5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNh
cHR1cmUpCiB7CiAgICAgcmV0dXJuIHRyeUFkZEV2ZW50TGlzdGVuZXIodGhpcywgZXZlbnRUeXBl
LCBXVEZNb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9v
bCB0cnlSZW1vdmVFdmVudExpc3RlbmVyKE5vZGUqIHRhcmdldE5vZGUsIGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJl
KQorc3RhdGljIGlubGluZSBib29sIHRyeVJlbW92ZUV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0
Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3Rl
bmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgaWYgKCF0YXJnZXROb2RlLT5FdmVudFRhcmdl
dDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjAzNyw3ICsyMDM3LDcgQEAgc3RhdGljIGlubGlu
ZSBib29sIHRyeVJlbW92ZUV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgQXRv
bWljU3RyaW5nJgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE5vZGU6OnJlbW92ZUV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqIGxp
c3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIE5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBi
b29sIHVzZUNhcHR1cmUpCiB7CiAgICAgcmV0dXJuIHRyeVJlbW92ZUV2ZW50TGlzdGVuZXIodGhp
cywgZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA1
NTdkZGNjMTE3MzE5NGE4ZjBkZDE5NGNiMzZiMTc2NzBlMDRlMzQ5Li4yMDhlMjg4ZjE3OTc3MmRj
OWY5MjAwNzVjNDI2N2EyYjRlZGU0NTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTUwNiw4ICs1MDYsOCBA
QCBwdWJsaWM6CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2Uo
KSBjb25zdCBvdmVycmlkZTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3QgZmluYWw7IC8vIEltcGxlbWVudGVkIGluIERvY3VtZW50LmgK
IAotICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7Ci0g
ICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKKyAgICBib29sIGFk
ZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExp
c3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgIGJvb2wgcmVtb3ZlRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYs
IGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAKICAgICB1c2luZyBFdmVudFRhcmdldDo6ZGlz
cGF0Y2hFdmVudDsKICAgICBib29sIGRpc3BhdGNoRXZlbnQoRXZlbnQmKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgKaW5kZXggMTI0ODNm
YTYxMTg5ZTJlZTNmNDQ4MjY0YTY1ZjU5M2UyNGMwODlkYi4uMWNjNjljYTJlMjgxZTVlNjU4YjM4
YmE4NjVhYjczMGIxZTdiNTcxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1JlZ2lz
dGVyZWRFdmVudExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JlZ2lzdGVyZWRF
dmVudExpc3RlbmVyLmgKQEAgLTMxLDggKzMxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgY2xhc3MgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAg
UmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5l
ciwgYm9vbCB1c2VDYXB0dXJlKQotICAgICAgICAgICAgOiBsaXN0ZW5lcihsaXN0ZW5lcikKKyAg
ICAgICAgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIoUmVmPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVy
LCBib29sIHVzZUNhcHR1cmUpCisgICAgICAgICAgICA6IGxpc3RlbmVyKFdURk1vdmUobGlzdGVu
ZXIpKQogICAgICAgICAgICAgLCB1c2VDYXB0dXJlKHVzZUNhcHR1cmUpCiAgICAgICAgIHsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggODdl
ODAzYjNmYzY3MzdmYjRkZjhhY2MwYTViZTYyMTgxYzdmYjVhNS4uMzhiZTQ0YjI3OGFkOTRlOGQ0
YzRlMTlhZjQzOGJhZmYxZDI0MDYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCkBAIC01MjE2LDcgKzUyMTYsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmRp
c3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogICAgIHJldHVybiBIVE1MRWxlbWVudDo6ZGlzcGF0
Y2hFdmVudChldmVudCk7CiB9CiAKLWJvb2wgSFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+
JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6YWRk
RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlz
dGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICBpZiAoZXZlbnRUeXBl
ICE9IGV2ZW50TmFtZXMoKS53ZWJraXRwbGF5YmFja3RhcmdldGF2YWlsYWJpbGl0eWNoYW5nZWRF
dmVudCkKICAgICAgICAgcmV0dXJuIE5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBX
VEZNb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CkBAIC01MjM2LDcgKzUyMzYsNyBAQCBib29s
IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIFJlZlB0cjxFdgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEhUTUxNZWRp
YUVsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIEhUTUxN
ZWRpYUVsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAg
aWYgKGV2ZW50VHlwZSAhPSBldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFi
aWxpdHljaGFuZ2VkRXZlbnQpCiAgICAgICAgIHJldHVybiBOb2RlOjpyZW1vdmVFdmVudExpc3Rl
bmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaAppbmRleCBiMzg5Mzk4YjMzYWQ2N2EyODJjYTEyM2M5NTI4OWY1MmE0
YTUwZjM2Li42Njc5OGFjY2M3MTc2ZjY4NDBlMTA2YTg1YWJkNGU0MTlkYjllZGMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMzQ0LDggKzM0NCw4IEBAIHB1Ymxp
YzoKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgdm9pZCB3ZWJr
aXRTaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoKTsKLSAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBi
b29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2Fw
dHVyZSkgb3ZlcnJpZGU7CisgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKSBv
dmVycmlkZTsKKyAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCB3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZSgpIG92ZXJyaWRlOwog
ICAgIGJvb2wgY2FuUGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0IG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggMmYzNWIyOWIzOWI2NzI4
ZGUwYmE4NTc1ZWQ3NTY4ODgzZTU3N2NlNi4uN2ZkMmM3YzllNTc2YTk1YWIxNGY5Y2Q3YmU5YmM3
YTA4MGUzZmFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC02NCw3
ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBFdmVudExpc3RlbmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEV2ZW50TGlzdGVuZXImKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGhhbmRsZUV2ZW50KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCopIG92ZXJyaWRlOwogCiAgICAgSW1hZ2VEb2N1
bWVudCYgbV9kb2N1bWVudDsKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6
OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCkKICAgICAgICAgLy8gU2V0IHRoZSB2aWV3cG9ydCB0
byBiZSBpbiBkZXZpY2UgcGl4ZWxzIChyYXRoZXIgdGhhbiB0aGUgZGVmYXVsdCBvZiA5ODApLgog
ICAgICAgICBwcm9jZXNzVmlld3BvcnQoQVNDSUlMaXRlcmFsKCJ3aWR0aD1kZXZpY2Utd2lkdGgi
KSwgVmlld3BvcnRBcmd1bWVudHM6OkltYWdlRG9jdW1lbnQpOwogI2Vsc2UKLSAgICAgICAgUmVm
UHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gSW1hZ2VFdmVudExpc3RlbmVyOjpjcmVhdGUo
KnRoaXMpOworICAgICAgICBhdXRvIGxpc3RlbmVyID0gSW1hZ2VFdmVudExpc3RlbmVyOjpjcmVh
dGUoKnRoaXMpOwogICAgICAgICBpZiAoRE9NV2luZG93KiB3aW5kb3cgPSB0aGlzLT5kb21XaW5k
b3coKSkKICAgICAgICAgICAgIHdpbmRvdy0+YWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgbGlz
dGVuZXIuY29weVJlZigpLCBmYWxzZSk7CiAgICAgICAgIGltYWdlRWxlbWVudC0+YWRkRXZlbnRM
aXN0ZW5lcigiY2xpY2siLCBXVEZNb3ZlKGxpc3RlbmVyKSwgZmFsc2UpOwpAQCAtNDA3LDcgKzQw
Nyw3IEBAIHZvaWQgSW1hZ2VFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgRXZlbnQqIGV2ZW50KQogICAgIH0KIH0KIAotYm9vbCBJbWFnZUV2ZW50TGlz
dGVuZXI6Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3RoZXIpCitib29sIEltYWdl
RXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgY29u
c3QKIHsKICAgICAvLyBBbGwgSW1hZ2VFdmVudExpc3RlbmVyIG9iamVjdHMgY29tcGFyZSBhcyBl
cXVhbDsgT0sgc2luY2UgdGhlcmUgaXMgb25seSBvbmUgcGVyIGRvY3VtZW50LgogICAgIHJldHVy
biBvdGhlci50eXBlKCkgPT0gSW1hZ2VFdmVudExpc3RlbmVyVHlwZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwCmluZGV4IGNmN2FjNGJj
ZmY3MzI0ZTllMDAyYTljNzA0ZjMwMjJmOTMxOGY2MDIuLmQ5N2RhNzhlNTYxMTM3MWFjYjRkMjlk
YjAwZTBlZTBiY2M3NDdmZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbHNBcHBsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sc0FwcGxlLmNwcApAQCAtNTA5LDE1ICs1MDksMTUgQEAgdm9pZCBNZWRpYUNv
bnRyb2xzQXBwbGU6OnNob3dDbG9zZWRDYXB0aW9uVHJhY2tMaXN0KCkKICAgICBtX3BhbmVsLT5z
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5UG9pbnRlckV2ZW50cywgQ1NTVmFsdWVO
b25lKTsKIAogICAgIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyID0gZXZlbnRMaXN0ZW5lcigpOwot
ICAgIG1fY2xvc2VkQ2FwdGlvbnNDb250YWluZXItPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1l
cygpLndoZWVsRXZlbnQsICZsaXN0ZW5lciwgdHJ1ZSk7CisgICAgbV9jbG9zZWRDYXB0aW9uc0Nv
bnRhaW5lci0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkud2hlZWxFdmVudCwgbGlzdGVu
ZXIsIHRydWUpOwogCiAgICAgLy8gVHJhY2sgY2xpY2sgZXZlbnRzIGluIHRoZSBjYXB0dXJlIHBo
YXNlIGF0IHR3byBsZXZlbHMsIGZpcnN0IGF0IHRoZSBkb2N1bWVudCBsZXZlbAogICAgIC8vIHN1
Y2ggdGhhdCBhIGNsaWNrIG91dHNpZGUgb2YgdGhlIDx2aWRlbz4gbWF5IGRpc21pc3MgdGhlIHRy
YWNrIGxpc3QsIHNlY29uZCBhdCB0aGUKICAgICAvLyBtZWRpYSBjb250cm9scyBsZXZlbCBzdWNo
IHRoYXQgYSBjbGljayBhbnl3aGVyZSBvdXRzaWRlIG9mIHRoZSB0cmFjayBsaXN0IGhpZGVzIHRo
ZQogICAgIC8vIHRyYWNrIGxpc3QuIFRoZXNlIHR3byBsZXZlbHMgYXJlIG5lY2Vzc2FyeSBzaW5j
ZSBpdCB3b3VsZCBub3QgYmUgcG9zc2libGUgdG8gZ2V0IGEKICAgICAvLyByZWZlcmVuY2UgdG8g
dGhlIHRyYWNrIGxpc3Qgd2hlbiBoYW5kbGluZyB0aGUgZXZlbnQgb3V0c2lkZSBvZiB0aGUgc2hh
ZG93IHRyZWUuCi0gICAgZG9jdW1lbnQoKS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5j
bGlja0V2ZW50LCAmbGlzdGVuZXIsIHRydWUpOwotICAgIGFkZEV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLmNsaWNrRXZlbnQsICZsaXN0ZW5lciwgdHJ1ZSk7CisgICAgZG9jdW1lbnQoKS5hZGRF
dmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBsaXN0ZW5lciwgdHJ1ZSk7Cisg
ICAgYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgbGlzdGVuZXIsIHRy
dWUpOwogfQogCiB2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6aGlkZUNsb3NlZENhcHRpb25UcmFj
a0xpc3QoKQpAQCAtNTMxLDkgKzUzMSw5IEBAIHZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjpoaWRl
Q2xvc2VkQ2FwdGlvblRyYWNrTGlzdCgpCiAgICAgbV9wYW5lbC0+cmVtb3ZlSW5saW5lU3R5bGVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHMpOwogCiAgICAgRXZlbnRMaXN0ZW5lciYg
bGlzdGVuZXIgPSBldmVudExpc3RlbmVyKCk7Ci0gICAgbV9jbG9zZWRDYXB0aW9uc0NvbnRhaW5l
ci0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkud2hlZWxFdmVudCwgJmxpc3RlbmVy
LCB0cnVlKTsKLSAgICBkb2N1bWVudCgpLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygp
LmNsaWNrRXZlbnQsICZsaXN0ZW5lciwgdHJ1ZSk7Ci0gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkuY2xpY2tFdmVudCwgJmxpc3RlbmVyLCB0cnVlKTsKKyAgICBtX2Nsb3NlZENh
cHRpb25zQ29udGFpbmVyLT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS53aGVlbEV2
ZW50LCBsaXN0ZW5lciwgdHJ1ZSk7CisgICAgZG9jdW1lbnQoKS5yZW1vdmVFdmVudExpc3RlbmVy
KGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBsaXN0ZW5lciwgdHJ1ZSk7CisgICAgcmVtb3ZlRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgbGlzdGVuZXIsIHRydWUpOwogfQog
CiB2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6c2V0RnVsbHNjcmVlblNsaWRlclZvbHVtZSgpCkBA
IC01OTUsNyArNTk1LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQXBwbGVFdmVudExpc3RlbmVyOjpo
YW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQKICAgICB9CiB9CiAKLWJv
b2wgTWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBFdmVu
dExpc3RlbmVyJiBsaXN0ZW5lcikKK2Jvb2wgTWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0ZW5l
cjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikgY29uc3QKIHsKICAg
ICBpZiAoY29uc3QgTWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0ZW5lciogbWVkaWFDb250cm9s
c0FwcGxlRXZlbnRMaXN0ZW5lciA9IE1lZGlhQ29udHJvbHNBcHBsZUV2ZW50TGlzdGVuZXI6OmNh
c3QoJmxpc3RlbmVyKSkKICAgICAgICAgcmV0dXJuIG1fbWVkaWFDb250cm9scyA9PSBtZWRpYUNv
bnRyb2xzQXBwbGVFdmVudExpc3RlbmVyLT5tX21lZGlhQ29udHJvbHM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5oCmluZGV4IDY5OGNjMzg5ZDlm
MmQ3MjAyYmYyNDFkY2MxYmFmNzNmMDNiZjA0MjkuLmYyOGRkNmI3ZjUxNDEwYjFjZGVlZDQyYzgz
M2UwY2ZmOTNkMWNjMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHNBcHBsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbHNBcHBsZS5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIDog
MDsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3Ro
ZXIpIG92ZXJyaWRlOworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBv
dGhlcikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgTWVkaWFDb250cm9sc0FwcGxl
RXZlbnRMaXN0ZW5lcihNZWRpYUNvbnRyb2xzQXBwbGUqIG1lZGlhQ29udHJvbHMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApp
bmRleCA0NDE1NDMyMTQ0OGQxMTU0NWYyMTE0MjJjMWRmZDgwMzlmOGU2NDcwLi5hYzBlZGQ0ODZh
ZGY0YzJkZTA3YzgyYWFhYWM2YjMxMzEwMDJjYmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTExMiw3ICsxMTIs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5PcGVuRGF0YWJhc2VDYWxsYmFjaygpIHsgfQog
Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKSBvdmVycmlk
ZQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgY29uc3Qg
b3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzID09ICZvdGhlcjsKICAgICB9CkBA
IC0zNzEsNyArMzcxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+T3BlbkN1cnNvckNhbGxi
YWNrKCkgeyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3Ro
ZXIpIG92ZXJyaWRlCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90
aGVyKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMgPT0gJm90aGVy
OwogICAgIH0KQEAgLTY2MCw3ICs2NjAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5DbGVh
ck9iamVjdFN0b3JlTGlzdGVuZXIoKSB7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBF
dmVudExpc3RlbmVyJiBvdGhlcikgb3ZlcnJpZGUKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
RXZlbnRMaXN0ZW5lciYgb3RoZXIpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcyA9PSAmb3RoZXI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4
IGU3ODFiN2NjNGI5MWJhYmRmMzFmZDc4NjJiOTg4NTE3M2JhZmJlODAuLmI3NTQxZWQzODQxYzg1
OGJmNDA3M2JiNDliZjNiOWMzZGJlYjkxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
QEAgLTE3MjQsNyArMTcyNCw3IEBAIGJvb2wgRE9NV2luZG93Ojppc1NhbWVTZWN1cml0eU9yaWdp
bkFzTWFpbkZyYW1lKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgRE9NV2lu
ZG93OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBET01X
aW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJl
ZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgaWYg
KCFFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdURk1vdmUobGlzdGVu
ZXIpLCB1c2VDYXB0dXJlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTgyNyw3ICsxODI3
LDcgQEAgdm9pZCBET01XaW5kb3c6OnJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9uKCkKICNl
bmRpZgogfQogCi1ib29sIERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIsIGJvb2wgdXNlQ2Fw
dHVyZSkKK2Jvb2wgRE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJl
KQogewogICAgIGlmICghRXZlbnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBl
LCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5oCmluZGV4IDRiMjRiOTk4MTM3NzMyNzYzOGI2NGU2ODdkNzVmZTJmZDhkODcy
ZWUuLjAxNThlMTQwNjYyNzQ4ZmM4OTRmOTI1ODE0ZDQ2MjQ4MWJmYWY0MWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuaApAQCAtMjc5LDggKzI3OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICAvLyBFdmVudHMKICAgICAgICAgLy8gRXZlbnRUYXJnZXQgQVBJCi0gICAgICAgIGJv
b2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRy
PEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7Ci0gICAgICAgIGJv
b2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZl
bnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CisgICAgICAgIGJvb2wgYWRk
RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlz
dGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CisgICAgICAgIGJvb2wgcmVtb3Zl
RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5l
ciYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgcmVtb3ZlQWxsRXZl
bnRMaXN0ZW5lcnMoKSBvdmVycmlkZTsKIAogICAgICAgICB1c2luZyBFdmVudFRhcmdldDo6ZGlz
cGF0Y2hFdmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oCmluZGV4IDli
NTczOWNiYTgxNjlhMDRmZmExMmUxNDkzMjhiN2MzNDUzMDAyZTkuLjBiZjQxNDY0ODExYTA0OWE1
NGVmOWYyNDVlY2JjZmMzMzA0ZTYwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVs
ZW1lbnQuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGhhbmRsZUV2ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJDb3Jl
OjpFdmVudCopIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlRm9yRXZlbnROYW1lKGNvbnN0IFdURjo6
QXRvbWljU3RyaW5nJik7Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXIm
IHJocykgZmluYWwgeyByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RXZlbnRMaXN0ZW5lcio+
KHRoaXMpID09ICZyaHM7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5l
ciYgcmhzKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBXZWJDb3JlOjpF
dmVudExpc3RlbmVyKj4odGhpcykgPT0gJnJoczsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBwbGF5KCkgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYXVzZSgpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxNZWRpYUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9X
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQppbmRleCBhNGM2ZmEzY2RlMDZm
ZWNmMTk0YzVhMjI5MmZiZWQ1YzQ0N2MyZDkzLi5mNWJjYjEyYjM5OWYwZWM5NmYxYTA3ZGZmOGNi
ZjMyZjQwNGRmYTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9X
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQpA
QCAtODksNyArODksNyBAQCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50
OjpzZXRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaQogCiAgICAgaWYgKG1fbWVk
aWFFbGVtZW50ICYmIG1faXNMaXN0ZW5pbmcpIHsKICAgICAgICAgZm9yIChhdXRvJiBldmVudE5h
bWUgOiBvYnNlcnZlZEV2ZW50TmFtZXMoKSkKLSAgICAgICAgICAgIG1fbWVkaWFFbGVtZW50LT5y
ZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdGhpcywgZmFsc2UpOworICAgICAgICAgICAg
bV9tZWRpYUVsZW1lbnQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCAqdGhpcywgZmFs
c2UpOwogICAgIH0KICAgICBtX2lzTGlzdGVuaW5nID0gZmFsc2U7CiAKQEAgLTk5LDcgKzk5LDcg
QEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6c2V0TWVkaWFFbGVt
ZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChh
dXRvJiBldmVudE5hbWUgOiBvYnNlcnZlZEV2ZW50TmFtZXMoKSkKLSAgICAgICAgbV9tZWRpYUVs
ZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLCBmYWxzZSk7CisgICAgICAg
IG1fbWVkaWFFbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgKnRoaXMsIGZhbHNl
KTsKICAgICBtX2lzTGlzdGVuaW5nID0gdHJ1ZTsKIAogICAgIHVwZGF0ZUZvckV2ZW50TmFtZShl
dmVudE5hbWVBbGwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaAppbmRl
eCA3MTlhMjU3MGMwZmRiODI3ZDBlNmQzZmZhMWU2YmUzMzRkODIzZmRhLi42NjViZTFlYTgxOThl
YjFjYjVjZWZhODdhOGMwMTA4N2RkMDE4MGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50LmgKQEAgLTU5LDggKzU5LDcgQEAgcHVibGljOgogICAgIAogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgaGFuZGxlRXZlbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFdlYkNvcmU6OkV2ZW50Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVGb3JFdmVudE5hbWUo
Y29uc3QgV1RGOjpBdG9taWNTdHJpbmcmKTsKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZl
bnRMaXN0ZW5lciYgcmhzKSBvdmVycmlkZQotICAgICAgICB7cmV0dXJuIHN0YXRpY19jYXN0PFdl
YkNvcmU6OkV2ZW50TGlzdGVuZXIqPih0aGlzKSA9PSAmcmhzO30KKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgcmhzKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpFdmVudExpc3RlbmVyKj4odGhpcykgPT0gJnJoczsgfQogCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVu
dEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuY3BwCmluZGV4IGZjODMxZTY3NjU4YmEwOWI4OWE4M2IxZTc1ODlhMDAxY2Ji
NTk1NTEuLmFiMjQ1ZDU3ZjU4OWJkYmQwNTQxNGE3ODg0Mjk3YjgyMmQwY2Q2N2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTUyOCw3ICs1MjgsNyBAQCBib29sIFNWR0VsZW1lbnQ6
OmhhdmVMb2FkZWRSZXF1aXJlZFJlc291cmNlcygpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgU1ZHRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkK
K2Jvb2wgU1ZHRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkK
IHsgICAKICAgICAvLyBBZGQgZXZlbnQgbGlzdGVuZXIgdG8gcmVndWxhciBET00gZWxlbWVudAog
ICAgIGlmICghTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLmNvcHlS
ZWYoKSwgdXNlQ2FwdHVyZSkpCkBAIC01NDgsNyArNTQ4LDcgQEAgYm9vbCBTVkdFbGVtZW50Ojph
ZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZl
bnRMaXMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBTVkdFbGVtZW50OjpyZW1vdmVFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiBs
aXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBTVkdFbGVtZW50OjpyZW1vdmVFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0
ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIGlmIChjb250YWluaW5nU2hhZG93Um9vdCgp
KQogICAgICAgICByZXR1cm4gTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxp
c3RlbmVyLCB1c2VDYXB0dXJlKTsKQEAgLTU1OCw3ICs1NTgsNyBAQCBib29sIFNWR0VsZW1lbnQ6
OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50
TGlzdGVuZQogICAgIC8vIGV2ZW50IGxpc3RlbmVyIGluIGEgY2FjaGUuIElmIHdlIHdhbnQgdG8g
YmUgYWJsZSB0byBjYWxsIHJlbW92ZUV2ZW50TGlzdGVuZXIoKSBtdWx0aXBsZQogICAgIC8vIHRp
bWVzIG9uIGRpZmZlcmVudCBub2Rlcywgd2UgaGF2ZSB0byBkZWxheSBpdHMgaW1tZWRpYXRlIGRl
c3RydWN0aW9uLCB3aGljaCB3b3VsZCBoYXBwZW4KICAgICAvLyBhZnRlciB0aGUgZmlyc3QgY2Fs
bCBiZWxvdy4KLSAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gcHJvdGVjdG9yKGxpc3RlbmVyKTsK
KyAgICBSZWY8RXZlbnRMaXN0ZW5lcj4gcHJvdGVjdG9yKGxpc3RlbmVyKTsKIAogICAgIC8vIFJl
bW92ZSBldmVudCBsaXN0ZW5lciBmcm9tIHJlZ3VsYXIgRE9NIGVsZW1lbnQKICAgICBpZiAoIU5v
ZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSkp
CkBAIC01NzMsNyArNTczLDcgQEAgYm9vbCBTVkdFbGVtZW50OjpyZW1vdmVFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmUKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgIC8vIFRoaXMgY2FzZSBjYW4gb25seSBiZSBoaXQgZm9yIGV2
ZW50IGxpc3RlbmVycyBjcmVhdGVkIGZyb20gbWFya3VwCi0gICAgICAgIEFTU0VSVChsaXN0ZW5l
ci0+d2FzQ3JlYXRlZEZyb21NYXJrdXAoKSk7CisgICAgICAgIEFTU0VSVChsaXN0ZW5lci53YXND
cmVhdGVkRnJvbU1hcmt1cCgpKTsKIAogICAgICAgICAvLyBJZiB0aGUgZXZlbnQgbGlzdGVuZXIg
J2xpc3RlbmVyJyBoYXMgYmVlbiBjcmVhdGVkIGZyb20gbWFya3VwIGFuZCBoYXMgYmVlbiBmaXJl
ZCBiZWZvcmUKICAgICAgICAgLy8gdGhlbiBKU0xhenlFdmVudExpc3RlbmVyOjpwYXJzZUNvZGUo
KSBoYXMgYmVlbiBjYWxsZWQgYW5kIG1fanNGdW5jdGlvbiBvZiB0aGF0IGxpc3RlbmVyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnQuaAppbmRleCAzODE2ODEwMmFmNWVlNzVhZjc4N2NiMGZlMTVhOGU3YTJi
YTcxY2ZiLi45NmQ2YzkwNDYzMWFiMDk0ODhmYjViNmFhYmFlZTIwZmM2MmMzN2JhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50LmgKQEAgLTEzMyw4ICsxMzMsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIGJvb2wgaGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCk7CiAKLSAgICBib29sIGFkZEV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExp
c3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVtb3ZlRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lcios
IGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CisgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1
c2VDYXB0dXJlKSBvdmVycmlkZTsKKyAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBib29sIHVzZUNhcHR1cmUp
IG92ZXJyaWRlOwogICAgIGJvb2wgaGFzRm9jdXNFdmVudExpc3RlbmVycygpIGNvbnN0OwogCiAj
aWYgRU5BQkxFKENTU19SRUdJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RSZWZFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAK
aW5kZXggYzdkODQ2ZWEyMzFhZTE1MGRhODEyZGZhNzg1OTczODExZWVjMzZhYS4uNmRkYmI3NjI3
ZGE0Zjc5YzQxZWZjZTQ2NmFhNjU2OGVkN2QzZmNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJl
ZkVsZW1lbnQuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU1ZH
VFJlZlRhcmdldEV2ZW50TGlzdGVuZXIoU1ZHVFJlZkVsZW1lbnQmIHRyZWZFbGVtZW50KTsKIAog
ICAgIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50Kikgb3Zl
cnJpZGU7Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImKSBvdmVycmlk
ZTsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgU1ZHVFJlZkVsZW1lbnQmIG1fdHJlZkVsZW1lbnQ7CiAgICAgUmVmUHRyPEVs
ZW1lbnQ+IG1fdGFyZ2V0OwpAQCAtOTIsOCArOTIsOCBAQCB2b2lkIFNWR1RSZWZUYXJnZXRFdmVu
dExpc3RlbmVyOjphdHRhY2goUmVmUHRyPEVsZW1lbnQ+JiYgdGFyZ2V0KQogICAgIEFTU0VSVCh0
YXJnZXQuZ2V0KCkpOwogICAgIEFTU0VSVCh0YXJnZXQtPmluRG9jdW1lbnQoKSk7CiAKLSAgICB0
YXJnZXQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLkRPTVN1YnRyZWVNb2RpZmllZEV2
ZW50LCB0aGlzLCBmYWxzZSk7Ci0gICAgdGFyZ2V0LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFt
ZXMoKS5ET01Ob2RlUmVtb3ZlZEZyb21Eb2N1bWVudEV2ZW50LCB0aGlzLCBmYWxzZSk7CisgICAg
dGFyZ2V0LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5ET01TdWJ0cmVlTW9kaWZpZWRF
dmVudCwgKnRoaXMsIGZhbHNlKTsKKyAgICB0YXJnZXQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLkRPTU5vZGVSZW1vdmVkRnJvbURvY3VtZW50RXZlbnQsICp0aGlzLCBmYWxzZSk7CiAg
ICAgbV90YXJnZXQgPSBXVEZNb3ZlKHRhcmdldCk7CiB9CiAKQEAgLTEwMiwxMiArMTAyLDEyIEBA
IHZvaWQgU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI6OmRldGFjaCgpCiAgICAgaWYgKCFpc0F0
dGFjaGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fdGFyZ2V0LT5yZW1vdmVFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5ET01TdWJ0cmVlTW9kaWZpZWRFdmVudCwgdGhpcywgZmFsc2Up
OwotICAgIG1fdGFyZ2V0LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5ET01Ob2Rl
UmVtb3ZlZEZyb21Eb2N1bWVudEV2ZW50LCB0aGlzLCBmYWxzZSk7CisgICAgbV90YXJnZXQtPnJl
bW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLkRPTVN1YnRyZWVNb2RpZmllZEV2ZW50LCAq
dGhpcywgZmFsc2UpOworICAgIG1fdGFyZ2V0LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFt
ZXMoKS5ET01Ob2RlUmVtb3ZlZEZyb21Eb2N1bWVudEV2ZW50LCAqdGhpcywgZmFsc2UpOwogICAg
IG1fdGFyZ2V0ID0gbnVsbHB0cjsKIH0KIAotYm9vbCBTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5l
cjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikKK2Jvb2wgU1ZHVFJl
ZlRhcmdldEV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgbGlz
dGVuZXIpIGNvbnN0CiB7CiAgICAgaWYgKGNvbnN0IFNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVy
KiB0YXJnZXRMaXN0ZW5lciA9IFNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjpjYXN0KCZsaXN0
ZW5lcikpCiAgICAgICAgIHJldHVybiAmbV90cmVmRWxlbWVudCA9PSAmdGFyZ2V0TGlzdGVuZXIt
Pm1fdHJlZkVsZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9u
L1NWR1NNSUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01J
TEVsZW1lbnQuY3BwCmluZGV4IDdiMjk4NzBmM2UyZDRjZmM1MGIwZDEyNGNiMTIzOWY0YzNlNzU0
ZTYuLjBkMjRhNjE3NGZiZjFhOTRiZjJhZDdkOTkwZGUzMDQyNTg4ODIwYzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCkBAIC03Niw3ICs3
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIDogbnVsbHB0cjsKICAgICB9CiAKLSAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3RoZXIpIG92ZXJyaWRlOworICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgCiAgICAgdm9pZCBkaXNjb25uZWN0QW5pbWF0aW9uKCkKICAgICB7CkBAIC05Nyw3ICs5
Nyw3IEBAIHByaXZhdGU6CiAgICAgU1ZHU01JTEVsZW1lbnQ6OkNvbmRpdGlvbiogbV9jb25kaXRp
b247CiB9OwogCi1ib29sIENvbmRpdGlvbkV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0oY29uc3Qg
RXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpCitib29sIENvbmRpdGlvbkV2ZW50TGlzdGVuZXI6Om9w
ZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpIGNvbnN0CiB7CiAgICAgaWYg
KGNvbnN0IENvbmRpdGlvbkV2ZW50TGlzdGVuZXIqIGNvbmRpdGlvbkV2ZW50TGlzdGVuZXIgPSBD
b25kaXRpb25FdmVudExpc3RlbmVyOjpjYXN0KCZsaXN0ZW5lcikpCiAgICAgICAgIHJldHVybiBt
X2FuaW1hdGlvbiA9PSBjb25kaXRpb25FdmVudExpc3RlbmVyLT5tX2FuaW1hdGlvbiAmJiBtX2Nv
bmRpdGlvbiA9PSBjb25kaXRpb25FdmVudExpc3RlbmVyLT5tX2NvbmRpdGlvbjsKQEAgLTU0NSw3
ICs1NDUsNyBAQCB2b2lkIFNWR1NNSUxFbGVtZW50Ojpjb25uZWN0Q29uZGl0aW9ucygpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBBU1NFUlQoIWNvbmRpdGlvbi5tX2V2
ZW50TGlzdGVuZXIpOwogICAgICAgICAgICAgY29uZGl0aW9uLm1fZXZlbnRMaXN0ZW5lciA9IENv
bmRpdGlvbkV2ZW50TGlzdGVuZXI6OmNyZWF0ZSh0aGlzLCAmY29uZGl0aW9uKTsKLSAgICAgICAg
ICAgIGV2ZW50QmFzZS0+YWRkRXZlbnRMaXN0ZW5lcihjb25kaXRpb24ubV9uYW1lLCBjb25kaXRp
b24ubV9ldmVudExpc3RlbmVyLCBmYWxzZSk7CisgICAgICAgICAgICBldmVudEJhc2UtPmFkZEV2
ZW50TGlzdGVuZXIoY29uZGl0aW9uLm1fbmFtZSwgKmNvbmRpdGlvbi5tX2V2ZW50TGlzdGVuZXIs
IGZhbHNlKTsKICAgICAgICAgfSBlbHNlIGlmIChjb25kaXRpb24ubV90eXBlID09IENvbmRpdGlv
bjo6U3luY2Jhc2UpIHsKICAgICAgICAgICAgIEFTU0VSVCghY29uZGl0aW9uLm1fYmFzZUlELmlz
RW1wdHkoKSk7CiAgICAgICAgICAgICBjb25kaXRpb24ubV9zeW5jYmFzZSA9IHRyZWVTY29wZSgp
LmdldEVsZW1lbnRCeUlkKGNvbmRpdGlvbi5tX2Jhc2VJRCk7CkBAIC01NzcsNyArNTc3LDcgQEAg
dm9pZCBTVkdTTUlMRWxlbWVudDo6ZGlzY29ubmVjdENvbmRpdGlvbnMoKQogICAgICAgICAgICAg
Ly8gb3VyIGNvbmRpdGlvbiBldmVudCBsaXN0ZW5lciwgaW4gY2FzZSBpdCBsYXRlciBmaXJlcy4K
ICAgICAgICAgICAgIEVsZW1lbnQqIGV2ZW50QmFzZSA9IGV2ZW50QmFzZUZvcihjb25kaXRpb24p
OwogICAgICAgICAgICAgaWYgKGV2ZW50QmFzZSkKLSAgICAgICAgICAgICAgICBldmVudEJhc2Ut
PnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uZGl0aW9uLm1fbmFtZSwgY29uZGl0aW9uLm1fZXZlbnRM
aXN0ZW5lci5nZXQoKSwgZmFsc2UpOworICAgICAgICAgICAgICAgIGV2ZW50QmFzZS0+cmVtb3Zl
RXZlbnRMaXN0ZW5lcihjb25kaXRpb24ubV9uYW1lLCAqY29uZGl0aW9uLm1fZXZlbnRMaXN0ZW5l
ciwgZmFsc2UpOwogICAgICAgICAgICAgY29uZGl0aW9uLm1fZXZlbnRMaXN0ZW5lci0+ZGlzY29u
bmVjdEFuaW1hdGlvbigpOwogICAgICAgICAgICAgY29uZGl0aW9uLm1fZXZlbnRMaXN0ZW5lciA9
IG51bGxwdHI7CiAgICAgICAgIH0gZWxzZSBpZiAoY29uZGl0aW9uLm1fdHlwZSA9PSBDb25kaXRp
b246OlN5bmNiYXNlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9ET01FdmVudHND
bGFzc2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL0RPTUV2ZW50c0NsYXNzZXMuY3BwCmluZGV4
IDgwYjRkMmVhY2JiNWNmZDdjM2U1ZWZjNzFlYTlhMWVhMTRmY2EzYmUuLmYwYjMxMDA0YmU4ZTM2
MzM3YWU2ZmU3Yjk0YmU5YWQ4ZjFiMmVmNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
L0RPTUV2ZW50c0NsYXNzZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0RPTUV2ZW50c0Ns
YXNzZXMuY3BwCkBAIC02OCw3ICs2OCw3IEBAIFdlYkV2ZW50TGlzdGVuZXI6On5XZWJFdmVudExp
c3RlbmVyKCkKICAgICBtX2lET01FdmVudExpc3RlbmVyLT5SZWxlYXNlKCk7CiB9CiAKLWJvb2wg
V2ViRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBXZWJDb3JlOjpFdmVudExpc3RlbmVy
JiBvdGhlcikKK2Jvb2wgV2ViRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBXZWJDb3Jl
OjpFdmVudExpc3RlbmVyJiBvdGhlcikgY29uc3QKIHsKICAgICByZXR1cm4gKG90aGVyLnR5cGUo
KSA9PSBDUFBFdmVudExpc3RlbmVyVHlwZSAKICAgICAgICAgJiYgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBXZWJFdmVudExpc3RlbmVyKj4oJm90aGVyKS0+bV9pRE9NRXZlbnRMaXN0ZW5lciA9PSBt
X2lET01FdmVudExpc3RlbmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUV2
ZW50c0NsYXNzZXMuaCBiL1NvdXJjZS9XZWJLaXQvd2luL0RPTUV2ZW50c0NsYXNzZXMuaAppbmRl
eCA0YWIyY2VlMWMxZjMyYTk5YjcwOWNjZjQ4Mjc4NzIwNThlMTZkYzVlLi4xNTI2ZjlkNzZkMTIx
ZjU3OTZlYzhiNDIyYWE0Mjk2ZWExMzI0MmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9ET01FdmVudHNDbGFzc2VzLmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vRE9NRXZlbnRzQ2xh
c3Nlcy5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIFdlYkV2ZW50TGlzdGVuZXIgOiBwdWJsaWMg
V2ViQ29yZTo6RXZlbnRMaXN0ZW5lciB7CiBwdWJsaWM6CiAgICAgV2ViRXZlbnRMaXN0ZW5lcihJ
RE9NRXZlbnRMaXN0ZW5lciopOwogICAgIH5XZWJFdmVudExpc3RlbmVyKCk7Ci0gICAgdmlydHVh
bCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYpOworICAgIHZpcnR1YWwgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImKSBjb25zdDsKICAgICB2aXJ0dWFsIHZv
aWQgaGFuZGxlRXZlbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkNvcmU6
OkV2ZW50Kik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViRXZlbnRMaXN0ZW5lcj4gY3JlYXRl
KElET01FdmVudExpc3RlbmVyKik7CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24uaAppbmRl
eCA2M2E0OGFjNTYwNmI3NDRhOTUxMWEyN2U2NjJjODE4MDUyZmViMTNlLi5mNjMzOTcwMWU2NjAx
MDllMjkxYThmYzBjNWI5MWE0OTg5YTM0ZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24uaApAQCAt
ODQsNyArODQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UERGUGx1Z2luQW5ub3RhdGlvbkV2ZW50TGlzdGVuZXIoYW5ub3RhdGlvbikpOwogICAgICAgICB9
CiAKLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIGxpc3RlbmVy
KSBvdmVycmlkZSB7IHJldHVybiB0aGlzID09ICZsaXN0ZW5lcjsgfQorICAgICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRoaXMgPT0gJmxpc3RlbmVyOyB9CiAKICAgICAgICAgdm9pZCBzZXRBbm5vdGF0aW9u
KFBERlBsdWdpbkFubm90YXRpb24qIGFubm90YXRpb24pIHsgbV9hbm5vdGF0aW9uID0gYW5ub3Rh
dGlvbjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbkFubm90YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24ubW0KaW5kZXggNDdiYTljMjkzNTE4NGE1NTgw
ZDllNjc1YzcyNWVjMjdhY2JmM2EzYy4uM2NhN2U0ODk4ODdjZmU1OGM0M2M4ZWE3NDM0NmUxYzQ3
ODdjZWE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbQpAQCAtNjksOCArNjksOCBAQCB2b2lk
IFBERlBsdWdpbkFubm90YXRpb246OmF0dGFjaChFbGVtZW50KiBwYXJlbnQpCiAgICAgbV9lbGVt
ZW50ID0gY3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKTsKIAogICAgIG1fZWxlbWVudC0+c2V0QXR0
cmlidXRlKGNsYXNzQXR0ciwgImFubm90YXRpb24iKTsKLSAgICBtX2VsZW1lbnQtPmFkZEV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLmNoYW5nZUV2ZW50LCBtX2V2ZW50TGlzdGVuZXIsIGZhbHNl
KTsKLSAgICBtX2VsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJsdXJFdmVu
dCwgbV9ldmVudExpc3RlbmVyLCBmYWxzZSk7CisgICAgbV9lbGVtZW50LT5hZGRFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5jaGFuZ2VFdmVudCwgKm1fZXZlbnRMaXN0ZW5lciwgZmFsc2UpOwor
ICAgIG1fZWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYmx1ckV2ZW50LCAq
bV9ldmVudExpc3RlbmVyLCBmYWxzZSk7CiAKICAgICB1cGRhdGVHZW9tZXRyeSgpOwogCkBAIC04
Nyw4ICs4Nyw4IEBAIHZvaWQgUERGUGx1Z2luQW5ub3RhdGlvbjo6Y29tbWl0KCkKIAogUERGUGx1
Z2luQW5ub3RhdGlvbjo6flBERlBsdWdpbkFubm90YXRpb24oKQogewotICAgIG1fZWxlbWVudC0+
cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2hhbmdlRXZlbnQsIG1fZXZlbnRMaXN0
ZW5lci5nZXQoKSwgZmFsc2UpOwotICAgIG1fZWxlbWVudC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkuYmx1ckV2ZW50LCBtX2V2ZW50TGlzdGVuZXIuZ2V0KCksIGZhbHNlKTsKKyAg
ICBtX2VsZW1lbnQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNoYW5nZUV2ZW50
LCAqbV9ldmVudExpc3RlbmVyLCBmYWxzZSk7CisgICAgbV9lbGVtZW50LT5yZW1vdmVFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQsICptX2V2ZW50TGlzdGVuZXIsIGZhbHNlKTsK
IAogICAgIG1fZXZlbnRMaXN0ZW5lci0+c2V0QW5ub3RhdGlvbigwKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZp
ZWxkLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Q
YXNzd29yZEZpZWxkLm1tCmluZGV4IGIyYTNjN2YwZmVmYTViYjBmNTdmMTM1ZDNiMzZhYzcwMjE3
ZWRkN2IuLjY3NzY0NzU3MmQ2ZmEyMDFkYzMyOTMzZGIzMWIwNmRmYzkxYjA4MWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luUGFzc3dv
cmRGaWVsZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpblBhc3N3b3JkRmllbGQubW0KQEAgLTQ5LDE0ICs0OSwxNCBAQCBSZWY8UERGUGx1Z2lu
UGFzc3dvcmRGaWVsZD4gUERGUGx1Z2luUGFzc3dvcmRGaWVsZDo6Y3JlYXRlKFBERkxheWVyQ29u
dHJvbGxlciAqcAogCiBQREZQbHVnaW5QYXNzd29yZEZpZWxkOjp+UERGUGx1Z2luUGFzc3dvcmRG
aWVsZCgpCiB7Ci0gICAgZWxlbWVudCgpLT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMo
KS5rZXl1cEV2ZW50LCBldmVudExpc3RlbmVyKCksIGZhbHNlKTsKKyAgICBlbGVtZW50KCktPnJl
bW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleXVwRXZlbnQsICpldmVudExpc3RlbmVy
KCksIGZhbHNlKTsKIH0KIAogUGFzc1JlZlB0cjxFbGVtZW50PiBQREZQbHVnaW5QYXNzd29yZEZp
ZWxkOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpCiB7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IGVs
ZW1lbnQgPSBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQo
KTsKICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUodHlwZUF0dHIsICJwYXNzd29yZCIpOwotICAg
IGVsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleXVwRXZlbnQsIGV2ZW50
TGlzdGVuZXIoKSwgZmFsc2UpOworICAgIGVsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLmtleXVwRXZlbnQsICpldmVudExpc3RlbmVyKCksIGZhbHNlKTsKICAgICByZXR1cm4g
ZWxlbWVudDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0KaW5kZXggZmJlZDNh
NmZkYTY4OTNkOGQyZTU1MzVkYjQzM2RkMjk0NzE2ZmIxNy4uOGMwNzQ2OWM2ZDU4YWIxNzYyODE4
MDg4ZGJlMTk1NjJjMzc4ZmNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tCkBA
IC03OCw3ICs3OCw3IEBAIFJlZjxQREZQbHVnaW5UZXh0QW5ub3RhdGlvbj4gUERGUGx1Z2luVGV4
dEFubm90YXRpb246OmNyZWF0ZShQREZBbm5vdGF0aW9uICphbm5vCiAKIFBERlBsdWdpblRleHRB
bm5vdGF0aW9uOjp+UERGUGx1Z2luVGV4dEFubm90YXRpb24oKQogewotICAgIGVsZW1lbnQoKS0+
cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50LCBldmVudExpc3Rl
bmVyKCksIGZhbHNlKTsKKyAgICBlbGVtZW50KCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLmtleWRvd25FdmVudCwgKmV2ZW50TGlzdGVuZXIoKSwgZmFsc2UpOwogfQogCiBQYXNz
UmVmUHRyPEVsZW1lbnQ+IFBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9u
RWxlbWVudCgpCkBAIC05Nyw3ICs5Nyw3IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gUERGUGx1Z2lu
VGV4dEFubm90YXRpb246OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkKICAgICBlbHNlCiAgICAg
ICAgIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGlucHV0VGFnLCBmYWxzZSk7CiAK
LSAgICBlbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQs
IGV2ZW50TGlzdGVuZXIoKSwgZmFsc2UpOworICAgIGVsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIo
ZXZlbnROYW1lcygpLmtleWRvd25FdmVudCwgKmV2ZW50TGlzdGVuZXIoKSwgZmFsc2UpOwogCiAg
ICAgU3R5bGVkRWxlbWVudCogc3R5bGVkRWxlbWVudCA9IHN0YXRpY19jYXN0PFN0eWxlZEVsZW1l
bnQqPihlbGVtZW50LmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY5MWU4M2MyMjFmZTE3N2ZhZTE3OGFlODll
ZGRhMDRjY2YyNjU2ZmIuLmQwNzJlZWI4MTU1YzYwZDU3NWQzNDE3Mzk4ODczZGQ3MmE4YzI4YTIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNi0wNS0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIEdlbmVyYXRlIGJpbmRpbmdzIGNvZGUgZm9yIEV2ZW50VGFy
Z2V0LmFkZEV2ZW50TGlzdGVuZXIoKSAvIHJlbW92ZUV2ZW50TGlzdGVuZXIoKQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3ODgyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmViYXNlbGluZSBleGlzdGlu
ZyB0ZXN0IG5vdyB0aGF0IHRoZSAnbGVuZ3RoJyBwcm9wZXJ0eSBvZiB0aG9zZSBmdW5jdGlvbnMK
KyAgICAgICAgaGF2ZSBjaGFuZ2VkLiBUaGlzIGlzIGJlY2F1c2UgdGhlIElETCBoYXMgYmVlbiB1
cGRhdGVkIHRvIG1hdGNoIG91cgorICAgICAgICBpbXBsZW1lbnRhdGlvbiAoYWxsIHBhcmFtZXRl
cnMgYXJlIG9wdGlvbmFsKS4gV2hpbGUgdGhpcyBkb2VzIG5vdCBtYXRjaAorICAgICAgICB0aGUg
c3BlY2lmaWNhdGlvbiwgdGhlIG5ldyBsZW5ndGggbm93IG1hdGNoZXMgb3VyIGFjdHVhbCBiZWhh
dmlvci4KKworICAgICAgICAqIGpzL2RvbS9mdW5jdGlvbi1sZW5ndGgtZXhwZWN0ZWQudHh0Ogor
CiAyMDE2LTA1LTE4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+
CiAKICAgICAgICAgU3luYyBET00gZXhjZXB0aW9uIHR5cGVzIHdpdGggV2ViSURMIGFuZCB1cGRh
dGUgcHJvbWlzZSByZWplY3Rpb25zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9pbnRlcmZhY2VzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2ludGVyZmFjZXMtZXhw
ZWN0ZWQudHh0CmluZGV4IDcxOTc2MmJmODYyNzgxOWU0NTljNWM2ZjljNTVhMjUwODJiODU3Yjgu
LjMyNTJkODc1MTYwZWQ4YTk1NDk1ZGFhNzgxZmMwYzkyOWUyMjI0YTggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2ludGVyZmFjZXMt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvZG9tL2ludGVyZmFjZXMtZXhwZWN0ZWQudHh0CkBAIC0xMTAsOCArMTEwLDggQEAgUEFT
UyBFdmVudFRhcmdldCBpbnRlcmZhY2Ugb2JqZWN0IGxlbmd0aAogUEFTUyBFdmVudFRhcmdldCBp
bnRlcmZhY2Ugb2JqZWN0IG5hbWUgCiBQQVNTIEV2ZW50VGFyZ2V0IGludGVyZmFjZTogZXhpc3Rl
bmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IAogUEFTUyBF
dmVudFRhcmdldCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZh
Y2UgcHJvdG90eXBlIG9iamVjdCdzICJjb25zdHJ1Y3RvciIgcHJvcGVydHkgCi1QQVNTIEV2ZW50
VGFyZ2V0IGludGVyZmFjZTogb3BlcmF0aW9uIGFkZEV2ZW50TGlzdGVuZXIoRE9NU3RyaW5nLEV2
ZW50TGlzdGVuZXIsW29iamVjdCBPYmplY3RdLFtvYmplY3QgT2JqZWN0XSkgCi1QQVNTIEV2ZW50
VGFyZ2V0IGludGVyZmFjZTogb3BlcmF0aW9uIHJlbW92ZUV2ZW50TGlzdGVuZXIoRE9NU3RyaW5n
LEV2ZW50TGlzdGVuZXIsW29iamVjdCBPYmplY3RdLFtvYmplY3QgT2JqZWN0XSkgCitGQUlMIEV2
ZW50VGFyZ2V0IGludGVyZmFjZTogb3BlcmF0aW9uIGFkZEV2ZW50TGlzdGVuZXIoRE9NU3RyaW5n
LEV2ZW50TGlzdGVuZXIsW29iamVjdCBPYmplY3RdLFtvYmplY3QgT2JqZWN0XSkgYXNzZXJ0X2Vx
dWFsczogcHJvcGVydHkgaGFzIHdyb25nIC5sZW5ndGggZXhwZWN0ZWQgMiBidXQgZ290IDAKK0ZB
SUwgRXZlbnRUYXJnZXQgaW50ZXJmYWNlOiBvcGVyYXRpb24gcmVtb3ZlRXZlbnRMaXN0ZW5lcihE
T01TdHJpbmcsRXZlbnRMaXN0ZW5lcixbb2JqZWN0IE9iamVjdF0sW29iamVjdCBPYmplY3RdKSBh
c3NlcnRfZXF1YWxzOiBwcm9wZXJ0eSBoYXMgd3JvbmcgLmxlbmd0aCBleHBlY3RlZCAyIGJ1dCBn
b3QgMAogUEFTUyBFdmVudFRhcmdldCBpbnRlcmZhY2U6IG9wZXJhdGlvbiBkaXNwYXRjaEV2ZW50
KEV2ZW50KSAKIFBBU1MgRXZlbnRMaXN0ZW5lciBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJv
cGVydGllcyBvZiBpbnRlcmZhY2Ugb2JqZWN0IAogUEFTUyBFdmVudExpc3RlbmVyIGludGVyZmFj
ZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2Z1bmN0aW9uLWxlbmd0aC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vZnVuY3Rpb24tbGVuZ3RoLWV4cGVjdGVkLnR4dApp
bmRleCA0YTM2Yjk4ZjZiOGMyMjA4MjRiYjkyZWEwODVhYzEzYTYwNGI0N2VhLi5lOTViZTUwZTUw
NjVhZDc3MTZjYjU4OTMwZjQ4ZTIzMTc0YTRhOTU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9q
cy9kb20vZnVuY3Rpb24tbGVuZ3RoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9k
b20vZnVuY3Rpb24tbGVuZ3RoLWV4cGVjdGVkLnR4dApAQCAtOCw3ICs4LDcgQEAgUEFTUyB3aW5k
b3cub3Blbi5sZW5ndGggaXMgMgogUEFTUyB3aW5kb3cuc2hvd01vZGFsRGlhbG9nLmxlbmd0aCBp
cyAxCiBQQVNTIHdpbmRvdy5zZXRUaW1lb3V0Lmxlbmd0aCBpcyAxCiBQQVNTIHdpbmRvdy5jbGVh
clRpbWVvdXQubGVuZ3RoIGlzIDAKLVBBU1Mgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIubGVuZ3Ro
IGlzIDIKK0ZBSUwgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIubGVuZ3RoIHNob3VsZCBiZSAyLiBX
YXMgMC4KIFBBU1MgQXJyYXkucHJvdG90eXBlLmNvbmNhdC5sZW5ndGggaXMgMQogUEFTUyBBcnJh
eS5wcm90b3R5cGUuam9pbi5sZW5ndGggaXMgMQogUEFTUyBBcnJheS5wcm90b3R5cGUucHVzaC5s
ZW5ndGggaXMgMQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279354</attachid>
            <date>2016-05-18 22:54:51 -0700</date>
            <delta_ts>2016-05-18 23:06:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157882-20160518225550.patch</filename>
            <type>text/plain</type>
            <size>76364</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxMDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzczYWNlZjg4MjA4MzNi
MTc1ZjVmNGFkMjMyY2NjZjVhMzQ2MDUyYi4uNGI5NjcyZWJkZGRkNDU2ZDU5NWIxODA3NzBkNmE1
NDBkYjk4Zjk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxNi0wNS0xOCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEdlbmVyYXRlIGJpbmRpbmdz
IGNvZGUgZm9yIEV2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoKSAvIHJlbW92ZUV2ZW50TGlz
dGVuZXIoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU3ODgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
R2VuZXJhdGUgYmluZGluZ3MgY29kZSBmb3IgRXZlbnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigp
IC8gcmVtb3ZlRXZlbnRMaXN0ZW5lcigpCisgICAgICAgIGluc3RlYWQgb2YgaGFyZGNvZGluZyB0
aGVtIGluIHRoZSBiaW5kaW5ncyBnZW5lcmF0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBy
ZWJhc2VsaW5lZCBleGlzdGluZyB0ZXN0LiBUaGUgb25seSBXZWItRXhwb3NlZCBiZWhhdmlvciBj
aGFuZ2UKKyAgICAgICAgaXMgdGhhdCAnbGVuZ3RoJyBwcm9wZXJ0eSBvZiB0aG9zZSBmdW5jdGlv
bnMgaGF2ZSBjaGFuZ2VkLiBUaGlzIGlzIGJlY2F1c2UgdGhlCisgICAgICAgIElETCBoYXMgYmVl
biB1cGRhdGVkIHRvIG1hdGNoIG91ciBpbXBsZW1lbnRhdGlvbiAoYWxsIHBhcmFtZXRlcnMgYXJl
IG9wdGlvbmFsKS4KKyAgICAgICAgV2hpbGUgdGhpcyBkb2VzIG5vdCBtYXRjaCB0aGUgc3BlY2lm
aWNhdGlvbiwgdGhlIG5ldyBsZW5ndGggbm93IG1hdGNoZXMgb3VyCisgICAgICAgIGFjdHVhbCBi
ZWhhdmlvci4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3Vy
Y2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6
YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NjaGVkdWxlZFNvdXJj
ZU5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9T
Y3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nv
ck5vZGU6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvY2Vz
c29yTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9TY3JpcHRQcm9jZXNzb3JOb2RlLmg6CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9HT2Jq
ZWN0RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHT2JqZWN0RXZlbnRMaXN0
ZW5lcjo6b3BlcmF0b3I9PSk6CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZl
bnRMaXN0ZW5lci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAg
ICAoV2ViQ29yZTo6ZXZlbnRIYW5kbGVyQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRM
aXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6Y2Fz
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OmpzRnVuY3Rp
b24pOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL29iamMvT2JqQ0V2ZW50TGlzdGVuZXIu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL09iakNFdmVudExpc3RlbmVyLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6T2JqQ0V2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbik6CisgICAgICAgIChKU1ZhbHVlVG9OYXRpdmUpOgorICAgICAgICAoR2V0UGFy
ZW50Q2xhc3NOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEdldENhbGxiYWNrQ2xhc3NOYW1lKTog
RGVsZXRlZC4KKyAgICAgICAgKEdldEpTQ2FsbGJhY2tEYXRhVHlwZSk6IERlbGV0ZWQuCisgICAg
ICAgICogZG9tL0V2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lck1h
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRMaXN0ZW5lclRvVmVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50TGlzdGVuZXJNYXA6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpyZW1v
dmVMaXN0ZW5lckZyb21WZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRMaXN0ZW5lck1h
cDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlMaXN0ZW5lcnNOb3RDcmVhdGVkRnJv
bU1hcmt1cFRvVGFyZ2V0KToKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lck1hcC5oOgorICAg
ICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdl
dDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6YWRk
RXZlbnRMaXN0ZW5lckZvckJpbmRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0
OjpyZW1vdmVFdmVudExpc3RlbmVyRm9yQmluZGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRU
YXJnZXQ6OnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRUYXJnZXQ6OmNsZWFyQXR0cmlidXRlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogZG9tL0V2
ZW50VGFyZ2V0Lmg6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0LmlkbDoKKyAgICAgICAgKiBk
b20vTWVzc2FnZVBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmFkZEV2
ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5oOgorICAgICAgICAqIGRv
bS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyeUFkZEV2ZW50TGlzdGVuZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3Jl
Ojp0cnlSZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlbW92
ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogZG9tL1Jl
Z2lzdGVyZWRFdmVudExpc3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RlcmVkRXZl
bnRMaXN0ZW5lcjo6UmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGh0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojph
ZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJl
bW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURvY3VtZW50OjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGh0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHNBcHBsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQXBw
bGU6OnNob3dDbG9zZWRDYXB0aW9uVHJhY2tMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbHNBcHBsZTo6aGlkZUNsb3NlZENhcHRpb25UcmFja0xpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PSk6CisgICAg
ICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRv
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAg
ICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjphZGRFdmVudExpc3Rl
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIp
OgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjph
dHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI6OmRl
dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcjo6b3Bl
cmF0b3I9PSk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb25kaXRpb25FdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50Ojpjb25uZWN0Q29uZGl0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6ZGlzY29ubmVjdENvbmRpdGlvbnMpOgorCiAy
MDE2LTA1LTE4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBN
b2Rlcm4gSURCOiBNYWtlIFRlc3RSdW5uZXIuY2xlYXJBbGxEYXRhYmFzZXMgYWxzbyBkZWxldGUg
SW5kZXhlZERCIGRhdGFiYXNlcyAob25jZSBkb2luZyBzbyBpcyBzdXBwb3J0ZWQpLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hh
bmdlTG9nCmluZGV4IDNhNDBkMzUwN2JjNjc2YzJmNzhhOTk1MWU2NTU2YWVhNTY5ZGMwNWEuLjQ0
M2FkNGE5YWIxNDUyZGU5MWNjMTRiYmY2Mjk3YmY4NjQyOGMxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAxNi0wNS0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIEdlbmVyYXRlIGJpbmRpbmdzIGNvZGUgZm9yIEV2ZW50VGFyZ2V0LmFk
ZEV2ZW50TGlzdGVuZXIoKSAvIHJlbW92ZUV2ZW50TGlzdGVuZXIoKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3ODgyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2VuZXJhdGUgYmluZGluZ3MgY29kZSBm
b3IgRXZlbnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigpIC8gcmVtb3ZlRXZlbnRMaXN0ZW5lcigp
CisgICAgICAgIGluc3RlYWQgb2YgaGFyZGNvZGluZyB0aGVtIGluIHRoZSBiaW5kaW5ncyBnZW5l
cmF0b3IuCisKKyAgICAgICAgKiBET01FdmVudHNDbGFzc2VzLmNwcDoKKyAgICAgICAgKFdlYkV2
ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIERPTUV2ZW50c0NsYXNzZXMuaDoK
KwogMjAxNi0wNS0xNiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQgcm9sbG91dCByMjAwOTI0LiBDYXVzZWQganMvcmVncmVzcy9zdHJp
bmctcmVwbGFjZS1nZW5lcmljLmh0bWwgdG8gZmFpbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjMWVhOTQ0NzM5
ZmJiNTRlNmJhZmEzOGFlMzM5NDEzNGMyMmMxODQyLi45MWE1Y2EyZmFlNDQxZTBkMDdjZTdjOTIw
NzRkMTU5NWI2Zjg4Zjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTYtMDUtMTgg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBHZW5lcmF0ZSBiaW5k
aW5ncyBjb2RlIGZvciBFdmVudFRhcmdldC5hZGRFdmVudExpc3RlbmVyKCkgLyByZW1vdmVFdmVu
dExpc3RlbmVyKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1Nzg4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEdlbmVyYXRlIGJpbmRpbmdzIGNvZGUgZm9yIEV2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVu
ZXIoKSAvIHJlbW92ZUV2ZW50TGlzdGVuZXIoKQorICAgICAgICBpbnN0ZWFkIG9mIGhhcmRjb2Rp
bmcgdGhlbSBpbiB0aGUgYmluZGluZ3MgZ2VuZXJhdG9yLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW5Bbm5vdGF0aW9uOjphdHRhY2gpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5B
bm5vdGF0aW9uOjp+UERGUGx1Z2luQW5ub3RhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW5QYXNzd29yZEZpZWxkOjp+UERGUGx1Z2luUGFzc3dvcmRGaWVsZCk6CisgICAgICAg
IChXZWJLaXQ6OlBERlBsdWdpblBhc3N3b3JkRmllbGQ6OmNyZWF0ZUFubm90YXRpb25FbGVtZW50
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0
aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6flBERlBs
dWdpblRleHRBbm5vdGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luVGV4dEFubm90
YXRpb246OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KToKKwogMjAxNi0wNS0xOCAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kZXJuIElEQjogTWFrZSBUZXN0
UnVubmVyLmNsZWFyQWxsRGF0YWJhc2VzIGFsc28gZGVsZXRlIEluZGV4ZWREQiBkYXRhYmFzZXMg
KG9uY2UgZG9pbmcgc28gaXMgc3VwcG9ydGVkKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcAppbmRl
eCBiYzRlZmI0YjcyY2U2ZDdlYmNjY2UzOGViNjA5OTk1Mzk0MGU5YjUwLi40Y2E2YTA0NDJmZDNh
OTMxNTdjNzI1MTRmMzQ3YTFmYWM3ODM2NGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwCkBA
IC0yMDEsNyArMjAxLDcgQEAgdm9pZCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OmZpbmlzaCgp
CiAgICAgfQogfQogCi1ib29sIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6YWRkRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+
JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgQXVkaW9TY2hlZHVsZWRTb3VyY2VO
b2RlOjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8
RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIGJvb2wg
c3VjY2VzcyA9IEF1ZGlvTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdURk1vdmUo
bGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKICAgICBpZiAoc3VjY2VzcyAmJiBldmVudFR5cGUgPT0g
ZXZlbnROYW1lcygpLmVuZGVkRXZlbnQpCkBAIC0yMDksNyArMjA5LDcgQEAgYm9vbCBBdWRpb1Nj
aGVkdWxlZFNvdXJjZU5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIFIKICAgICByZXR1cm4gc3VjY2VzczsKIH0KIAotYm9vbCBBdWRpb1NjaGVkdWxl
ZFNvdXJjZU5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIEF1
ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVy
ZSkKIHsKICAgICBib29sIHN1Y2Nlc3MgPSBBdWRpb05vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIo
ZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CiAgICAgaWYgKHN1Y2Nlc3MgJiYgZXZl
bnRUeXBlID09IGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgKaW5k
ZXggZWNlZGUzOGEwODk0MjZkMDljZGU2MWQ0MGNiN2Y3NDNiOWM2MTA1NS4uY2I0ZGQzY2RlODIx
NzVjZDE2NTYzZDBkODhmZmNjMTE3Y2ExZDA5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCkBAIC0x
MDEsOCArMTAxLDggQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgVW5rbm93
blRpbWU7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0
dXJlKSBvdmVycmlkZTsKLSAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpIG92ZXJy
aWRlOworICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7Cisg
ICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBFdmVudExpc3RlbmVyJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKICAgICB2b2lkIHJl
bW92ZUFsbEV2ZW50TGlzdGVuZXJzKCkgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAppbmRl
eCA2ODVjNjczMDg0YzhjMWYxODMzMGZmOWZmMzY3NjUzMDljZDM5M2U1Li4wY2M0MWI3NTY4YmIw
NTEwZTE1NWVlOWNlYzEwMDU2MWViNzRiYTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKQEAgLTI3Myw3ICsy
NzMsNyBAQCBkb3VibGUgU2NyaXB0UHJvY2Vzc29yTm9kZTo6bGF0ZW5jeVRpbWUoKSBjb25zdAog
ICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7CiB9CiAK
LWJvb2wgU2NyaXB0UHJvY2Vzc29yTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wg
dXNlQ2FwdHVyZSkKK2Jvb2wgU2NyaXB0UHJvY2Vzc29yTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVu
ZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICBib29sIHN1Y2Nlc3MgPSBBdWRpb05vZGU6OmFk
ZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7
CiAgICAgaWYgKHN1Y2Nlc3MgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5hdWRpb3Byb2Nl
c3NFdmVudCkKQEAgLTI4MSw3ICsyODEsNyBAQCBib29sIFNjcmlwdFByb2Nlc3Nvck5vZGU6OmFk
ZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cgogICAg
IHJldHVybiBzdWNjZXNzOwogfQogCi1ib29sIFNjcmlwdFByb2Nlc3Nvck5vZGU6OnJlbW92ZUV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIq
IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIFNjcmlwdFByb2Nlc3Nvck5vZGU6OnJl
bW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlz
dGVuZXImIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgYm9vbCBzdWNjZXNzID0g
QXVkaW9Ob2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNh
cHR1cmUpOwogICAgIGlmIChzdWNjZXNzICYmIGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuYXVk
aW9wcm9jZXNzRXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oCmluZGV4IDZiNjVkMDE4ZWJmYWY2OTZhMDVkZDhkM2Rm
ODA0YTYzYzRiYWQ0MjQuLjEzMDYyNTkwOTBhZDQzYjJhZjVkNjM3MjJkNTVlMjQzM2Q4M2JiMmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vz
c29yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJv
Y2Vzc29yTm9kZS5oCkBAIC03Myw4ICs3Myw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGZpcmVQ
cm9jZXNzRXZlbnQoKTsKIAotICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVy
ZSkgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlk
ZTsKKyAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAg
IGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
RXZlbnRMaXN0ZW5lciYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1v
dmVBbGxFdmVudExpc3RlbmVycygpIG92ZXJyaWRlOwogCiAgICAgLy8gRG91YmxlIGJ1ZmZlcmlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZl
bnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RF
dmVudExpc3RlbmVyLmNwcAppbmRleCBkNGExZDE4MzUxY2YxYWQ0MTMzMmRlMTU3ZDA2YjI5MTQx
NzhiYWFjLi5mMmVkOTMyNTFjNTJjNDY4MTlkZWQxM2I1YzBhZTYyM2U2MTEwMTUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RFdmVudExpc3RlbmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RFdmVudExp
c3RlbmVyLmNwcApAQCAtNTcsOSArNTcsOSBAQCB2b2lkIEdPYmplY3RFdmVudExpc3RlbmVyOjpn
b2JqZWN0RGVzdHJveWVkKCkKICAgICAvLyBhbmQgbGF0ZXIgdXNlLWFmdGVyLWZyZWUgd2l0aCB0
aGUgbV9oYW5kbGVyID0gMDsgYXNzaWdubWVudC4KICAgICBSZWZQdHI8R09iamVjdEV2ZW50TGlz
dGVuZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CiAKLSAgICBtX2NvcmVUYXJnZXQtPnJlbW92ZUV2
ZW50TGlzdGVuZXIobV9kb21FdmVudE5hbWUuZGF0YSgpLCB0aGlzLCBtX2NhcHR1cmUpOwotICAg
IG1fY29yZVRhcmdldCA9IDA7Ci0gICAgbV9oYW5kbGVyID0gMDsKKyAgICBtX2NvcmVUYXJnZXQt
PnJlbW92ZUV2ZW50TGlzdGVuZXIobV9kb21FdmVudE5hbWUuZGF0YSgpLCAqdGhpcywgbV9jYXB0
dXJlKTsKKyAgICBtX2NvcmVUYXJnZXQgPSBudWxscHRyOworICAgIG1faGFuZGxlciA9IG51bGxw
dHI7CiB9CiAKIHZvaWQgR09iamVjdEV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBFdmVudCogZXZlbnQpCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgR09i
amVjdEV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBF
dmVudCogZXZlbnQpCiAgICAgZ192YWx1ZV91bnNldChwYXJhbWV0ZXJzICsgMSk7CiB9CiAKLWJv
b2wgR09iamVjdEV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYg
bGlzdGVuZXIpCitib29sIEdPYmplY3RFdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IEV2
ZW50TGlzdGVuZXImIGxpc3RlbmVyKSBjb25zdAogewogICAgIGlmIChjb25zdCBHT2JqZWN0RXZl
bnRMaXN0ZW5lciogZ29iamVjdEV2ZW50TGlzdGVuZXIgPSBHT2JqZWN0RXZlbnRMaXN0ZW5lcjo6
Y2FzdCgmbGlzdGVuZXIpKQogICAgICAgICByZXR1cm4gbV90YXJnZXQgPT0gZ29iamVjdEV2ZW50
TGlzdGVuZXItPm1fdGFyZ2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9n
b2JqZWN0L0dPYmplY3RFdmVudExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9n
b2JqZWN0L0dPYmplY3RFdmVudExpc3RlbmVyLmgKaW5kZXggZTExN2Y0MGQ2ZWNlNWQ0ZjY2OGMw
OTliODA5NTZhNzNiMGZjNmM4Ni4uMjA2YmJkNzg5ZTMxMDk3MGVmZGQyY2E3ZDgyZmM3MWJhYzk2
ZmJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0
RXZlbnRMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09i
amVjdEV2ZW50TGlzdGVuZXIuaApAQCAtMzUsMTQgKzM1LDE0IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBib29sIGFkZEV2ZW50TGlzdGVuZXIoR09iamVjdCogdGFyZ2V0LCBFdmVudFRhcmdldCog
Y29yZVRhcmdldCwgY29uc3QgY2hhciogZG9tRXZlbnROYW1lLCBHQ2xvc3VyZSogaGFuZGxlciwg
Ym9vbCB1c2VDYXB0dXJlKQogICAgIHsKLSAgICAgICAgUmVmUHRyPEdPYmplY3RFdmVudExpc3Rl
bmVyPiBsaXN0ZW5lcihhZG9wdFJlZihuZXcgR09iamVjdEV2ZW50TGlzdGVuZXIodGFyZ2V0LCBj
b3JlVGFyZ2V0LCBkb21FdmVudE5hbWUsIGhhbmRsZXIsIHVzZUNhcHR1cmUpKSk7Ci0gICAgICAg
IHJldHVybiBjb3JlVGFyZ2V0LT5hZGRFdmVudExpc3RlbmVyKGRvbUV2ZW50TmFtZSwgbGlzdGVu
ZXIucmVsZWFzZSgpLCB1c2VDYXB0dXJlKTsKKyAgICAgICAgUmVmPEdPYmplY3RFdmVudExpc3Rl
bmVyPiBsaXN0ZW5lcihhZG9wdFJlZigqbmV3IEdPYmplY3RFdmVudExpc3RlbmVyKHRhcmdldCwg
Y29yZVRhcmdldCwgZG9tRXZlbnROYW1lLCBoYW5kbGVyLCB1c2VDYXB0dXJlKSkpOworICAgICAg
ICByZXR1cm4gY29yZVRhcmdldC0+YWRkRXZlbnRMaXN0ZW5lcihkb21FdmVudE5hbWUsIFdURk1v
dmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCByZW1v
dmVFdmVudExpc3RlbmVyKEdPYmplY3QqIHRhcmdldCwgRXZlbnRUYXJnZXQqIGNvcmVUYXJnZXQs
IGNvbnN0IGNoYXIqIGRvbUV2ZW50TmFtZSwgR0Nsb3N1cmUqIGhhbmRsZXIsIGJvb2wgdXNlQ2Fw
dHVyZSkKICAgICB7CiAgICAgICAgIEdPYmplY3RFdmVudExpc3RlbmVyIGtleSh0YXJnZXQsIGNv
cmVUYXJnZXQsIGRvbUV2ZW50TmFtZSwgaGFuZGxlciwgdXNlQ2FwdHVyZSk7Ci0gICAgICAgIHJl
dHVybiBjb3JlVGFyZ2V0LT5yZW1vdmVFdmVudExpc3RlbmVyKGRvbUV2ZW50TmFtZSwgJmtleSwg
dXNlQ2FwdHVyZSk7CisgICAgICAgIHJldHVybiBjb3JlVGFyZ2V0LT5yZW1vdmVFdmVudExpc3Rl
bmVyKGRvbUV2ZW50TmFtZSwga2V5LCB1c2VDYXB0dXJlKTsKICAgICB9CiAKICAgICBzdGF0aWMg
dm9pZCBnb2JqZWN0RGVzdHJveWVkQ2FsbGJhY2soR09iamVjdEV2ZW50TGlzdGVuZXIqIGxpc3Rl
bmVyLCBHT2JqZWN0KikKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgOiAw
OwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVu
ZXImIG90aGVyKTsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3Ro
ZXIpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIEdPYmplY3RFdmVudExpc3RlbmVy
KEdPYmplY3QqLCBFdmVudFRhcmdldCosIGNvbnN0IGNoYXIqIGRvbUV2ZW50TmFtZSwgR0Nsb3N1
cmUqLCBib29sIGNhcHR1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRMaXN0ZW5lci5jcHAKaW5kZXggY2M1NGZkNGE4MTg0OTc3YTYwNGI1Zjk0YTU4NTIxMzJhMWQ4
Njg3ZS4uYmZkNzhhODI5NWU4MzgxMjE5YjNiMmRiYTVmNDRhYjA5MGUxNzY2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCkBAIC0xNjMsMjAg
KzE2MywxMyBAQCBib29sIEpTRXZlbnRMaXN0ZW5lcjo6dmlydHVhbGlzQXR0cmlidXRlKCkgY29u
c3QKICAgICByZXR1cm4gbV9pc0F0dHJpYnV0ZTsKIH0KIAotYm9vbCBKU0V2ZW50TGlzdGVuZXI6
Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpCitib29sIEpTRXZlbnRM
aXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikgY29uc3QK
IHsKICAgICBpZiAoY29uc3QgSlNFdmVudExpc3RlbmVyKiBqc0V2ZW50TGlzdGVuZXIgPSBKU0V2
ZW50TGlzdGVuZXI6OmNhc3QoJmxpc3RlbmVyKSkKICAgICAgICAgcmV0dXJuIG1fanNGdW5jdGlv
biA9PSBqc0V2ZW50TGlzdGVuZXItPm1fanNGdW5jdGlvbiAmJiBtX2lzQXR0cmlidXRlID09IGpz
RXZlbnRMaXN0ZW5lci0+bV9pc0F0dHJpYnV0ZTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJl
ZjxKU0V2ZW50TGlzdGVuZXI+IGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvckFkZChKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIEpTQzo6SlNPYmplY3QmIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0JiB3cmFw
cGVyKQotewotICAgIC8vIEZJWE1FOiBUaGlzIGFic3RyYWN0aW9uIGlzIG5vIGxvbmdlciBuZWVk
ZWQuIEl0IHdhcyBwYXJ0IG9mIHN1cHBvcnQgZm9yIFNWR0VsZW1lbnRJbnN0YW5jZS4KLSAgICAv
LyBXZSBzaG91bGQgcmVtb3ZlIGl0IGFuZCBzaW1wbGlmeSB0aGUgYmluZGluZ3MgZ2VuZXJhdGlv
biBzY3JpcHRzLgotICAgIHJldHVybiBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZSgmbGlzdGVuZXIs
ICZ3cmFwcGVyLCBmYWxzZSwgY3VycmVudFdvcmxkKCZzdGF0ZSkpOwotfQotCiBzdGF0aWMgaW5s
aW5lIEpTQzo6SlNWYWx1ZSBldmVudEhhbmRsZXJBdHRyaWJ1dGUoRXZlbnRMaXN0ZW5lciogYWJz
dHJhY3RMaXN0ZW5lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBp
ZiAoIWFic3RyYWN0TGlzdGVuZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0V2ZW50TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRMaXN0ZW5lci5oCmluZGV4IGEwMzk1NTM3MWJmMWNmM2NjYTgwMDBhMjQ2YjRiNjY2YTg5ZTJh
OTUuLmU1NWEyNWIwZjY5NDNlMjJiMjgzOWYxODkxODNlOTY3OGJiOTE3MzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCkBAIC00Myw2ICs0MywxNCBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpTRXZlbnRMaXN0ZW5lcihs
aXN0ZW5lciwgd3JhcHBlciwgaXNBdHRyaWJ1dGUsIHdvcmxkKSk7CiAgICAgfQogCisgICAgc3Rh
dGljIFJlZlB0cjxKU0V2ZW50TGlzdGVuZXI+IGNyZWF0ZShKU0M6OkpTVmFsdWUgbGlzdGVuZXIs
IEpTQzo6SlNPYmplY3QmIHdyYXBwZXIsIGJvb2wgaXNBdHRyaWJ1dGUsIERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQpCisgICAgeworICAgICAgICBpZiAoVU5MSUtFTFkoIWxpc3RlbmVyLmlzT2JqZWN0
KCkpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBKU0V2ZW50TGlzdGVuZXIoSlNDOjphc09iamVjdChsaXN0ZW5lciksICZ3cmFwcGVy
LCBpc0F0dHJpYnV0ZSwgd29ybGQpKTsKKyAgICB9CisKICAgICBzdGF0aWMgY29uc3QgSlNFdmVu
dExpc3RlbmVyKiBjYXN0KGNvbnN0IEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGxpc3RlbmVyLT50eXBlKCkgPT0gSlNFdmVudExpc3RlbmVyVHlwZQpAQCAt
NTIsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5KU0V2ZW50TGlzdGVuZXIoKTsK
IAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgb3ZlcnJp
ZGU7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGV2ZW50IGxpc3RlbmVy
IHdhcyBjcmVhdGVkIGZvciBhbiBldmVudCBoYW5kbGVyIGF0dHJpYnV0ZSwgbGlrZSAib25sb2Fk
IiBvciAib25jbGljayIuCiAgICAgYm9vbCBpc0F0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNBdHRyaWJ1dGU7IH0KQEAgLTk5LDkgKzEwNyw2IEBAIHZvaWQgc2V0RG9jdW1lbnRFdmVudEhh
bmRsZXJBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTT2JqZWN0JiwgSFRNTEVsZW1l
CiBKU0M6OkpTVmFsdWUgZG9jdW1lbnRFdmVudEhhbmRsZXJBdHRyaWJ1dGUoRG9jdW1lbnQmLCBj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7CiB2b2lkIHNldERvY3VtZW50RXZlbnRIYW5k
bGVyQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU09iamVjdCYsIERvY3VtZW50Jiwg
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEpTQzo6SlNWYWx1ZSk7CiAKLVJlZjxKU0V2
ZW50TGlzdGVuZXI+IGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvckFkZChKU0M6OkV4ZWNTdGF0ZSYs
IEpTQzo6SlNPYmplY3QmIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0JiB3cmFwcGVyKTsKLVJlZjxK
U0V2ZW50TGlzdGVuZXI+IGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvclJlbW92ZShKU0M6OkV4ZWNT
dGF0ZSYsIEpTQzo6SlNPYmplY3QmIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0JiB3cmFwcGVyKTsK
LQogaW5saW5lIEpTQzo6SlNPYmplY3QqIEpTRXZlbnRMaXN0ZW5lcjo6anNGdW5jdGlvbihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSBjb25zdAogewogICAg
IC8vIGluaXRpYWxpemVKU0Z1bmN0aW9uIGNhbiB0cmlnZ2VyIGNvZGUgdGhhdCBkZWxldGVzIHRo
aXMgZXZlbnQgbGlzdGVuZXIKQEAgLTEzMywxMSArMTM4LDYgQEAgaW5saW5lIEpTQzo6SlNPYmpl
Y3QqIEpTRXZlbnRMaXN0ZW5lcjo6anNGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHQKICAgICByZXR1cm4gbV9qc0Z1bmN0aW9uLmdldCgpOwogfQogCi1pbmxpbmUgUmVmPEpT
RXZlbnRMaXN0ZW5lcj4gY3JlYXRlSlNFdmVudExpc3RlbmVyRm9yUmVtb3ZlKEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgSlNDOjpKU09iamVjdCYgbGlzdGVuZXIsIEpTQzo6SlNPYmplY3QmIHdyYXBw
ZXIpCi17Ci0gICAgcmV0dXJuIGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvckFkZChzdGF0ZSwgbGlz
dGVuZXIsIHdyYXBwZXIpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBKU0V2ZW50TGlzdGVuZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
b2JqYy9PYmpDRXZlbnRMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9P
YmpDRXZlbnRMaXN0ZW5lci5oCmluZGV4IGYzZTk4NDM3ZmJhYWQ3OWEyY2I1MzNkYmI4MzgxNDMz
NjFmM2E1M2EuLjIzYzk4NDU1NTRmZTk4ZTcwNzBmOWY5YTFkYmNmODdkNTc0MzQ1NmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ0V2ZW50TGlzdGVuZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL09iakNFdmVudExpc3RlbmVyLmgKQEAg
LTUyLDcgKzUyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIE9iakNFdmVudExp
c3RlbmVyKE9iakNMaXN0ZW5lcik7CiAgICAgICAgIHZpcnR1YWwgfk9iakNFdmVudExpc3RlbmVy
KCk7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXIm
KTsKKyAgICAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYp
IGNvbnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIEV2ZW50Kik7CiAKICAgICAgICAgUmV0YWluUHRyPE9iakNMaXN0ZW5lcj4gbV9s
aXN0ZW5lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ0V2
ZW50TGlzdGVuZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL09iakNFdmVudExp
c3RlbmVyLm1tCmluZGV4IDA5OWQ0NTVjMGNhNWI0NzU4NzQ0OTdlZGYyOWUyNzE2YjFmNDA2YzMu
LjMyZmU2ZTY1MWIxNTA1MWMyMTMyM2M3OWM2MDM5NDhiMjU0MGE0MDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ0V2ZW50TGlzdGVuZXIubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9PYmpDRXZlbnRMaXN0ZW5lci5tbQpAQCAtNzksNyAr
NzksNyBAQCB2b2lkIE9iakNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgRXZlbnQqIGV2ZW50KQogICAgIFtsaXN0ZW5lciBoYW5kbGVFdmVudDpraXQo
ZXZlbnQpXTsKIH0KIAotYm9vbCBPYmpDRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBF
dmVudExpc3RlbmVyJiBsaXN0ZW5lcikKK2Jvb2wgT2JqQ0V2ZW50TGlzdGVuZXI6Om9wZXJhdG9y
PT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpIGNvbnN0CiB7CiAgICAgaWYgKGNvbnN0
IE9iakNFdmVudExpc3RlbmVyKiBvYmpDRXZlbnRMaXN0ZW5lciA9IE9iakNFdmVudExpc3RlbmVy
OjpjYXN0KCZsaXN0ZW5lcikpCiAgICAgICAgIHJldHVybiBtX2xpc3RlbmVyID09IG9iakNFdmVu
dExpc3RlbmVyLT5tX2xpc3RlbmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBmNzE3OGQxNTAxNDE2M2IwMTVkMWZmYWVi
ZGYzYjA0YWM2Y2FkODMyLi41MTVkYzRmNjJkOGU0OWU2NWMxOTE1ZGVjYzUxZjVmNGJiMzYwZjg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQpAQCAtMTQzLDI2ICsxNDMsNiBAQCBzdWIgRXZlbnRIYW5kbGVyQXR0cmlidXRlRXZl
bnROYW1lCiAgICAgcmV0dXJuICJldmVudE5hbWVzKCkuJHtldmVudFR5cGV9RXZlbnQiOwogfQog
Ci1zdWIgR2VuZXJhdGVFdmVudExpc3RlbmVyQ2FsbAotewotICAgIG15ICRmdW5jdGlvbk5hbWUg
PSBzaGlmdDsKLSAgICBteSAkc3VmZml4ID0gdWNmaXJzdCAkZnVuY3Rpb25OYW1lOwotICAgIG15
ICRwYXNzUmVmUHRySGFuZGxpbmcgPSAoJGZ1bmN0aW9uTmFtZSBlcSAiYWRkIikgPyAiIiA6ICIu
cHRyKCkiOwotCi0gICAgJGltcGxJbmNsdWRlc3siSlNFdmVudExpc3RlbmVyLmgifSA9IDE7Ci0K
LSAgICBteSBAR2VuZXJhdGVFdmVudExpc3RlbmVySW1wbCA9ICgpOwotCi0gICAgcHVzaChAR2Vu
ZXJhdGVFdmVudExpc3RlbmVySW1wbCwgPDxFTkQpOwotICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBz
dGF0ZS0+YXJndW1lbnQoMSk7Ci0gICAgaWYgKFVOTElLRUxZKCFsaXN0ZW5lci5pc09iamVjdCgp
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBp
bXBsLiR7ZnVuY3Rpb25OYW1lfUV2ZW50TGlzdGVuZXIoc3RhdGUtPmFyZ3VtZW50KDApLnRvU3Ry
aW5nKHN0YXRlKS0+dG9BdG9taWNTdHJpbmcoc3RhdGUpLCBjcmVhdGVKU0V2ZW50TGlzdGVuZXJG
b3Ikc3VmZml4KCpzdGF0ZSwgKmFzT2JqZWN0KGxpc3RlbmVyKSwgKmNhc3RlZFRoaXMpJHBhc3NS
ZWZQdHJIYW5kbGluZywgc3RhdGUtPmFyZ3VtZW50KDIpLnRvQm9vbGVhbihzdGF0ZSkpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci1FTkQKLSAgICByZXR1cm4g
QEdlbmVyYXRlRXZlbnRMaXN0ZW5lckltcGw7Ci19Ci0KIHN1YiBHZXRQYXJlbnRDbGFzc05hbWUK
IHsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CkBAIC0zMjE5LDMwICszMTk5LDI0IEBAIEVO
RAogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAjIEZvciBjb21wYXRpYmlsaXR5IHdpdGgg
bGVnYWN5IGNvbnRlbnQsIHRoZSBFdmVudExpc3RlbmVyIGNhbGxzIGFyZSBnZW5lcmF0ZWQgd2l0
aG91dCBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2suCi0gICAgICAgICAgICAgICAgICAgIGlm
ICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSBlcSAiYWRkRXZlbnRMaXN0ZW5lciIpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUV2ZW50TGlz
dGVuZXJDYWxsKCJhZGQiKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5uYW1lIGVxICJyZW1vdmVFdmVudExpc3RlbmVyIikgewotICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRlRXZlbnRMaXN0ZW5lckNh
bGwoInJlbW92ZSIpKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjayhcQGltcGxDb250ZW50LCAk
ZnVuY3Rpb24sICRpbnRlcmZhY2UpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHJh
aXNlc0V4Y2VwdGlvbldpdGhNZXNzYWdlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlIGVjO1xuIik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkcmFpc2VzRXhjZXB0aW9uKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKFxAaW1wbENvbnRlbnQsICRm
dW5jdGlvbiwgJGludGVyZmFjZSk7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZnVu
Y3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrU2VjdXJpdHlGb3JO
b2RlIn0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9Ob2RlKHN0YXRlLCBpbXBsLiIgLiAkZnVuY3Rp
b24tPnNpZ25hdHVyZS0+bmFtZSAuICIoIiAuICgkcmFpc2VzRXhjZXB0aW9uID8gImVjIiA6ICIi
KSAuIikpKVxuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpO1xuIik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNET01CaW5kaW5nLmgifSA9
IDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICgk
cmFpc2VzRXhjZXB0aW9uV2l0aE1lc3NhZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSBlYztcbiIpOwor
ICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkcmFpc2VzRXhjZXB0aW9uKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDtcbiIpOworICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG15ICRudW1QYXJhbWV0ZXJzID0gQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OwotICAgICAg
ICAgICAgICAgICAgICAgICAgbXkgKCRmdW5jdGlvblN0cmluZywgJGR1bW15KSA9IEdlbmVyYXRl
UGFyYW1ldGVyc0NoZWNrKFxAaW1wbENvbnRlbnQsICRmdW5jdGlvbiwgJGludGVyZmFjZSwgJG51
bVBhcmFtZXRlcnMsICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSwgJHN2Z1Byb3BlcnR5VHlw
ZSwgJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlLCAkc3ZnTGlzdFByb3BlcnR5VHlwZSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25D
YWxsKCRmdW5jdGlvbiwgJGZ1bmN0aW9uU3RyaW5nLCAiICAgICIsICRzdmdQcm9wZXJ0eVR5cGUs
ICRpbnRlcmZhY2UpOworICAgICAgICAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5Rm9yTm9kZSJ9KSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIXNob3VsZEFs
bG93QWNjZXNzVG9Ob2RlKHN0YXRlLCBpbXBsLiIgLiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFt
ZSAuICIoIiAuICgkcmFpc2VzRXhjZXB0aW9uID8gImVjIiA6ICIiKSAuIikpKVxuIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bGwoKSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICRp
bXBsSW5jbHVkZXN7IkpTRE9NQmluZGluZy5oIn0gPSAxOwogICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgbXkgJG51bVBhcmFtZXRlcnMgPSBAeyRmdW5jdGlvbi0+
cGFyYW1ldGVyc307CisgICAgICAgICAgICAgICAgICAgIG15ICgkZnVuY3Rpb25TdHJpbmcsICRk
dW1teSkgPSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayhcQGltcGxDb250ZW50LCAkZnVuY3Rpb24s
ICRpbnRlcmZhY2UsICRudW1QYXJhbWV0ZXJzLCAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUs
ICRzdmdQcm9wZXJ0eVR5cGUsICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSwgJHN2Z0xp
c3RQcm9wZXJ0eVR5cGUpOworICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uRnVuY3Rpb25DYWxsKCRmdW5jdGlvbiwgJGZ1bmN0aW9uU3RyaW5nLCAiICAgICIsICRzdmdQ
cm9wZXJ0eVR5cGUsICRpbnRlcmZhY2UpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KIApAQCAtNDQ1Myw2ICs0NDI3LDkgQEAgc3ViIEpTVmFsdWVUb05hdGl2ZQogCiAgICAgQWRk
VG9JbXBsSW5jbHVkZXMoIkpTJHR5cGUuaCIsICRjb25kaXRpb25hbCk7CiAKKyAgICAjIEZJWE1F
OiBFdmVudExpc3RlbmVyIHNob3VsZCBiZSBhIGNhbGxiYWNrIGludGVyZmFjZS4KKyAgICByZXR1
cm4gIkpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKCR2YWx1ZSwgKmNhc3RlZFRoaXMsIGZhbHNlLCBj
dXJyZW50V29ybGQoc3RhdGUpKSIgaWYgJHR5cGUgZXEgIkV2ZW50TGlzdGVuZXIiOworCiAgICAg
bXkgJGV4dGVuZGVkQXR0cmlidXRlcyA9ICRjb2RlR2VuZXJhdG9yLT5nZXRJbnRlcmZhY2VFeHRl
bmRlZEF0dHJpYnV0ZXNGcm9tTmFtZSgkdHlwZSk7CiAgICAgcmV0dXJuICgiSlMke3R5cGV9Ojp0
b1dyYXBwZWQoKnN0YXRlLCAkdmFsdWUpIiwgMSkgaWYgJGV4dGVuZGVkQXR0cmlidXRlcy0+eyJK
U0N1c3RvbVRvTmF0aXZlT2JqZWN0In07CiAgICAgcmV0dXJuICgiSlMke3R5cGV9Ojp0b1dyYXBw
ZWQoJHZhbHVlKSIsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCAyNjFmYTcwYTU1ZGNjMGM2NTZjZGQyMzdm
Y2M3MGMyNDMzNGEzMWIyLi5lOGE0NmE5MjdmMGNjMDY3YzA5ODg3YTk1N2YxZmZkZGFiYTgwZThi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcApAQCAtNDQzMCwxMCArNDQzMCwxOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5lcihFeGVj
U3RhdAogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAiYWRkRXZlbnRMaXN0ZW5lciIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSBsaXN0ZW5lciA9IHN0YXRlLT5hcmd1bWVudCgxKTsK
LSAgICBpZiAoVU5MSUtFTFkoIWxpc3RlbmVyLmlzT2JqZWN0KCkpKQorICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgYXV0
byB0eXBlID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKHN0YXRlKTsKKyAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBhdXRvIGxpc3RlbmVyID0gSlNFdmVudExpc3Rl
bmVyOjpjcmVhdGUoc3RhdGUtPmFyZ3VtZW50KDEpLCAqY2FzdGVkVGhpcywgZmFsc2UsIGN1cnJl
bnRXb3JsZChzdGF0ZSkpOworICAgIGlmIChVTkxJS0VMWSghbGlzdGVuZXIpKQorICAgICAgICBy
ZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDEsICJsaXN0ZW5lciIsICJUZXN0
T2JqIiwgImFkZEV2ZW50TGlzdGVuZXIiLCAiRXZlbnRMaXN0ZW5lciIpOworICAgIGF1dG8gdXNl
Q2FwdHVyZSA9IHN0YXRlLT5hcmd1bWVudCgyKS50b0Jvb2xlYW4oc3RhdGUpOworICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGltcGwuYWRkRXZlbnRMaXN0ZW5lcihzdGF0ZS0+
YXJndW1lbnQoMCkudG9TdHJpbmcoc3RhdGUpLT50b0F0b21pY1N0cmluZyhzdGF0ZSksIGNyZWF0
ZUpTRXZlbnRMaXN0ZW5lckZvckFkZCgqc3RhdGUsICphc09iamVjdChsaXN0ZW5lciksICpjYXN0
ZWRUaGlzKSwgc3RhdGUtPmFyZ3VtZW50KDIpLnRvQm9vbGVhbihzdGF0ZSkpOworICAgIGltcGwu
YWRkRXZlbnRMaXN0ZW5lcihXVEZNb3ZlKHR5cGUpLCAqbGlzdGVuZXIsIFdURk1vdmUodXNlQ2Fw
dHVyZSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
QEAgLTQ0NDUsMTAgKzQ0NTMsMTggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuZXIoRXhlY1MKICAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlbW92ZUV2ZW50
TGlzdGVuZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwotICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBzdGF0ZS0+YXJndW1lbnQoMSk7Ci0gICAgaWYgKFVO
TElLRUxZKCFsaXN0ZW5lci5pc09iamVjdCgpKSkKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDIpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgIGF1dG8gdHlwZSA9IHN0
YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CisgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CisgICAgYXV0byBsaXN0ZW5lciA9IEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRl
KHN0YXRlLT5hcmd1bWVudCgxKSwgKmNhc3RlZFRoaXMsIGZhbHNlLCBjdXJyZW50V29ybGQoc3Rh
dGUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWxpc3RlbmVyKSkKKyAgICAgICAgcmV0dXJuIHRocm93
QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAxLCAibGlzdGVuZXIiLCAiVGVzdE9iaiIsICJyZW1v
dmVFdmVudExpc3RlbmVyIiwgIkV2ZW50TGlzdGVuZXIiKTsKKyAgICBhdXRvIHVzZUNhcHR1cmUg
PSBzdGF0ZS0+YXJndW1lbnQoMikudG9Cb29sZWFuKHN0YXRlKTsKKyAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLSAgICBpbXBsLnJlbW92ZUV2ZW50TGlzdGVuZXIoc3RhdGUtPmFyZ3Vt
ZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dG9BdG9taWNTdHJpbmcoc3RhdGUpLCBjcmVhdGVKU0V2
ZW50TGlzdGVuZXJGb3JSZW1vdmUoKnN0YXRlLCAqYXNPYmplY3QobGlzdGVuZXIpLCAqY2FzdGVk
VGhpcykucHRyKCksIHN0YXRlLT5hcmd1bWVudCgyKS50b0Jvb2xlYW4oc3RhdGUpKTsKKyAgICBp
bXBsLnJlbW92ZUV2ZW50TGlzdGVuZXIoV1RGTW92ZSh0eXBlKSwgKmxpc3RlbmVyLCBXVEZNb3Zl
KHVzZUNhcHR1cmUpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaAppbmRleCBiYjRmOWYwMmRlYWQ1ZWQz
MTNjZTc2NDA2YTZkMTllZDhjODZmNmQxLi4yMjQzNTI5NTU5ZDgzMDMzNzU0ZmIwZTcyYmRkYzY0
YzhjOTUzYTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmgKQEAgLTQ4LDcgKzQ4LDcg
QEAgcHVibGljOgogICAgIH07CiAKICAgICB2aXJ0dWFsIH5FdmVudExpc3RlbmVyKCkgeyB9Ci0g
ICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYpID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJikgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
RXZlbnQqKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHdhc0NyZWF0ZWRGcm9tTWFya3VwKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50TGlzdGVuZXJNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAu
Y3BwCmluZGV4IGYxOTdjMjA2MDExYzhiYWE0OGQzMDgxZGRmYmMyMDFhMDVlMzg5MDguLmIwNGUx
MjEzYTU1Y2I2NWMyZjJlNTIzODllZTQ2NGQ3Zjg0NWVlZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRMaXN0ZW5lck1hcC5jcHAKQEAgLTk1LDkgKzk1LDkgQEAgVmVjdG9yPEF0b21pY1N0cmlu
Zz4gRXZlbnRMaXN0ZW5lck1hcDo6ZXZlbnRUeXBlcygpIGNvbnN0CiAgICAgcmV0dXJuIHR5cGVz
OwogfQogCi1zdGF0aWMgYm9vbCBhZGRMaXN0ZW5lclRvVmVjdG9yKEV2ZW50TGlzdGVuZXJWZWN0
b3IqIHZlY3RvciwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciwgYm9vbCB1c2VD
YXB0dXJlKQorc3RhdGljIGJvb2wgYWRkTGlzdGVuZXJUb1ZlY3RvcihFdmVudExpc3RlbmVyVmVj
dG9yKiB2ZWN0b3IsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1
cmUpCiB7Ci0gICAgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIgcmVnaXN0ZXJlZExpc3RlbmVyKGxp
c3RlbmVyLCB1c2VDYXB0dXJlKTsKKyAgICBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciByZWdpc3Rl
cmVkTGlzdGVuZXIoV1RGTW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOwogCiAgICAgaWYgKHZl
Y3Rvci0+ZmluZChyZWdpc3RlcmVkTGlzdGVuZXIpICE9IG5vdEZvdW5kKQogICAgICAgICByZXR1
cm4gZmFsc2U7IC8vIER1cGxpY2F0ZSBsaXN0ZW5lci4KQEAgLTEwNiwyMCArMTA2LDIwIEBAIHN0
YXRpYyBib29sIGFkZExpc3RlbmVyVG9WZWN0b3IoRXZlbnRMaXN0ZW5lclZlY3RvciogdmVjdG9y
LCBQYXNzUmVmUHRyPEV2ZW50TGlzCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRXZlbnRM
aXN0ZW5lck1hcDo6YWRkKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRy
PEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIEV2ZW50TGlz
dGVuZXJNYXA6OmFkZChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlz
dGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICBhc3NlcnROb0FjdGl2
ZUl0ZXJhdG9ycygpOwogCiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZW50cmllcykgewogICAg
ICAgICBpZiAoZW50cnkuZmlyc3QgPT0gZXZlbnRUeXBlKQotICAgICAgICAgICAgcmV0dXJuIGFk
ZExpc3RlbmVyVG9WZWN0b3IoZW50cnkuc2Vjb25kLmdldCgpLCBsaXN0ZW5lciwgdXNlQ2FwdHVy
ZSk7CisgICAgICAgICAgICByZXR1cm4gYWRkTGlzdGVuZXJUb1ZlY3RvcihlbnRyeS5zZWNvbmQu
Z2V0KCksIFdURk1vdmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKICAgICB9CiAKICAgICBtX2Vu
dHJpZXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGV2ZW50VHlwZSwgc3RkOjptYWtlX3VuaXF1ZTxF
dmVudExpc3RlbmVyVmVjdG9yPigpKSk7Ci0gICAgcmV0dXJuIGFkZExpc3RlbmVyVG9WZWN0b3Io
bV9lbnRyaWVzLmxhc3QoKS5zZWNvbmQuZ2V0KCksIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKKyAg
ICByZXR1cm4gYWRkTGlzdGVuZXJUb1ZlY3RvcihtX2VudHJpZXMubGFzdCgpLnNlY29uZC5nZXQo
KSwgV1RGTW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOwogfQogCi1zdGF0aWMgYm9vbCByZW1v
dmVMaXN0ZW5lckZyb21WZWN0b3IoRXZlbnRMaXN0ZW5lclZlY3RvciogbGlzdGVuZXJWZWN0b3Is
IEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUsIHNpemVfdCYgaW5kZXhP
ZlJlbW92ZWRMaXN0ZW5lcikKK3N0YXRpYyBib29sIHJlbW92ZUxpc3RlbmVyRnJvbVZlY3RvcihF
dmVudExpc3RlbmVyVmVjdG9yKiBsaXN0ZW5lclZlY3RvciwgRXZlbnRMaXN0ZW5lciYgbGlzdGVu
ZXIsIGJvb2wgdXNlQ2FwdHVyZSwgc2l6ZV90JiBpbmRleE9mUmVtb3ZlZExpc3RlbmVyKQogewog
ICAgIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyIHJlZ2lzdGVyZWRMaXN0ZW5lcihsaXN0ZW5lciwg
dXNlQ2FwdHVyZSk7CiAgICAgaW5kZXhPZlJlbW92ZWRMaXN0ZW5lciA9IGxpc3RlbmVyVmVjdG9y
LT5maW5kKHJlZ2lzdGVyZWRMaXN0ZW5lcik7CkBAIC0xMjksNyArMTI5LDcgQEAgc3RhdGljIGJv
b2wgcmVtb3ZlTGlzdGVuZXJGcm9tVmVjdG9yKEV2ZW50TGlzdGVuZXJWZWN0b3IqIGxpc3RlbmVy
VmVjdG9yLCBFdmVudEwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBFdmVudExpc3RlbmVy
TWFwOjpyZW1vdmUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIq
IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUsIHNpemVfdCYgaW5kZXhPZlJlbW92ZWRMaXN0ZW5l
cikKK2Jvb2wgRXZlbnRMaXN0ZW5lck1hcDo6cmVtb3ZlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlLCBzaXplX3Qm
IGluZGV4T2ZSZW1vdmVkTGlzdGVuZXIpCiB7CiAgICAgYXNzZXJ0Tm9BY3RpdmVJdGVyYXRvcnMo
KTsKIApAQCAtMTg1LDcgKzE4NSw3IEBAIHN0YXRpYyB2b2lkIGNvcHlMaXN0ZW5lcnNOb3RDcmVh
dGVkRnJvbU1hcmt1cFRvVGFyZ2V0KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUCiAgICAgICAg
IC8vIEV2ZW50IGxpc3RlbmVycyBjcmVhdGVkIGZyb20gbWFya3VwIGhhdmUgYWxyZWFkeSBiZWVu
IHRyYW5zZmVyZWQgdG8gdGhlIHNoYWRvdyB0cmVlIGR1cmluZyBjbG9uaW5nLgogICAgICAgICBp
ZiAobGlzdGVuZXIubGlzdGVuZXItPndhc0NyZWF0ZWRGcm9tTWFya3VwKCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgdGFyZ2V0LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwg
bGlzdGVuZXIubGlzdGVuZXIuY29weVJlZigpLCBsaXN0ZW5lci51c2VDYXB0dXJlKTsKKyAgICAg
ICAgdGFyZ2V0LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgKmxpc3RlbmVyLmxpc3RlbmVy
LCBsaXN0ZW5lci51c2VDYXB0dXJlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRM
aXN0ZW5lck1hcC5oCmluZGV4IDg5ZmY2NjY4ZDcyZmY5MDFkNjg3ZDNiNzdmYjM0MWIzYzZiODE3
ZjAuLjFlZmU2YWJmOGNlZWQyZDk2M2FjNzYzMTkxYzBhMmE4ZmY5YjYzMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuaApAQCAtNTQsOCArNTQsOCBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBjb250YWluc0NhcHR1cmluZyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkgY29u
c3Q7CiAKICAgICB2b2lkIGNsZWFyKCk7Ci0gICAgYm9vbCBhZGQoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSk7
Ci0gICAgYm9vbCByZW1vdmUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlz
dGVuZXIqLCBib29sIHVzZUNhcHR1cmUsIHNpemVfdCYgaW5kZXhPZlJlbW92ZWRMaXN0ZW5lcik7
CisgICAgYm9vbCBhZGQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExp
c3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpOworICAgIGJvb2wgcmVtb3ZlKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiwgYm9vbCB1c2VDYXB0dXJlLCBzaXpl
X3QmIGluZGV4T2ZSZW1vdmVkTGlzdGVuZXIpOwogICAgIEV2ZW50TGlzdGVuZXJWZWN0b3IqIGZp
bmQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpOwogICAgIFZlY3RvcjxBdG9taWNTdHJp
bmc+IGV2ZW50VHlwZXMoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKaW5k
ZXggZWMyMTA5ODY3YWMzMGQwYzMxYmU2OTI2MTYzMWMzMjUxNmZlYTNjZS4uZDI0ODM4NTkzZDE3
ZjZhYjU2ZDZkOTA5OTU4NTkyOTA1NmIwZTA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQu
Y3BwCkBAIC03NSwxMiArNzUsMjggQEAgYm9vbCBFdmVudFRhcmdldDo6aXNNZXNzYWdlUG9ydCgp
IGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEV2ZW50VGFyZ2V0OjphZGRFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBFdmVudFRhcmdldDo6YWRk
RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlz
dGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICByZXR1cm4gZW5zdXJl
RXZlbnRUYXJnZXREYXRhKCkuZXZlbnRMaXN0ZW5lck1hcC5hZGQoZXZlbnRUeXBlLCBXVEZNb3Zl
KGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiB9CiAKLWJvb2wgRXZlbnRUYXJnZXQ6OnJlbW92ZUV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIq
IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCit2b2lkIEV2ZW50VGFyZ2V0OjphZGRFdmVudExp
c3RlbmVyRm9yQmluZGluZ3MoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxF
dmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCit7CisgICAgLy8gRklY
TUU6IGxpc3RlbmVyIGlzIG5vdCBzdXBwb3NlZCB0byBiZSBudWxsYWJsZS4KKyAgICBpZiAoIWxp
c3RlbmVyKQorICAgICAgICByZXR1cm47CisgICAgYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUs
IGxpc3RlbmVyLnJlbGVhc2VOb25OdWxsKCksIHVzZUNhcHR1cmUpOworfQorCit2b2lkIEV2ZW50
VGFyZ2V0OjpyZW1vdmVFdmVudExpc3RlbmVyRm9yQmluZGluZ3MoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNh
cHR1cmUpCit7CisgICAgLy8gRklYTUU6IGxpc3RlbmVyIGlzIG5vdCBzdXBwb3NlZCB0byBiZSBu
dWxsYWJsZS4KKyAgICBpZiAoIWxpc3RlbmVyKQorICAgICAgICByZXR1cm47CisgICAgcmVtb3Zl
RXZlbnRMaXN0ZW5lcihldmVudFR5cGUsICpsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7Cit9CisKK2Jv
b2wgRXZlbnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAg
ICAgRXZlbnRUYXJnZXREYXRhKiBkID0gZXZlbnRUYXJnZXREYXRhKCk7CiAgICAgaWYgKCFkKQpA
QCAtMTEwLDEyICsxMjYsMTIgQEAgYm9vbCBFdmVudFRhcmdldDo6cmVtb3ZlRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW4KICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBFdmVudFRhcmdldDo6c2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBs
aXN0ZW5lcikKK2Jvb2wgRXZlbnRUYXJnZXQ6OnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3Rl
bmVyKQogewogICAgIGNsZWFyQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUpOwogICAg
IGlmICghbGlzdGVuZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gYWRkRXZl
bnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCBmYWxzZSk7CisgICAgcmV0dXJuIGFkZEV2
ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lci5yZWxlYXNlTm9uTnVsbCgpLCBmYWxzZSk7
CiB9CiAKIEV2ZW50TGlzdGVuZXIqIEV2ZW50VGFyZ2V0OjpnZXRBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKQpAQCAtMTMyLDcgKzE0OCw3IEBAIGJv
b2wgRXZlbnRUYXJnZXQ6OmNsZWFyQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSkKICAgICBFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IGdldEF0dHJp
YnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlKTsKICAgICBpZiAoIWxpc3RlbmVyKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBl
LCBsaXN0ZW5lciwgZmFsc2UpOworICAgIHJldHVybiByZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50
VHlwZSwgKmxpc3RlbmVyLCBmYWxzZSk7CiB9CiAKIGJvb2wgRXZlbnRUYXJnZXQ6OmRpc3BhdGNo
RXZlbnRGb3JCaW5kaW5ncyhFdmVudCogZXZlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXQuaAppbmRleCBmOWIwZjIxMTc0ZjU0MThkNTFmN2Q1NDM4MWIwMWM4Nzgy
MTJlYWFmLi4xYjFkZWQxOWE1ZDljYTU2NjRlNTBhOTk5ZDZjM2VmYjkyYTdlZTk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXQuaApAQCAtMTIxLDE1ICsxMjEsMTggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgRE9NV2luZG93KiB0b0RPTVdpbmRvdygpOwogICAgIHZpcnR1YWwgYm9vbCBpc01lc3Nh
Z2VQb3J0KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wg
dXNlQ2FwdHVyZSk7Ci0gICAgdmlydHVhbCBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUp
OworICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lckZvckJpbmRpbmdzKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKTsK
KyAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXJGb3JCaW5kaW5ncyhjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSk7
CisgICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpOworICAgIHZp
cnR1YWwgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBFdmVudExpc3RlbmVyJiwgYm9vbCB1c2VDYXB0dXJlKTsKKwogICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVBbGxFdmVudExpc3RlbmVycygpOwogICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEV2
ZW50KEV2ZW50Jik7CiAgICAgYm9vbCBkaXNwYXRjaEV2ZW50Rm9yQmluZGluZ3MoRXZlbnQqLCBF
eGNlcHRpb25Db2RlJik7IC8vIERPTSBBUEkKICAgICB2aXJ0dWFsIHZvaWQgdW5jYXVnaHRFeGNl
cHRpb25JbkV2ZW50SGFuZGxlcigpOwogCiAgICAgLy8gVXNlZCBmb3IgbGVnYWN5ICJvbkV2ZW50
IiBhdHRyaWJ1dGUgQVBJcy4KLSAgICBib29sIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4pOwor
ICAgIGJvb2wgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYpOwogICAgIGJvb2wgY2xlYXJBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKTsKICAgICBFdmVu
dExpc3RlbmVyKiBnZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5pZGwKaW5kZXggNTkzZTRjMDY4
NmEwOGI5MGMxM2ViZWJmNmNlYzI4MmY0Yjc2ZTg1ZC4uYzU5NDU4OTZlMDBhNjY3NTYzOTAzOWEw
ODYxZmY2NjU3NWVkYmUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaWRsCkBAIC0yNSw4
ICsyNSwxMCBAQAogICAgIEpTQ3VzdG9tVG9OYXRpdmVPYmplY3QsCiAgICAgT2JqQ1Byb3RvY29s
LAogXSBpbnRlcmZhY2UgRXZlbnRUYXJnZXQgewotICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFt
ZXRlcnNdIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihET01TdHJpbmcgdHlwZSwgRXZlbnRMaXN0ZW5l
cj8gbGlzdGVuZXIsIG9wdGlvbmFsIGJvb2xlYW4gdXNlQ2FwdHVyZSA9IGZhbHNlKTsKLSAgICBb
T2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzXSB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoRE9N
U3RyaW5nIHR5cGUsIEV2ZW50TGlzdGVuZXI/IGxpc3RlbmVyLCBvcHRpb25hbCBib29sZWFuIHVz
ZUNhcHR1cmUgPSBmYWxzZSk7CisgICAgLy8gRklYTUU6IFRoZSAndHlwZScgYW5kICdsaXN0ZW5l
cicgcGFyYW1ldGVycyBzaG91bGQgbm90IGJlIG9wdGlvbmFsLgorICAgIFtPYmpDTGVnYWN5VW5u
YW1lZFBhcmFtZXRlcnMsIEltcGxlbWVudGVkQXM9YWRkRXZlbnRMaXN0ZW5lckZvckJpbmRpbmdz
XSB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoW0F0b21pY1N0cmluZ10gb3B0aW9uYWwgRE9NU3RyaW5n
IHR5cGUgPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgRXZlbnRMaXN0ZW5lcj8gbGlzdGVuZXIsIG9w
dGlvbmFsIGJvb2xlYW4gdXNlQ2FwdHVyZSA9IGZhbHNlKTsKKyAgICBbT2JqQ0xlZ2FjeVVubmFt
ZWRQYXJhbWV0ZXJzLCBJbXBsZW1lbnRlZEFzPXJlbW92ZUV2ZW50TGlzdGVuZXJGb3JCaW5kaW5n
c10gdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKFtBdG9taWNTdHJpbmddIG9wdGlvbmFsIERPTVN0
cmluZyB0eXBlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIEV2ZW50TGlzdGVuZXI/IGxpc3RlbmVy
LCBvcHRpb25hbCBib29sZWFuIHVzZUNhcHR1cmUgPSBmYWxzZSk7CisKICAgICAvLyBGSVhNRTog
ZXZlbnQgc2hvdWxkIG5vdCBiZSBudWxsYWJsZS4KICAgICBbSW1wbGVtZW50ZWRBcz1kaXNwYXRj
aEV2ZW50Rm9yQmluZGluZ3MsIFJhaXNlc0V4Y2VwdGlvbl0gYm9vbGVhbiBkaXNwYXRjaEV2ZW50
KEV2ZW50PyBldmVudCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VQb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKaW5kZXggNWE4
NGE0NGEyMDhhYmViZTQxM2I5OWYxMWU2ZjUwMTE5ZGE0MDJiOC4uM2Q3ODQ3Y2FlZGIyOTIwZTNi
MjY0YjY1MmJjNTRjYmMzNDc4YTNhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VQb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCkBA
IC0yMjEsOSArMjIxLDkgQEAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0QXJyYXk+IE1lc3Nh
Z2VQb3J0OjplbnRhbmdsZVBvcnRzKFNjcmlwdEV4ZWN1dGlvbkNvbnQKICAgICByZXR1cm4gcG9y
dEFycmF5OwogfQogCi1ib29sIE1lc3NhZ2VQb3J0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwg
Ym9vbCB1c2VDYXB0dXJlKQorYm9vbCBNZXNzYWdlUG9ydDo6YWRkRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIs
IGJvb2wgdXNlQ2FwdHVyZSkKIHsKLSAgICBpZiAobGlzdGVuZXIgJiYgbGlzdGVuZXItPmlzQXR0
cmlidXRlKCkgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQpCisgICAg
aWYgKGxpc3RlbmVyLT5pc0F0dHJpYnV0ZSgpICYmIGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCku
bWVzc2FnZUV2ZW50KQogICAgICAgICBzdGFydCgpOwogICAgIHJldHVybiBFdmVudFRhcmdldFdp
dGhJbmxpbmVEYXRhOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5l
ciksIHVzZUNhcHR1cmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VQb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaAppbmRleCBiYWUwMWQ1
Yjk1MWRkNzgyMzdhZmRmODcyMzE0ZjgyNGQxNTdiMTZlLi45Y2ExMjRmNGEyZWZjOTgxZGY1NTYz
YmJiYjc1MDQ2Zjc5Y2ZjZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2Fn
ZVBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaApAQCAtOTIsNyAr
OTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIEEgcG9ydCBnZXRzIG5ldXRl
cmVkIHdoZW4gaXQgaXMgdHJhbnNmZXJyZWQgdG8gYSBuZXcgb3duZXIgdmlhIHBvc3RNZXNzYWdl
KCkuCiAgICAgICAgIGJvb2wgaXNOZXV0ZXJlZCgpIHsgcmV0dXJuICFtX2VudGFuZ2xlZENoYW5u
ZWw7IH0KIAotICAgICAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92
ZXJyaWRlOworICAgICAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJy
aWRlOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZXhwbGljaXQgTWVzc2FnZVBvcnQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDRjNDc1MTA0YjcyMjYwMmEz
OTM4OGJlMTIzOWE4ZTQ2MzdmNWJiNWQuLmQwYzVkNGM0MmVhYzNlMzZiZmJmODA1OTM3OTE2Y2U4
NzJhM2Y3N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTE5NjAsNyArMTk2MCw3IEBAIHZvaWQgTm9k
ZTo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KQogICAgIH0KIH0K
IAotc3RhdGljIGlubGluZSBib29sIHRyeUFkZEV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0Tm9k
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYm
IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitzdGF0aWMgaW5saW5lIGJvb2wgdHJ5QWRkRXZl
bnRMaXN0ZW5lcihOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAg
ICBpZiAoIXRhcmdldE5vZGUtPkV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlw
ZSwgbGlzdGVuZXIuY29weVJlZigpLCB1c2VDYXB0dXJlKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMTk5NiwxMiArMTk5NiwxMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdHJ5QWRkRXZlbnRM
aXN0ZW5lcihOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIE5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29s
IHVzZUNhcHR1cmUpCitib29sIE5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNh
cHR1cmUpCiB7CiAgICAgcmV0dXJuIHRyeUFkZEV2ZW50TGlzdGVuZXIodGhpcywgZXZlbnRUeXBl
LCBXVEZNb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9v
bCB0cnlSZW1vdmVFdmVudExpc3RlbmVyKE5vZGUqIHRhcmdldE5vZGUsIGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJl
KQorc3RhdGljIGlubGluZSBib29sIHRyeVJlbW92ZUV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0
Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3Rl
bmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgaWYgKCF0YXJnZXROb2RlLT5FdmVudFRhcmdl
dDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjAzNyw3ICsyMDM3LDcgQEAgc3RhdGljIGlubGlu
ZSBib29sIHRyeVJlbW92ZUV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgQXRv
bWljU3RyaW5nJgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE5vZGU6OnJlbW92ZUV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqIGxp
c3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIE5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBi
b29sIHVzZUNhcHR1cmUpCiB7CiAgICAgcmV0dXJuIHRyeVJlbW92ZUV2ZW50TGlzdGVuZXIodGhp
cywgZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA1
NTdkZGNjMTE3MzE5NGE4ZjBkZDE5NGNiMzZiMTc2NzBlMDRlMzQ5Li4yMDhlMjg4ZjE3OTc3MmRj
OWY5MjAwNzVjNDI2N2EyYjRlZGU0NTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTUwNiw4ICs1MDYsOCBA
QCBwdWJsaWM6CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2Uo
KSBjb25zdCBvdmVycmlkZTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3QgZmluYWw7IC8vIEltcGxlbWVudGVkIGluIERvY3VtZW50LmgK
IAotICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7Ci0g
ICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKKyAgICBib29sIGFk
ZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExp
c3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgIGJvb2wgcmVtb3ZlRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYs
IGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAKICAgICB1c2luZyBFdmVudFRhcmdldDo6ZGlz
cGF0Y2hFdmVudDsKICAgICBib29sIGRpc3BhdGNoRXZlbnQoRXZlbnQmKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgKaW5kZXggMTI0ODNm
YTYxMTg5ZTJlZTNmNDQ4MjY0YTY1ZjU5M2UyNGMwODlkYi4uMWNjNjljYTJlMjgxZTVlNjU4YjM4
YmE4NjVhYjczMGIxZTdiNTcxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1JlZ2lz
dGVyZWRFdmVudExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JlZ2lzdGVyZWRF
dmVudExpc3RlbmVyLmgKQEAgLTMxLDggKzMxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgY2xhc3MgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAg
UmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5l
ciwgYm9vbCB1c2VDYXB0dXJlKQotICAgICAgICAgICAgOiBsaXN0ZW5lcihsaXN0ZW5lcikKKyAg
ICAgICAgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIoUmVmPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVy
LCBib29sIHVzZUNhcHR1cmUpCisgICAgICAgICAgICA6IGxpc3RlbmVyKFdURk1vdmUobGlzdGVu
ZXIpKQogICAgICAgICAgICAgLCB1c2VDYXB0dXJlKHVzZUNhcHR1cmUpCiAgICAgICAgIHsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggODdl
ODAzYjNmYzY3MzdmYjRkZjhhY2MwYTViZTYyMTgxYzdmYjVhNS4uMzhiZTQ0YjI3OGFkOTRlOGQ0
YzRlMTlhZjQzOGJhZmYxZDI0MDYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCkBAIC01MjE2LDcgKzUyMTYsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmRp
c3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogICAgIHJldHVybiBIVE1MRWxlbWVudDo6ZGlzcGF0
Y2hFdmVudChldmVudCk7CiB9CiAKLWJvb2wgSFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+
JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6YWRk
RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlz
dGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICBpZiAoZXZlbnRUeXBl
ICE9IGV2ZW50TmFtZXMoKS53ZWJraXRwbGF5YmFja3RhcmdldGF2YWlsYWJpbGl0eWNoYW5nZWRF
dmVudCkKICAgICAgICAgcmV0dXJuIE5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBX
VEZNb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CkBAIC01MjM2LDcgKzUyMzYsNyBAQCBib29s
IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIFJlZlB0cjxFdgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEhUTUxNZWRp
YUVsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIEhUTUxN
ZWRpYUVsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAg
aWYgKGV2ZW50VHlwZSAhPSBldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFi
aWxpdHljaGFuZ2VkRXZlbnQpCiAgICAgICAgIHJldHVybiBOb2RlOjpyZW1vdmVFdmVudExpc3Rl
bmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaAppbmRleCBiMzg5Mzk4YjMzYWQ2N2EyODJjYTEyM2M5NTI4OWY1MmE0
YTUwZjM2Li42Njc5OGFjY2M3MTc2ZjY4NDBlMTA2YTg1YWJkNGU0MTlkYjllZGMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMzQ0LDggKzM0NCw4IEBAIHB1Ymxp
YzoKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgdm9pZCB3ZWJr
aXRTaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoKTsKLSAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBi
b29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2Fw
dHVyZSkgb3ZlcnJpZGU7CisgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKSBv
dmVycmlkZTsKKyAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCB3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZSgpIG92ZXJyaWRlOwog
ICAgIGJvb2wgY2FuUGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0IG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggMmYzNWIyOWIzOWI2NzI4
ZGUwYmE4NTc1ZWQ3NTY4ODgzZTU3N2NlNi4uN2ZkMmM3YzllNTc2YTk1YWIxNGY5Y2Q3YmU5YmM3
YTA4MGUzZmFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC02NCw3
ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBFdmVudExpc3RlbmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEV2ZW50TGlzdGVuZXImKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGhhbmRsZUV2ZW50KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCopIG92ZXJyaWRlOwogCiAgICAgSW1hZ2VEb2N1
bWVudCYgbV9kb2N1bWVudDsKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6
OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCkKICAgICAgICAgLy8gU2V0IHRoZSB2aWV3cG9ydCB0
byBiZSBpbiBkZXZpY2UgcGl4ZWxzIChyYXRoZXIgdGhhbiB0aGUgZGVmYXVsdCBvZiA5ODApLgog
ICAgICAgICBwcm9jZXNzVmlld3BvcnQoQVNDSUlMaXRlcmFsKCJ3aWR0aD1kZXZpY2Utd2lkdGgi
KSwgVmlld3BvcnRBcmd1bWVudHM6OkltYWdlRG9jdW1lbnQpOwogI2Vsc2UKLSAgICAgICAgUmVm
UHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gSW1hZ2VFdmVudExpc3RlbmVyOjpjcmVhdGUo
KnRoaXMpOworICAgICAgICBhdXRvIGxpc3RlbmVyID0gSW1hZ2VFdmVudExpc3RlbmVyOjpjcmVh
dGUoKnRoaXMpOwogICAgICAgICBpZiAoRE9NV2luZG93KiB3aW5kb3cgPSB0aGlzLT5kb21XaW5k
b3coKSkKICAgICAgICAgICAgIHdpbmRvdy0+YWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgbGlz
dGVuZXIuY29weVJlZigpLCBmYWxzZSk7CiAgICAgICAgIGltYWdlRWxlbWVudC0+YWRkRXZlbnRM
aXN0ZW5lcigiY2xpY2siLCBXVEZNb3ZlKGxpc3RlbmVyKSwgZmFsc2UpOwpAQCAtNDA3LDcgKzQw
Nyw3IEBAIHZvaWQgSW1hZ2VFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgRXZlbnQqIGV2ZW50KQogICAgIH0KIH0KIAotYm9vbCBJbWFnZUV2ZW50TGlz
dGVuZXI6Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3RoZXIpCitib29sIEltYWdl
RXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgY29u
c3QKIHsKICAgICAvLyBBbGwgSW1hZ2VFdmVudExpc3RlbmVyIG9iamVjdHMgY29tcGFyZSBhcyBl
cXVhbDsgT0sgc2luY2UgdGhlcmUgaXMgb25seSBvbmUgcGVyIGRvY3VtZW50LgogICAgIHJldHVy
biBvdGhlci50eXBlKCkgPT0gSW1hZ2VFdmVudExpc3RlbmVyVHlwZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwCmluZGV4IGNmN2FjNGJj
ZmY3MzI0ZTllMDAyYTljNzA0ZjMwMjJmOTMxOGY2MDIuLmQ5N2RhNzhlNTYxMTM3MWFjYjRkMjlk
YjAwZTBlZTBiY2M3NDdmZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbHNBcHBsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sc0FwcGxlLmNwcApAQCAtNTA5LDE1ICs1MDksMTUgQEAgdm9pZCBNZWRpYUNv
bnRyb2xzQXBwbGU6OnNob3dDbG9zZWRDYXB0aW9uVHJhY2tMaXN0KCkKICAgICBtX3BhbmVsLT5z
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5UG9pbnRlckV2ZW50cywgQ1NTVmFsdWVO
b25lKTsKIAogICAgIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyID0gZXZlbnRMaXN0ZW5lcigpOwot
ICAgIG1fY2xvc2VkQ2FwdGlvbnNDb250YWluZXItPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1l
cygpLndoZWVsRXZlbnQsICZsaXN0ZW5lciwgdHJ1ZSk7CisgICAgbV9jbG9zZWRDYXB0aW9uc0Nv
bnRhaW5lci0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkud2hlZWxFdmVudCwgbGlzdGVu
ZXIsIHRydWUpOwogCiAgICAgLy8gVHJhY2sgY2xpY2sgZXZlbnRzIGluIHRoZSBjYXB0dXJlIHBo
YXNlIGF0IHR3byBsZXZlbHMsIGZpcnN0IGF0IHRoZSBkb2N1bWVudCBsZXZlbAogICAgIC8vIHN1
Y2ggdGhhdCBhIGNsaWNrIG91dHNpZGUgb2YgdGhlIDx2aWRlbz4gbWF5IGRpc21pc3MgdGhlIHRy
YWNrIGxpc3QsIHNlY29uZCBhdCB0aGUKICAgICAvLyBtZWRpYSBjb250cm9scyBsZXZlbCBzdWNo
IHRoYXQgYSBjbGljayBhbnl3aGVyZSBvdXRzaWRlIG9mIHRoZSB0cmFjayBsaXN0IGhpZGVzIHRo
ZQogICAgIC8vIHRyYWNrIGxpc3QuIFRoZXNlIHR3byBsZXZlbHMgYXJlIG5lY2Vzc2FyeSBzaW5j
ZSBpdCB3b3VsZCBub3QgYmUgcG9zc2libGUgdG8gZ2V0IGEKICAgICAvLyByZWZlcmVuY2UgdG8g
dGhlIHRyYWNrIGxpc3Qgd2hlbiBoYW5kbGluZyB0aGUgZXZlbnQgb3V0c2lkZSBvZiB0aGUgc2hh
ZG93IHRyZWUuCi0gICAgZG9jdW1lbnQoKS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5j
bGlja0V2ZW50LCAmbGlzdGVuZXIsIHRydWUpOwotICAgIGFkZEV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLmNsaWNrRXZlbnQsICZsaXN0ZW5lciwgdHJ1ZSk7CisgICAgZG9jdW1lbnQoKS5hZGRF
dmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBsaXN0ZW5lciwgdHJ1ZSk7Cisg
ICAgYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgbGlzdGVuZXIsIHRy
dWUpOwogfQogCiB2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6aGlkZUNsb3NlZENhcHRpb25UcmFj
a0xpc3QoKQpAQCAtNTMxLDkgKzUzMSw5IEBAIHZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjpoaWRl
Q2xvc2VkQ2FwdGlvblRyYWNrTGlzdCgpCiAgICAgbV9wYW5lbC0+cmVtb3ZlSW5saW5lU3R5bGVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHMpOwogCiAgICAgRXZlbnRMaXN0ZW5lciYg
bGlzdGVuZXIgPSBldmVudExpc3RlbmVyKCk7Ci0gICAgbV9jbG9zZWRDYXB0aW9uc0NvbnRhaW5l
ci0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkud2hlZWxFdmVudCwgJmxpc3RlbmVy
LCB0cnVlKTsKLSAgICBkb2N1bWVudCgpLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygp
LmNsaWNrRXZlbnQsICZsaXN0ZW5lciwgdHJ1ZSk7Ci0gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkuY2xpY2tFdmVudCwgJmxpc3RlbmVyLCB0cnVlKTsKKyAgICBtX2Nsb3NlZENh
cHRpb25zQ29udGFpbmVyLT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS53aGVlbEV2
ZW50LCBsaXN0ZW5lciwgdHJ1ZSk7CisgICAgZG9jdW1lbnQoKS5yZW1vdmVFdmVudExpc3RlbmVy
KGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBsaXN0ZW5lciwgdHJ1ZSk7CisgICAgcmVtb3ZlRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgbGlzdGVuZXIsIHRydWUpOwogfQog
CiB2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6c2V0RnVsbHNjcmVlblNsaWRlclZvbHVtZSgpCkBA
IC01OTUsNyArNTk1LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQXBwbGVFdmVudExpc3RlbmVyOjpo
YW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQKICAgICB9CiB9CiAKLWJv
b2wgTWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBFdmVu
dExpc3RlbmVyJiBsaXN0ZW5lcikKK2Jvb2wgTWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0ZW5l
cjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikgY29uc3QKIHsKICAg
ICBpZiAoY29uc3QgTWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0ZW5lciogbWVkaWFDb250cm9s
c0FwcGxlRXZlbnRMaXN0ZW5lciA9IE1lZGlhQ29udHJvbHNBcHBsZUV2ZW50TGlzdGVuZXI6OmNh
c3QoJmxpc3RlbmVyKSkKICAgICAgICAgcmV0dXJuIG1fbWVkaWFDb250cm9scyA9PSBtZWRpYUNv
bnRyb2xzQXBwbGVFdmVudExpc3RlbmVyLT5tX21lZGlhQ29udHJvbHM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5oCmluZGV4IDY5OGNjMzg5ZDlm
MmQ3MjAyYmYyNDFkY2MxYmFmNzNmMDNiZjA0MjkuLmYyOGRkNmI3ZjUxNDEwYjFjZGVlZDQyYzgz
M2UwY2ZmOTNkMWNjMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHNBcHBsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbHNBcHBsZS5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIDog
MDsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3Ro
ZXIpIG92ZXJyaWRlOworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBv
dGhlcikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgTWVkaWFDb250cm9sc0FwcGxl
RXZlbnRMaXN0ZW5lcihNZWRpYUNvbnRyb2xzQXBwbGUqIG1lZGlhQ29udHJvbHMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApp
bmRleCA0NDE1NDMyMTQ0OGQxMTU0NWYyMTE0MjJjMWRmZDgwMzlmOGU2NDcwLi5hYzBlZGQ0ODZh
ZGY0YzJkZTA3YzgyYWFhYWM2YjMxMzEwMDJjYmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTExMiw3ICsxMTIs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5PcGVuRGF0YWJhc2VDYWxsYmFjaygpIHsgfQog
Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKSBvdmVycmlk
ZQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgY29uc3Qg
b3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzID09ICZvdGhlcjsKICAgICB9CkBA
IC0zNzEsNyArMzcxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+T3BlbkN1cnNvckNhbGxi
YWNrKCkgeyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3Ro
ZXIpIG92ZXJyaWRlCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90
aGVyKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMgPT0gJm90aGVy
OwogICAgIH0KQEAgLTY2MCw3ICs2NjAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5DbGVh
ck9iamVjdFN0b3JlTGlzdGVuZXIoKSB7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBF
dmVudExpc3RlbmVyJiBvdGhlcikgb3ZlcnJpZGUKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
RXZlbnRMaXN0ZW5lciYgb3RoZXIpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcyA9PSAmb3RoZXI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4
IGU3ODFiN2NjNGI5MWJhYmRmMzFmZDc4NjJiOTg4NTE3M2JhZmJlODAuLmI3NTQxZWQzODQxYzg1
OGJmNDA3M2JiNDliZjNiOWMzZGJlYjkxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
QEAgLTE3MjQsNyArMTcyNCw3IEBAIGJvb2wgRE9NV2luZG93Ojppc1NhbWVTZWN1cml0eU9yaWdp
bkFzTWFpbkZyYW1lKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgRE9NV2lu
ZG93OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBET01X
aW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJl
ZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgaWYg
KCFFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdURk1vdmUobGlzdGVu
ZXIpLCB1c2VDYXB0dXJlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTgyNyw3ICsxODI3
LDcgQEAgdm9pZCBET01XaW5kb3c6OnJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9uKCkKICNl
bmRpZgogfQogCi1ib29sIERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIsIGJvb2wgdXNlQ2Fw
dHVyZSkKK2Jvb2wgRE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJl
KQogewogICAgIGlmICghRXZlbnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBl
LCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5oCmluZGV4IDRiMjRiOTk4MTM3NzMyNzYzOGI2NGU2ODdkNzVmZTJmZDhkODcy
ZWUuLjAxNThlMTQwNjYyNzQ4ZmM4OTRmOTI1ODE0ZDQ2MjQ4MWJmYWY0MWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuaApAQCAtMjc5LDggKzI3OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICAvLyBFdmVudHMKICAgICAgICAgLy8gRXZlbnRUYXJnZXQgQVBJCi0gICAgICAgIGJv
b2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRy
PEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7Ci0gICAgICAgIGJv
b2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZl
bnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CisgICAgICAgIGJvb2wgYWRk
RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlz
dGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CisgICAgICAgIGJvb2wgcmVtb3Zl
RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5l
ciYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgcmVtb3ZlQWxsRXZl
bnRMaXN0ZW5lcnMoKSBvdmVycmlkZTsKIAogICAgICAgICB1c2luZyBFdmVudFRhcmdldDo6ZGlz
cGF0Y2hFdmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oCmluZGV4IDli
NTczOWNiYTgxNjlhMDRmZmExMmUxNDkzMjhiN2MzNDUzMDAyZTkuLjBiZjQxNDY0ODExYTA0OWE1
NGVmOWYyNDVlY2JjZmMzMzA0ZTYwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVs
ZW1lbnQuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGhhbmRsZUV2ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJDb3Jl
OjpFdmVudCopIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlRm9yRXZlbnROYW1lKGNvbnN0IFdURjo6
QXRvbWljU3RyaW5nJik7Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXIm
IHJocykgZmluYWwgeyByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RXZlbnRMaXN0ZW5lcio+
KHRoaXMpID09ICZyaHM7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5l
ciYgcmhzKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBXZWJDb3JlOjpF
dmVudExpc3RlbmVyKj4odGhpcykgPT0gJnJoczsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBwbGF5KCkgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYXVzZSgpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxNZWRpYUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9X
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQppbmRleCBhNGM2ZmEzY2RlMDZm
ZWNmMTk0YzVhMjI5MmZiZWQ1YzQ0N2MyZDkzLi5mNWJjYjEyYjM5OWYwZWM5NmYxYTA3ZGZmOGNi
ZjMyZjQwNGRmYTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9X
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQpA
QCAtODksNyArODksNyBAQCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50
OjpzZXRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaQogCiAgICAgaWYgKG1fbWVk
aWFFbGVtZW50ICYmIG1faXNMaXN0ZW5pbmcpIHsKICAgICAgICAgZm9yIChhdXRvJiBldmVudE5h
bWUgOiBvYnNlcnZlZEV2ZW50TmFtZXMoKSkKLSAgICAgICAgICAgIG1fbWVkaWFFbGVtZW50LT5y
ZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdGhpcywgZmFsc2UpOworICAgICAgICAgICAg
bV9tZWRpYUVsZW1lbnQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCAqdGhpcywgZmFs
c2UpOwogICAgIH0KICAgICBtX2lzTGlzdGVuaW5nID0gZmFsc2U7CiAKQEAgLTk5LDcgKzk5LDcg
QEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6c2V0TWVkaWFFbGVt
ZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChh
dXRvJiBldmVudE5hbWUgOiBvYnNlcnZlZEV2ZW50TmFtZXMoKSkKLSAgICAgICAgbV9tZWRpYUVs
ZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLCBmYWxzZSk7CisgICAgICAg
IG1fbWVkaWFFbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgKnRoaXMsIGZhbHNl
KTsKICAgICBtX2lzTGlzdGVuaW5nID0gdHJ1ZTsKIAogICAgIHVwZGF0ZUZvckV2ZW50TmFtZShl
dmVudE5hbWVBbGwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaAppbmRl
eCA3MTlhMjU3MGMwZmRiODI3ZDBlNmQzZmZhMWU2YmUzMzRkODIzZmRhLi42NjViZTFlYTgxOThl
YjFjYjVjZWZhODdhOGMwMTA4N2RkMDE4MGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50LmgKQEAgLTU5LDggKzU5LDcgQEAgcHVibGljOgogICAgIAogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgaGFuZGxlRXZlbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFdlYkNvcmU6OkV2ZW50Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVGb3JFdmVudE5hbWUo
Y29uc3QgV1RGOjpBdG9taWNTdHJpbmcmKTsKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZl
bnRMaXN0ZW5lciYgcmhzKSBvdmVycmlkZQotICAgICAgICB7cmV0dXJuIHN0YXRpY19jYXN0PFdl
YkNvcmU6OkV2ZW50TGlzdGVuZXIqPih0aGlzKSA9PSAmcmhzO30KKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgcmhzKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpFdmVudExpc3RlbmVyKj4odGhpcykgPT0gJnJoczsgfQogCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVu
dEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuY3BwCmluZGV4IGZjODMxZTY3NjU4YmEwOWI4OWE4M2IxZTc1ODlhMDAxY2Ji
NTk1NTEuLmFiMjQ1ZDU3ZjU4OWJkYmQwNTQxNGE3ODg0Mjk3YjgyMmQwY2Q2N2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTUyOCw3ICs1MjgsNyBAQCBib29sIFNWR0VsZW1lbnQ6
OmhhdmVMb2FkZWRSZXF1aXJlZFJlc291cmNlcygpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgU1ZHRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkK
K2Jvb2wgU1ZHRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkK
IHsgICAKICAgICAvLyBBZGQgZXZlbnQgbGlzdGVuZXIgdG8gcmVndWxhciBET00gZWxlbWVudAog
ICAgIGlmICghTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLmNvcHlS
ZWYoKSwgdXNlQ2FwdHVyZSkpCkBAIC01NDgsNyArNTQ4LDcgQEAgYm9vbCBTVkdFbGVtZW50Ojph
ZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZl
bnRMaXMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBTVkdFbGVtZW50OjpyZW1vdmVFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiBs
aXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBTVkdFbGVtZW50OjpyZW1vdmVFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0
ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIGlmIChjb250YWluaW5nU2hhZG93Um9vdCgp
KQogICAgICAgICByZXR1cm4gTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxp
c3RlbmVyLCB1c2VDYXB0dXJlKTsKQEAgLTU1OCw3ICs1NTgsNyBAQCBib29sIFNWR0VsZW1lbnQ6
OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50
TGlzdGVuZQogICAgIC8vIGV2ZW50IGxpc3RlbmVyIGluIGEgY2FjaGUuIElmIHdlIHdhbnQgdG8g
YmUgYWJsZSB0byBjYWxsIHJlbW92ZUV2ZW50TGlzdGVuZXIoKSBtdWx0aXBsZQogICAgIC8vIHRp
bWVzIG9uIGRpZmZlcmVudCBub2Rlcywgd2UgaGF2ZSB0byBkZWxheSBpdHMgaW1tZWRpYXRlIGRl
c3RydWN0aW9uLCB3aGljaCB3b3VsZCBoYXBwZW4KICAgICAvLyBhZnRlciB0aGUgZmlyc3QgY2Fs
bCBiZWxvdy4KLSAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gcHJvdGVjdG9yKGxpc3RlbmVyKTsK
KyAgICBSZWY8RXZlbnRMaXN0ZW5lcj4gcHJvdGVjdG9yKGxpc3RlbmVyKTsKIAogICAgIC8vIFJl
bW92ZSBldmVudCBsaXN0ZW5lciBmcm9tIHJlZ3VsYXIgRE9NIGVsZW1lbnQKICAgICBpZiAoIU5v
ZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSkp
CkBAIC01NzMsNyArNTczLDcgQEAgYm9vbCBTVkdFbGVtZW50OjpyZW1vdmVFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmUKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgIC8vIFRoaXMgY2FzZSBjYW4gb25seSBiZSBoaXQgZm9yIGV2
ZW50IGxpc3RlbmVycyBjcmVhdGVkIGZyb20gbWFya3VwCi0gICAgICAgIEFTU0VSVChsaXN0ZW5l
ci0+d2FzQ3JlYXRlZEZyb21NYXJrdXAoKSk7CisgICAgICAgIEFTU0VSVChsaXN0ZW5lci53YXND
cmVhdGVkRnJvbU1hcmt1cCgpKTsKIAogICAgICAgICAvLyBJZiB0aGUgZXZlbnQgbGlzdGVuZXIg
J2xpc3RlbmVyJyBoYXMgYmVlbiBjcmVhdGVkIGZyb20gbWFya3VwIGFuZCBoYXMgYmVlbiBmaXJl
ZCBiZWZvcmUKICAgICAgICAgLy8gdGhlbiBKU0xhenlFdmVudExpc3RlbmVyOjpwYXJzZUNvZGUo
KSBoYXMgYmVlbiBjYWxsZWQgYW5kIG1fanNGdW5jdGlvbiBvZiB0aGF0IGxpc3RlbmVyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnQuaAppbmRleCAzODE2ODEwMmFmNWVlNzVhZjc4N2NiMGZlMTVhOGU3YTJi
YTcxY2ZiLi45NmQ2YzkwNDYzMWFiMDk0ODhmYjViNmFhYmFlZTIwZmM2MmMzN2JhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50LmgKQEAgLTEzMyw4ICsxMzMsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIGJvb2wgaGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCk7CiAKLSAgICBib29sIGFkZEV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExp
c3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVtb3ZlRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lcios
IGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CisgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1
c2VDYXB0dXJlKSBvdmVycmlkZTsKKyAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBib29sIHVzZUNhcHR1cmUp
IG92ZXJyaWRlOwogICAgIGJvb2wgaGFzRm9jdXNFdmVudExpc3RlbmVycygpIGNvbnN0OwogCiAj
aWYgRU5BQkxFKENTU19SRUdJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RSZWZFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAK
aW5kZXggYzdkODQ2ZWEyMzFhZTE1MGRhODEyZGZhNzg1OTczODExZWVjMzZhYS4uNmRkYmI3NjI3
ZGE0Zjc5YzQxZWZjZTQ2NmFhNjU2OGVkN2QzZmNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJl
ZkVsZW1lbnQuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU1ZH
VFJlZlRhcmdldEV2ZW50TGlzdGVuZXIoU1ZHVFJlZkVsZW1lbnQmIHRyZWZFbGVtZW50KTsKIAog
ICAgIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50Kikgb3Zl
cnJpZGU7Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImKSBvdmVycmlk
ZTsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgU1ZHVFJlZkVsZW1lbnQmIG1fdHJlZkVsZW1lbnQ7CiAgICAgUmVmUHRyPEVs
ZW1lbnQ+IG1fdGFyZ2V0OwpAQCAtOTIsOCArOTIsOCBAQCB2b2lkIFNWR1RSZWZUYXJnZXRFdmVu
dExpc3RlbmVyOjphdHRhY2goUmVmUHRyPEVsZW1lbnQ+JiYgdGFyZ2V0KQogICAgIEFTU0VSVCh0
YXJnZXQuZ2V0KCkpOwogICAgIEFTU0VSVCh0YXJnZXQtPmluRG9jdW1lbnQoKSk7CiAKLSAgICB0
YXJnZXQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLkRPTVN1YnRyZWVNb2RpZmllZEV2
ZW50LCB0aGlzLCBmYWxzZSk7Ci0gICAgdGFyZ2V0LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFt
ZXMoKS5ET01Ob2RlUmVtb3ZlZEZyb21Eb2N1bWVudEV2ZW50LCB0aGlzLCBmYWxzZSk7CisgICAg
dGFyZ2V0LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5ET01TdWJ0cmVlTW9kaWZpZWRF
dmVudCwgKnRoaXMsIGZhbHNlKTsKKyAgICB0YXJnZXQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLkRPTU5vZGVSZW1vdmVkRnJvbURvY3VtZW50RXZlbnQsICp0aGlzLCBmYWxzZSk7CiAg
ICAgbV90YXJnZXQgPSBXVEZNb3ZlKHRhcmdldCk7CiB9CiAKQEAgLTEwMiwxMiArMTAyLDEyIEBA
IHZvaWQgU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI6OmRldGFjaCgpCiAgICAgaWYgKCFpc0F0
dGFjaGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fdGFyZ2V0LT5yZW1vdmVFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5ET01TdWJ0cmVlTW9kaWZpZWRFdmVudCwgdGhpcywgZmFsc2Up
OwotICAgIG1fdGFyZ2V0LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5ET01Ob2Rl
UmVtb3ZlZEZyb21Eb2N1bWVudEV2ZW50LCB0aGlzLCBmYWxzZSk7CisgICAgbV90YXJnZXQtPnJl
bW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLkRPTVN1YnRyZWVNb2RpZmllZEV2ZW50LCAq
dGhpcywgZmFsc2UpOworICAgIG1fdGFyZ2V0LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFt
ZXMoKS5ET01Ob2RlUmVtb3ZlZEZyb21Eb2N1bWVudEV2ZW50LCAqdGhpcywgZmFsc2UpOwogICAg
IG1fdGFyZ2V0ID0gbnVsbHB0cjsKIH0KIAotYm9vbCBTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5l
cjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikKK2Jvb2wgU1ZHVFJl
ZlRhcmdldEV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgbGlz
dGVuZXIpIGNvbnN0CiB7CiAgICAgaWYgKGNvbnN0IFNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVy
KiB0YXJnZXRMaXN0ZW5lciA9IFNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjpjYXN0KCZsaXN0
ZW5lcikpCiAgICAgICAgIHJldHVybiAmbV90cmVmRWxlbWVudCA9PSAmdGFyZ2V0TGlzdGVuZXIt
Pm1fdHJlZkVsZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9u
L1NWR1NNSUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01J
TEVsZW1lbnQuY3BwCmluZGV4IDdiMjk4NzBmM2UyZDRjZmM1MGIwZDEyNGNiMTIzOWY0YzNlNzU0
ZTYuLjBkMjRhNjE3NGZiZjFhOTRiZjJhZDdkOTkwZGUzMDQyNTg4ODIwYzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCkBAIC03Niw3ICs3
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIDogbnVsbHB0cjsKICAgICB9CiAKLSAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3RoZXIpIG92ZXJyaWRlOworICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgCiAgICAgdm9pZCBkaXNjb25uZWN0QW5pbWF0aW9uKCkKICAgICB7CkBAIC05Nyw3ICs5
Nyw3IEBAIHByaXZhdGU6CiAgICAgU1ZHU01JTEVsZW1lbnQ6OkNvbmRpdGlvbiogbV9jb25kaXRp
b247CiB9OwogCi1ib29sIENvbmRpdGlvbkV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0oY29uc3Qg
RXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpCitib29sIENvbmRpdGlvbkV2ZW50TGlzdGVuZXI6Om9w
ZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpIGNvbnN0CiB7CiAgICAgaWYg
KGNvbnN0IENvbmRpdGlvbkV2ZW50TGlzdGVuZXIqIGNvbmRpdGlvbkV2ZW50TGlzdGVuZXIgPSBD
b25kaXRpb25FdmVudExpc3RlbmVyOjpjYXN0KCZsaXN0ZW5lcikpCiAgICAgICAgIHJldHVybiBt
X2FuaW1hdGlvbiA9PSBjb25kaXRpb25FdmVudExpc3RlbmVyLT5tX2FuaW1hdGlvbiAmJiBtX2Nv
bmRpdGlvbiA9PSBjb25kaXRpb25FdmVudExpc3RlbmVyLT5tX2NvbmRpdGlvbjsKQEAgLTU0NSw3
ICs1NDUsNyBAQCB2b2lkIFNWR1NNSUxFbGVtZW50Ojpjb25uZWN0Q29uZGl0aW9ucygpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBBU1NFUlQoIWNvbmRpdGlvbi5tX2V2
ZW50TGlzdGVuZXIpOwogICAgICAgICAgICAgY29uZGl0aW9uLm1fZXZlbnRMaXN0ZW5lciA9IENv
bmRpdGlvbkV2ZW50TGlzdGVuZXI6OmNyZWF0ZSh0aGlzLCAmY29uZGl0aW9uKTsKLSAgICAgICAg
ICAgIGV2ZW50QmFzZS0+YWRkRXZlbnRMaXN0ZW5lcihjb25kaXRpb24ubV9uYW1lLCBjb25kaXRp
b24ubV9ldmVudExpc3RlbmVyLCBmYWxzZSk7CisgICAgICAgICAgICBldmVudEJhc2UtPmFkZEV2
ZW50TGlzdGVuZXIoY29uZGl0aW9uLm1fbmFtZSwgKmNvbmRpdGlvbi5tX2V2ZW50TGlzdGVuZXIs
IGZhbHNlKTsKICAgICAgICAgfSBlbHNlIGlmIChjb25kaXRpb24ubV90eXBlID09IENvbmRpdGlv
bjo6U3luY2Jhc2UpIHsKICAgICAgICAgICAgIEFTU0VSVCghY29uZGl0aW9uLm1fYmFzZUlELmlz
RW1wdHkoKSk7CiAgICAgICAgICAgICBjb25kaXRpb24ubV9zeW5jYmFzZSA9IHRyZWVTY29wZSgp
LmdldEVsZW1lbnRCeUlkKGNvbmRpdGlvbi5tX2Jhc2VJRCk7CkBAIC01NzcsNyArNTc3LDcgQEAg
dm9pZCBTVkdTTUlMRWxlbWVudDo6ZGlzY29ubmVjdENvbmRpdGlvbnMoKQogICAgICAgICAgICAg
Ly8gb3VyIGNvbmRpdGlvbiBldmVudCBsaXN0ZW5lciwgaW4gY2FzZSBpdCBsYXRlciBmaXJlcy4K
ICAgICAgICAgICAgIEVsZW1lbnQqIGV2ZW50QmFzZSA9IGV2ZW50QmFzZUZvcihjb25kaXRpb24p
OwogICAgICAgICAgICAgaWYgKGV2ZW50QmFzZSkKLSAgICAgICAgICAgICAgICBldmVudEJhc2Ut
PnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uZGl0aW9uLm1fbmFtZSwgY29uZGl0aW9uLm1fZXZlbnRM
aXN0ZW5lci5nZXQoKSwgZmFsc2UpOworICAgICAgICAgICAgICAgIGV2ZW50QmFzZS0+cmVtb3Zl
RXZlbnRMaXN0ZW5lcihjb25kaXRpb24ubV9uYW1lLCAqY29uZGl0aW9uLm1fZXZlbnRMaXN0ZW5l
ciwgZmFsc2UpOwogICAgICAgICAgICAgY29uZGl0aW9uLm1fZXZlbnRMaXN0ZW5lci0+ZGlzY29u
bmVjdEFuaW1hdGlvbigpOwogICAgICAgICAgICAgY29uZGl0aW9uLm1fZXZlbnRMaXN0ZW5lciA9
IG51bGxwdHI7CiAgICAgICAgIH0gZWxzZSBpZiAoY29uZGl0aW9uLm1fdHlwZSA9PSBDb25kaXRp
b246OlN5bmNiYXNlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xh
c3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKaW5kZXggNWRm
NzgzODYyY2M5MWM4NWEzYjVhNmIzZjU0MjY2OTYxMzFhODNiMy4uMmExMGFkZWQ4ZGNmNDcyMjkx
ZGQyNjk0MTIyM2M4YWE5MmRlZmVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vRE9N
Q29yZUNsYXNzZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNw
cApAQCAtNDEyLDggKzQxMiw4IEBAIEhSRVNVTFQgRE9NTm9kZTo6c2V0VGV4dENvbnRlbnQoX0lu
XyBCU1RSIC8qdGV4dCovKQogCiBIUkVTVUxUIERPTU5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoX0lu
XyBCU1RSIHR5cGUsIF9Jbl9vcHRfIElET01FdmVudExpc3RlbmVyKiBsaXN0ZW5lciwgQk9PTCB1
c2VDYXB0dXJlKQogewotICAgIFJlZlB0cjxXZWJFdmVudExpc3RlbmVyPiB3ZWJMaXN0ZW5lciA9
IFdlYkV2ZW50TGlzdGVuZXI6OmNyZWF0ZShsaXN0ZW5lcik7Ci0gICAgbV9ub2RlLT5hZGRFdmVu
dExpc3RlbmVyKHR5cGUsIHdlYkxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKKyAgICBhdXRvIHdlYkxp
c3RlbmVyID0gV2ViRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGxpc3RlbmVyKTsKKyAgICBtX25vZGUt
PmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgV1RGTW92ZSh3ZWJMaXN0ZW5lciksIHVzZUNhcHR1cmUp
OwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC00MjQsOCArNDI0LDggQEAgSFJFU1VMVCBET01O
b2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKF9Jbl8gQlNUUiB0eXBlLCBfSW5fb3B0XyBJRE9NRXZl
bnRMaXN0ZW5lcioKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICBpZiAoIW1fbm9kZSkK
ICAgICAgICAgcmV0dXJuIEVfRkFJTDsKLSAgICBSZWZQdHI8V2ViRXZlbnRMaXN0ZW5lcj4gd2Vi
TGlzdGVuZXIgPSBXZWJFdmVudExpc3RlbmVyOjpjcmVhdGUobGlzdGVuZXIpOwotICAgIG1fbm9k
ZS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCB3ZWJMaXN0ZW5lci5nZXQoKSwgdXNlQ2FwdHVy
ZSk7CisgICAgYXV0byB3ZWJMaXN0ZW5lciA9IFdlYkV2ZW50TGlzdGVuZXI6OmNyZWF0ZShsaXN0
ZW5lcik7CisgICAgbV9ub2RlLT5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIHdlYkxpc3RlbmVy
LCB1c2VDYXB0dXJlKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtOTEwLDggKzkxMCw4IEBA
IEhSRVNVTFQgRE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyKF9Jbl8gQlNUUiB0eXBlLCBfSW5f
b3B0XyBJRE9NRXZlbnRMaXN0ZW5lcioKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICBp
ZiAoIW1fd2luZG93KQogICAgICAgICByZXR1cm4gRV9GQUlMOwotICAgIFJlZlB0cjxXZWJFdmVu
dExpc3RlbmVyPiB3ZWJMaXN0ZW5lciA9IFdlYkV2ZW50TGlzdGVuZXI6OmNyZWF0ZShsaXN0ZW5l
cik7Ci0gICAgbV93aW5kb3ctPmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgd2ViTGlzdGVuZXIsIHVz
ZUNhcHR1cmUpOworICAgIGF1dG8gd2ViTGlzdGVuZXIgPSBXZWJFdmVudExpc3RlbmVyOjpjcmVh
dGUobGlzdGVuZXIpOworICAgIG1fd2luZG93LT5hZGRFdmVudExpc3RlbmVyKHR5cGUsIFdURk1v
dmUod2ViTGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAt
OTIxLDggKzkyMSw4IEBAIEhSRVNVTFQgRE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyKF9J
bl8gQlNUUiB0eXBlLCBfSW5fb3B0XyBJRE9NRXZlbnRMaXN0ZW5lCiAgICAgICAgIHJldHVybiBF
X1BPSU5URVI7CiAgICAgaWYgKCFtX3dpbmRvdykKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKLSAg
ICBSZWZQdHI8V2ViRXZlbnRMaXN0ZW5lcj4gd2ViTGlzdGVuZXIgPSBXZWJFdmVudExpc3RlbmVy
OjpjcmVhdGUobGlzdGVuZXIpOwotICAgIG1fd2luZG93LT5yZW1vdmVFdmVudExpc3RlbmVyKHR5
cGUsIHdlYkxpc3RlbmVyLmdldCgpLCB1c2VDYXB0dXJlKTsKKyAgICBhdXRvIHdlYkxpc3RlbmVy
ID0gV2ViRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGxpc3RlbmVyKTsKKyAgICBtX3dpbmRvdy0+cmVt
b3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCB3ZWJMaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUV2ZW50c0Ns
YXNzZXMuY3BwIGIvU291cmNlL1dlYktpdC93aW4vRE9NRXZlbnRzQ2xhc3Nlcy5jcHAKaW5kZXgg
ODBiNGQyZWFjYmI1Y2ZkN2MzZTVlZmM3MWVhOWExZWExNGZjYTNiZS4uYWQ4NzY2YjMxYjU2ODNh
NjljZTU0NzViZjc3MDRiY2EzZGM4MzZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4v
RE9NRXZlbnRzQ2xhc3Nlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vRE9NRXZlbnRzQ2xh
c3Nlcy5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgV2ViRXZlbnRMaXN0ZW5lcjo6fldlYkV2ZW50TGlz
dGVuZXIoKQogICAgIG1faURPTUV2ZW50TGlzdGVuZXItPlJlbGVhc2UoKTsKIH0KIAotYm9vbCBX
ZWJFdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIm
IG90aGVyKQorYm9vbCBXZWJFdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IFdlYkNvcmU6
OkV2ZW50TGlzdGVuZXImIG90aGVyKSBjb25zdAogewogICAgIHJldHVybiAob3RoZXIudHlwZSgp
ID09IENQUEV2ZW50TGlzdGVuZXJUeXBlIAogICAgICAgICAmJiByZWludGVycHJldF9jYXN0PGNv
bnN0IFdlYkV2ZW50TGlzdGVuZXIqPigmb3RoZXIpLT5tX2lET01FdmVudExpc3RlbmVyID09IG1f
aURPTUV2ZW50TGlzdGVuZXIpOwpAQCAtODEsOSArODEsOSBAQCB2b2lkIFdlYkV2ZW50TGlzdGVu
ZXI6OmhhbmRsZUV2ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHMsIFdlYkNv
cmU6OgogICAgIG1faURPTUV2ZW50TGlzdGVuZXItPmhhbmRsZUV2ZW50KGRvbUV2ZW50LmdldCgp
KTsKIH0KIAotUGFzc1JlZlB0cjxXZWJFdmVudExpc3RlbmVyPiBXZWJFdmVudExpc3RlbmVyOjpj
cmVhdGUoSURPTUV2ZW50TGlzdGVuZXIqIGQpCitSZWY8V2ViRXZlbnRMaXN0ZW5lcj4gV2ViRXZl
bnRMaXN0ZW5lcjo6Y3JlYXRlKElET01FdmVudExpc3RlbmVyKiBkKQogewotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgV2ViRXZlbnRMaXN0ZW5lcihkKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViRXZlbnRMaXN0ZW5lcihkKSk7CiB9CiAKIC8vIERPTUV2ZW50IC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUV2ZW50c0NsYXNzZXMuaCBiL1NvdXJjZS9X
ZWJLaXQvd2luL0RPTUV2ZW50c0NsYXNzZXMuaAppbmRleCA0YWIyY2VlMWMxZjMyYTk5YjcwOWNj
ZjQ4Mjc4NzIwNThlMTZkYzVlLi43ZGY4MTNiODAzMDc0MTBjZGZhNWM4N2I1ZmJiNDY1MDc1YTQ5
MTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9ET01FdmVudHNDbGFzc2VzLmgKKysr
IGIvU291cmNlL1dlYktpdC93aW4vRE9NRXZlbnRzQ2xhc3Nlcy5oCkBAIC00Niw5ICs0Niw5IEBA
IGNsYXNzIFdlYkV2ZW50TGlzdGVuZXIgOiBwdWJsaWMgV2ViQ29yZTo6RXZlbnRMaXN0ZW5lciB7
CiBwdWJsaWM6CiAgICAgV2ViRXZlbnRMaXN0ZW5lcihJRE9NRXZlbnRMaXN0ZW5lciopOwogICAg
IH5XZWJFdmVudExpc3RlbmVyKCk7Ci0gICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3Qg
RXZlbnRMaXN0ZW5lciYpOworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50
TGlzdGVuZXImKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkNvcmU6OkV2ZW50Kik7Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8V2ViRXZlbnRMaXN0ZW5lcj4gY3JlYXRlKElET01FdmVudExpc3RlbmVyKik7Cisg
ICAgc3RhdGljIFJlZjxXZWJFdmVudExpc3RlbmVyPiBjcmVhdGUoSURPTUV2ZW50TGlzdGVuZXIq
KTsKIHByaXZhdGU6CiAgICAgSURPTUV2ZW50TGlzdGVuZXIqIG1faURPTUV2ZW50TGlzdGVuZXI7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW5Bbm5vdGF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbkFubm90YXRpb24uaAppbmRleCA2M2E0OGFjNTYwNmI3NDRhOTUxMWEyN2U2
NjJjODE4MDUyZmViMTNlLi5mNjMzOTcwMWU2NjAxMDllMjkxYThmYzBjNWI5MWE0OTg5YTM0ZWJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbkFubm90YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbkFubm90YXRpb24uaApAQCAtODQsNyArODQsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUERGUGx1Z2luQW5ub3RhdGlvbkV2ZW50TGlz
dGVuZXIoYW5ub3RhdGlvbikpOwogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyKSBvdmVycmlkZSB7IHJldHVybiB0aGlzID09
ICZsaXN0ZW5lcjsgfQorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5l
ciYgbGlzdGVuZXIpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRoaXMgPT0gJmxpc3RlbmVyOyB9
CiAKICAgICAgICAgdm9pZCBzZXRBbm5vdGF0aW9uKFBERlBsdWdpbkFubm90YXRpb24qIGFubm90
YXRpb24pIHsgbV9hbm5vdGF0aW9uID0gYW5ub3RhdGlvbjsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24ubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRp
b24ubW0KaW5kZXggNDdiYTljMjkzNTE4NGE1NTgwZDllNjc1YzcyNWVjMjdhY2JmM2EzYy4uM2Nh
N2U0ODk4ODdjZmU1OGM0M2M4ZWE3NDM0NmUxYzQ3ODdjZWE0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3Rh
dGlvbi5tbQpAQCAtNjksOCArNjksOCBAQCB2b2lkIFBERlBsdWdpbkFubm90YXRpb246OmF0dGFj
aChFbGVtZW50KiBwYXJlbnQpCiAgICAgbV9lbGVtZW50ID0gY3JlYXRlQW5ub3RhdGlvbkVsZW1l
bnQoKTsKIAogICAgIG1fZWxlbWVudC0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgImFubm90YXRp
b24iKTsKLSAgICBtX2VsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNoYW5n
ZUV2ZW50LCBtX2V2ZW50TGlzdGVuZXIsIGZhbHNlKTsKLSAgICBtX2VsZW1lbnQtPmFkZEV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLmJsdXJFdmVudCwgbV9ldmVudExpc3RlbmVyLCBmYWxzZSk7
CisgICAgbV9lbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jaGFuZ2VFdmVu
dCwgKm1fZXZlbnRMaXN0ZW5lciwgZmFsc2UpOworICAgIG1fZWxlbWVudC0+YWRkRXZlbnRMaXN0
ZW5lcihldmVudE5hbWVzKCkuYmx1ckV2ZW50LCAqbV9ldmVudExpc3RlbmVyLCBmYWxzZSk7CiAK
ICAgICB1cGRhdGVHZW9tZXRyeSgpOwogCkBAIC04Nyw4ICs4Nyw4IEBAIHZvaWQgUERGUGx1Z2lu
QW5ub3RhdGlvbjo6Y29tbWl0KCkKIAogUERGUGx1Z2luQW5ub3RhdGlvbjo6flBERlBsdWdpbkFu
bm90YXRpb24oKQogewotICAgIG1fZWxlbWVudC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5h
bWVzKCkuY2hhbmdlRXZlbnQsIG1fZXZlbnRMaXN0ZW5lci5nZXQoKSwgZmFsc2UpOwotICAgIG1f
ZWxlbWVudC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYmx1ckV2ZW50LCBtX2V2
ZW50TGlzdGVuZXIuZ2V0KCksIGZhbHNlKTsKKyAgICBtX2VsZW1lbnQtPnJlbW92ZUV2ZW50TGlz
dGVuZXIoZXZlbnROYW1lcygpLmNoYW5nZUV2ZW50LCAqbV9ldmVudExpc3RlbmVyLCBmYWxzZSk7
CisgICAgbV9lbGVtZW50LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5ibHVyRXZl
bnQsICptX2V2ZW50TGlzdGVuZXIsIGZhbHNlKTsKIAogICAgIG1fZXZlbnRMaXN0ZW5lci0+c2V0
QW5ub3RhdGlvbigwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tCmluZGV4IGIyYTNj
N2YwZmVmYTViYjBmNTdmMTM1ZDNiMzZhYzcwMjE3ZWRkN2IuLjY3NzY0NzU3MmQ2ZmEyMDFkYzMy
OTMzZGIzMWIwNmRmYzkxYjA4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQubW0KQEAg
LTQ5LDE0ICs0OSwxNCBAQCBSZWY8UERGUGx1Z2luUGFzc3dvcmRGaWVsZD4gUERGUGx1Z2luUGFz
c3dvcmRGaWVsZDo6Y3JlYXRlKFBERkxheWVyQ29udHJvbGxlciAqcAogCiBQREZQbHVnaW5QYXNz
d29yZEZpZWxkOjp+UERGUGx1Z2luUGFzc3dvcmRGaWVsZCgpCiB7Ci0gICAgZWxlbWVudCgpLT5y
ZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5rZXl1cEV2ZW50LCBldmVudExpc3RlbmVy
KCksIGZhbHNlKTsKKyAgICBlbGVtZW50KCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1l
cygpLmtleXVwRXZlbnQsICpldmVudExpc3RlbmVyKCksIGZhbHNlKTsKIH0KIAogUGFzc1JlZlB0
cjxFbGVtZW50PiBQREZQbHVnaW5QYXNzd29yZEZpZWxkOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVu
dCgpCiB7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBQREZQbHVnaW5UZXh0QW5ub3Rh
dGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKTsKICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1
dGUodHlwZUF0dHIsICJwYXNzd29yZCIpOwotICAgIGVsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIo
ZXZlbnROYW1lcygpLmtleXVwRXZlbnQsIGV2ZW50TGlzdGVuZXIoKSwgZmFsc2UpOworICAgIGVs
ZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleXVwRXZlbnQsICpldmVudExp
c3RlbmVyKCksIGZhbHNlKTsKICAgICByZXR1cm4gZWxlbWVudDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3Rh
dGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
VGV4dEFubm90YXRpb24ubW0KaW5kZXggZmJlZDNhNmZkYTY4OTNkOGQyZTU1MzVkYjQzM2RkMjk0
NzE2ZmIxNy4uOGMwNzQ2OWM2ZDU4YWIxNzYyODE4MDg4ZGJlMTk1NjJjMzc4ZmNiZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0
QW5ub3RhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tCkBAIC03OCw3ICs3OCw3IEBAIFJlZjxQREZQbHVn
aW5UZXh0QW5ub3RhdGlvbj4gUERGUGx1Z2luVGV4dEFubm90YXRpb246OmNyZWF0ZShQREZBbm5v
dGF0aW9uICphbm5vCiAKIFBERlBsdWdpblRleHRBbm5vdGF0aW9uOjp+UERGUGx1Z2luVGV4dEFu
bm90YXRpb24oKQogewotICAgIGVsZW1lbnQoKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5h
bWVzKCkua2V5ZG93bkV2ZW50LCBldmVudExpc3RlbmVyKCksIGZhbHNlKTsKKyAgICBlbGVtZW50
KCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleWRvd25FdmVudCwgKmV2ZW50
TGlzdGVuZXIoKSwgZmFsc2UpOwogfQogCiBQYXNzUmVmUHRyPEVsZW1lbnQ+IFBERlBsdWdpblRl
eHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpCkBAIC05Nyw3ICs5Nyw3IEBA
IFBhc3NSZWZQdHI8RWxlbWVudD4gUERGUGx1Z2luVGV4dEFubm90YXRpb246OmNyZWF0ZUFubm90
YXRpb25FbGVtZW50KCkKICAgICBlbHNlCiAgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KGlucHV0VGFnLCBmYWxzZSk7CiAKLSAgICBlbGVtZW50LT5hZGRFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQsIGV2ZW50TGlzdGVuZXIoKSwgZmFsc2UpOwor
ICAgIGVsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleWRvd25FdmVudCwg
KmV2ZW50TGlzdGVuZXIoKSwgZmFsc2UpOwogCiAgICAgU3R5bGVkRWxlbWVudCogc3R5bGVkRWxl
bWVudCA9IHN0YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPihlbGVtZW50LmdldCgpKTsKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGY5MWU4M2MyMjFmZTE3N2ZhZTE3OGFlODllZGRhMDRjY2YyNjU2ZmIuLmQwNzJlZWI4MTU1
YzYwZDU3NWQzNDE3Mzk4ODczZGQ3MmE4YzI4YTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAx
Ni0wNS0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEdlbmVy
YXRlIGJpbmRpbmdzIGNvZGUgZm9yIEV2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoKSAvIHJl
bW92ZUV2ZW50TGlzdGVuZXIoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU3ODgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmViYXNlbGluZSBleGlzdGluZyB0ZXN0IG5vdyB0aGF0IHRoZSAnbGVuZ3Ro
JyBwcm9wZXJ0eSBvZiB0aG9zZSBmdW5jdGlvbnMKKyAgICAgICAgaGF2ZSBjaGFuZ2VkLiBUaGlz
IGlzIGJlY2F1c2UgdGhlIElETCBoYXMgYmVlbiB1cGRhdGVkIHRvIG1hdGNoIG91cgorICAgICAg
ICBpbXBsZW1lbnRhdGlvbiAoYWxsIHBhcmFtZXRlcnMgYXJlIG9wdGlvbmFsKS4gV2hpbGUgdGhp
cyBkb2VzIG5vdCBtYXRjaAorICAgICAgICB0aGUgc3BlY2lmaWNhdGlvbiwgdGhlIG5ldyBsZW5n
dGggbm93IG1hdGNoZXMgb3VyIGFjdHVhbCBiZWhhdmlvci4KKworICAgICAgICAqIGpzL2RvbS9m
dW5jdGlvbi1sZW5ndGgtZXhwZWN0ZWQudHh0OgorCiAyMDE2LTA1LTE4ICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAKICAgICAgICAgU3luYyBET00gZXhjZXB0
aW9uIHR5cGVzIHdpdGggV2ViSURMIGFuZCB1cGRhdGUgcHJvbWlzZSByZWplY3Rpb25zCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9p
bnRlcmZhY2VzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvZG9tL2ludGVyZmFjZXMtZXhwZWN0ZWQudHh0CmluZGV4IDcxOTc2MmJmODYy
NzgxOWU0NTljNWM2ZjljNTVhMjUwODJiODU3YjguLjMyNTJkODc1MTYwZWQ4YTk1NDk1ZGFhNzgx
ZmMwYzkyOWUyMjI0YTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvZG9tL2ludGVyZmFjZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2ludGVyZmFjZXMtZXhwZWN0
ZWQudHh0CkBAIC0xMTAsOCArMTEwLDggQEAgUEFTUyBFdmVudFRhcmdldCBpbnRlcmZhY2Ugb2Jq
ZWN0IGxlbmd0aAogUEFTUyBFdmVudFRhcmdldCBpbnRlcmZhY2Ugb2JqZWN0IG5hbWUgCiBQQVNT
IEV2ZW50VGFyZ2V0IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVy
ZmFjZSBwcm90b3R5cGUgb2JqZWN0IAogUEFTUyBFdmVudFRhcmdldCBpbnRlcmZhY2U6IGV4aXN0
ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzICJjb25z
dHJ1Y3RvciIgcHJvcGVydHkgCi1QQVNTIEV2ZW50VGFyZ2V0IGludGVyZmFjZTogb3BlcmF0aW9u
IGFkZEV2ZW50TGlzdGVuZXIoRE9NU3RyaW5nLEV2ZW50TGlzdGVuZXIsW29iamVjdCBPYmplY3Rd
LFtvYmplY3QgT2JqZWN0XSkgCi1QQVNTIEV2ZW50VGFyZ2V0IGludGVyZmFjZTogb3BlcmF0aW9u
IHJlbW92ZUV2ZW50TGlzdGVuZXIoRE9NU3RyaW5nLEV2ZW50TGlzdGVuZXIsW29iamVjdCBPYmpl
Y3RdLFtvYmplY3QgT2JqZWN0XSkgCitGQUlMIEV2ZW50VGFyZ2V0IGludGVyZmFjZTogb3BlcmF0
aW9uIGFkZEV2ZW50TGlzdGVuZXIoRE9NU3RyaW5nLEV2ZW50TGlzdGVuZXIsW29iamVjdCBPYmpl
Y3RdLFtvYmplY3QgT2JqZWN0XSkgYXNzZXJ0X2VxdWFsczogcHJvcGVydHkgaGFzIHdyb25nIC5s
ZW5ndGggZXhwZWN0ZWQgMiBidXQgZ290IDAKK0ZBSUwgRXZlbnRUYXJnZXQgaW50ZXJmYWNlOiBv
cGVyYXRpb24gcmVtb3ZlRXZlbnRMaXN0ZW5lcihET01TdHJpbmcsRXZlbnRMaXN0ZW5lcixbb2Jq
ZWN0IE9iamVjdF0sW29iamVjdCBPYmplY3RdKSBhc3NlcnRfZXF1YWxzOiBwcm9wZXJ0eSBoYXMg
d3JvbmcgLmxlbmd0aCBleHBlY3RlZCAyIGJ1dCBnb3QgMAogUEFTUyBFdmVudFRhcmdldCBpbnRl
cmZhY2U6IG9wZXJhdGlvbiBkaXNwYXRjaEV2ZW50KEV2ZW50KSAKIFBBU1MgRXZlbnRMaXN0ZW5l
ciBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ugb2JqZWN0
IAogUEFTUyBFdmVudExpc3RlbmVyIGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVz
IG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvZG9tL2Z1bmN0aW9uLWxlbmd0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20v
ZnVuY3Rpb24tbGVuZ3RoLWV4cGVjdGVkLnR4dAppbmRleCA0YTM2Yjk4ZjZiOGMyMjA4MjRiYjky
ZWEwODVhYzEzYTYwNGI0N2VhLi5lOTViZTUwZTUwNjVhZDc3MTZjYjU4OTMwZjQ4ZTIzMTc0YTRh
OTU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9kb20vZnVuY3Rpb24tbGVuZ3RoLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZnVuY3Rpb24tbGVuZ3RoLWV4cGVjdGVk
LnR4dApAQCAtOCw3ICs4LDcgQEAgUEFTUyB3aW5kb3cub3Blbi5sZW5ndGggaXMgMgogUEFTUyB3
aW5kb3cuc2hvd01vZGFsRGlhbG9nLmxlbmd0aCBpcyAxCiBQQVNTIHdpbmRvdy5zZXRUaW1lb3V0
Lmxlbmd0aCBpcyAxCiBQQVNTIHdpbmRvdy5jbGVhclRpbWVvdXQubGVuZ3RoIGlzIDAKLVBBU1Mg
d2luZG93LmFkZEV2ZW50TGlzdGVuZXIubGVuZ3RoIGlzIDIKK0ZBSUwgd2luZG93LmFkZEV2ZW50
TGlzdGVuZXIubGVuZ3RoIHNob3VsZCBiZSAyLiBXYXMgMC4KIFBBU1MgQXJyYXkucHJvdG90eXBl
LmNvbmNhdC5sZW5ndGggaXMgMQogUEFTUyBBcnJheS5wcm90b3R5cGUuam9pbi5sZW5ndGggaXMg
MQogUEFTUyBBcnJheS5wcm90b3R5cGUucHVzaC5sZW5ndGggaXMgMQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279356</attachid>
            <date>2016-05-18 23:06:27 -0700</date>
            <delta_ts>2016-05-18 23:19:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157882-20160518230726.patch</filename>
            <type>text/plain</type>
            <size>76370</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxMDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzczYWNlZjg4MjA4MzNi
MTc1ZjVmNGFkMjMyY2NjZjVhMzQ2MDUyYi4uNGI5NjcyZWJkZGRkNDU2ZDU5NWIxODA3NzBkNmE1
NDBkYjk4Zjk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxNi0wNS0xOCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEdlbmVyYXRlIGJpbmRpbmdz
IGNvZGUgZm9yIEV2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoKSAvIHJlbW92ZUV2ZW50TGlz
dGVuZXIoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU3ODgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
R2VuZXJhdGUgYmluZGluZ3MgY29kZSBmb3IgRXZlbnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigp
IC8gcmVtb3ZlRXZlbnRMaXN0ZW5lcigpCisgICAgICAgIGluc3RlYWQgb2YgaGFyZGNvZGluZyB0
aGVtIGluIHRoZSBiaW5kaW5ncyBnZW5lcmF0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBy
ZWJhc2VsaW5lZCBleGlzdGluZyB0ZXN0LiBUaGUgb25seSBXZWItRXhwb3NlZCBiZWhhdmlvciBj
aGFuZ2UKKyAgICAgICAgaXMgdGhhdCAnbGVuZ3RoJyBwcm9wZXJ0eSBvZiB0aG9zZSBmdW5jdGlv
bnMgaGF2ZSBjaGFuZ2VkLiBUaGlzIGlzIGJlY2F1c2UgdGhlCisgICAgICAgIElETCBoYXMgYmVl
biB1cGRhdGVkIHRvIG1hdGNoIG91ciBpbXBsZW1lbnRhdGlvbiAoYWxsIHBhcmFtZXRlcnMgYXJl
IG9wdGlvbmFsKS4KKyAgICAgICAgV2hpbGUgdGhpcyBkb2VzIG5vdCBtYXRjaCB0aGUgc3BlY2lm
aWNhdGlvbiwgdGhlIG5ldyBsZW5ndGggbm93IG1hdGNoZXMgb3VyCisgICAgICAgIGFjdHVhbCBi
ZWhhdmlvci4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3Vy
Y2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6
YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NjaGVkdWxlZFNvdXJj
ZU5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9T
Y3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nv
ck5vZGU6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvY2Vz
c29yTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9TY3JpcHRQcm9jZXNzb3JOb2RlLmg6CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9HT2Jq
ZWN0RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHT2JqZWN0RXZlbnRMaXN0
ZW5lcjo6b3BlcmF0b3I9PSk6CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZl
bnRMaXN0ZW5lci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAg
ICAoV2ViQ29yZTo6ZXZlbnRIYW5kbGVyQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRM
aXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6Y2Fz
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OmpzRnVuY3Rp
b24pOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL29iamMvT2JqQ0V2ZW50TGlzdGVuZXIu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL09iakNFdmVudExpc3RlbmVyLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6T2JqQ0V2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbik6CisgICAgICAgIChKU1ZhbHVlVG9OYXRpdmUpOgorICAgICAgICAoR2V0UGFy
ZW50Q2xhc3NOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEdldENhbGxiYWNrQ2xhc3NOYW1lKTog
RGVsZXRlZC4KKyAgICAgICAgKEdldEpTQ2FsbGJhY2tEYXRhVHlwZSk6IERlbGV0ZWQuCisgICAg
ICAgICogZG9tL0V2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lck1h
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRMaXN0ZW5lclRvVmVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50TGlzdGVuZXJNYXA6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpyZW1v
dmVMaXN0ZW5lckZyb21WZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRMaXN0ZW5lck1h
cDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlMaXN0ZW5lcnNOb3RDcmVhdGVkRnJv
bU1hcmt1cFRvVGFyZ2V0KToKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lck1hcC5oOgorICAg
ICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdl
dDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6YWRk
RXZlbnRMaXN0ZW5lckZvckJpbmRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0
OjpyZW1vdmVFdmVudExpc3RlbmVyRm9yQmluZGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRU
YXJnZXQ6OnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRUYXJnZXQ6OmNsZWFyQXR0cmlidXRlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogZG9tL0V2
ZW50VGFyZ2V0Lmg6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0LmlkbDoKKyAgICAgICAgKiBk
b20vTWVzc2FnZVBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmFkZEV2
ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5oOgorICAgICAgICAqIGRv
bS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyeUFkZEV2ZW50TGlzdGVuZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3Jl
Ojp0cnlSZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlbW92
ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogZG9tL1Jl
Z2lzdGVyZWRFdmVudExpc3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RlcmVkRXZl
bnRMaXN0ZW5lcjo6UmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGh0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojph
ZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJl
bW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURvY3VtZW50OjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGh0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHNBcHBsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQXBw
bGU6OnNob3dDbG9zZWRDYXB0aW9uVHJhY2tMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbHNBcHBsZTo6aGlkZUNsb3NlZENhcHRpb25UcmFja0xpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PSk6CisgICAg
ICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRv
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAg
ICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjphZGRFdmVudExpc3Rl
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIp
OgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjph
dHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI6OmRl
dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcjo6b3Bl
cmF0b3I9PSk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb25kaXRpb25FdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50Ojpjb25uZWN0Q29uZGl0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6ZGlzY29ubmVjdENvbmRpdGlvbnMpOgorCiAy
MDE2LTA1LTE4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBN
b2Rlcm4gSURCOiBNYWtlIFRlc3RSdW5uZXIuY2xlYXJBbGxEYXRhYmFzZXMgYWxzbyBkZWxldGUg
SW5kZXhlZERCIGRhdGFiYXNlcyAob25jZSBkb2luZyBzbyBpcyBzdXBwb3J0ZWQpLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hh
bmdlTG9nCmluZGV4IDNhNDBkMzUwN2JjNjc2YzJmNzhhOTk1MWU2NTU2YWVhNTY5ZGMwNWEuLjQ0
M2FkNGE5YWIxNDUyZGU5MWNjMTRiYmY2Mjk3YmY4NjQyOGMxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAxNi0wNS0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIEdlbmVyYXRlIGJpbmRpbmdzIGNvZGUgZm9yIEV2ZW50VGFyZ2V0LmFk
ZEV2ZW50TGlzdGVuZXIoKSAvIHJlbW92ZUV2ZW50TGlzdGVuZXIoKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3ODgyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2VuZXJhdGUgYmluZGluZ3MgY29kZSBm
b3IgRXZlbnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigpIC8gcmVtb3ZlRXZlbnRMaXN0ZW5lcigp
CisgICAgICAgIGluc3RlYWQgb2YgaGFyZGNvZGluZyB0aGVtIGluIHRoZSBiaW5kaW5ncyBnZW5l
cmF0b3IuCisKKyAgICAgICAgKiBET01FdmVudHNDbGFzc2VzLmNwcDoKKyAgICAgICAgKFdlYkV2
ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIERPTUV2ZW50c0NsYXNzZXMuaDoK
KwogMjAxNi0wNS0xNiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQgcm9sbG91dCByMjAwOTI0LiBDYXVzZWQganMvcmVncmVzcy9zdHJp
bmctcmVwbGFjZS1nZW5lcmljLmh0bWwgdG8gZmFpbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjMWVhOTQ0NzM5
ZmJiNTRlNmJhZmEzOGFlMzM5NDEzNGMyMmMxODQyLi45MWE1Y2EyZmFlNDQxZTBkMDdjZTdjOTIw
NzRkMTU5NWI2Zjg4Zjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTYtMDUtMTgg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBHZW5lcmF0ZSBiaW5k
aW5ncyBjb2RlIGZvciBFdmVudFRhcmdldC5hZGRFdmVudExpc3RlbmVyKCkgLyByZW1vdmVFdmVu
dExpc3RlbmVyKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1Nzg4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEdlbmVyYXRlIGJpbmRpbmdzIGNvZGUgZm9yIEV2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVu
ZXIoKSAvIHJlbW92ZUV2ZW50TGlzdGVuZXIoKQorICAgICAgICBpbnN0ZWFkIG9mIGhhcmRjb2Rp
bmcgdGhlbSBpbiB0aGUgYmluZGluZ3MgZ2VuZXJhdG9yLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW5Bbm5vdGF0aW9uOjphdHRhY2gpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5B
bm5vdGF0aW9uOjp+UERGUGx1Z2luQW5ub3RhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW5QYXNzd29yZEZpZWxkOjp+UERGUGx1Z2luUGFzc3dvcmRGaWVsZCk6CisgICAgICAg
IChXZWJLaXQ6OlBERlBsdWdpblBhc3N3b3JkRmllbGQ6OmNyZWF0ZUFubm90YXRpb25FbGVtZW50
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0
aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6flBERlBs
dWdpblRleHRBbm5vdGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luVGV4dEFubm90
YXRpb246OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KToKKwogMjAxNi0wNS0xOCAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kZXJuIElEQjogTWFrZSBUZXN0
UnVubmVyLmNsZWFyQWxsRGF0YWJhc2VzIGFsc28gZGVsZXRlIEluZGV4ZWREQiBkYXRhYmFzZXMg
KG9uY2UgZG9pbmcgc28gaXMgc3VwcG9ydGVkKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcAppbmRl
eCBiYzRlZmI0YjcyY2U2ZDdlYmNjY2UzOGViNjA5OTk1Mzk0MGU5YjUwLi40Y2E2YTA0NDJmZDNh
OTMxNTdjNzI1MTRmMzQ3YTFmYWM3ODM2NGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwCkBA
IC0yMDEsNyArMjAxLDcgQEAgdm9pZCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OmZpbmlzaCgp
CiAgICAgfQogfQogCi1ib29sIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6YWRkRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+
JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgQXVkaW9TY2hlZHVsZWRTb3VyY2VO
b2RlOjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8
RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIGJvb2wg
c3VjY2VzcyA9IEF1ZGlvTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdURk1vdmUo
bGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKICAgICBpZiAoc3VjY2VzcyAmJiBldmVudFR5cGUgPT0g
ZXZlbnROYW1lcygpLmVuZGVkRXZlbnQpCkBAIC0yMDksNyArMjA5LDcgQEAgYm9vbCBBdWRpb1Nj
aGVkdWxlZFNvdXJjZU5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIFIKICAgICByZXR1cm4gc3VjY2VzczsKIH0KIAotYm9vbCBBdWRpb1NjaGVkdWxl
ZFNvdXJjZU5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIEF1
ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVy
ZSkKIHsKICAgICBib29sIHN1Y2Nlc3MgPSBBdWRpb05vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIo
ZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CiAgICAgaWYgKHN1Y2Nlc3MgJiYgZXZl
bnRUeXBlID09IGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgKaW5k
ZXggZWNlZGUzOGEwODk0MjZkMDljZGU2MWQ0MGNiN2Y3NDNiOWM2MTA1NS4uY2I0ZGQzY2RlODIx
NzVjZDE2NTYzZDBkODhmZmNjMTE3Y2ExZDA5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCkBAIC0x
MDEsOCArMTAxLDggQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgVW5rbm93
blRpbWU7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0
dXJlKSBvdmVycmlkZTsKLSAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpIG92ZXJy
aWRlOworICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7Cisg
ICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBFdmVudExpc3RlbmVyJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKICAgICB2b2lkIHJl
bW92ZUFsbEV2ZW50TGlzdGVuZXJzKCkgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAppbmRl
eCA2ODVjNjczMDg0YzhjMWYxODMzMGZmOWZmMzY3NjUzMDljZDM5M2U1Li4wY2M0MWI3NTY4YmIw
NTEwZTE1NWVlOWNlYzEwMDU2MWViNzRiYTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKQEAgLTI3Myw3ICsy
NzMsNyBAQCBkb3VibGUgU2NyaXB0UHJvY2Vzc29yTm9kZTo6bGF0ZW5jeVRpbWUoKSBjb25zdAog
ICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7CiB9CiAK
LWJvb2wgU2NyaXB0UHJvY2Vzc29yTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wg
dXNlQ2FwdHVyZSkKK2Jvb2wgU2NyaXB0UHJvY2Vzc29yTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVu
ZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICBib29sIHN1Y2Nlc3MgPSBBdWRpb05vZGU6OmFk
ZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7
CiAgICAgaWYgKHN1Y2Nlc3MgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5hdWRpb3Byb2Nl
c3NFdmVudCkKQEAgLTI4MSw3ICsyODEsNyBAQCBib29sIFNjcmlwdFByb2Nlc3Nvck5vZGU6OmFk
ZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cgogICAg
IHJldHVybiBzdWNjZXNzOwogfQogCi1ib29sIFNjcmlwdFByb2Nlc3Nvck5vZGU6OnJlbW92ZUV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIq
IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIFNjcmlwdFByb2Nlc3Nvck5vZGU6OnJl
bW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlz
dGVuZXImIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgYm9vbCBzdWNjZXNzID0g
QXVkaW9Ob2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNh
cHR1cmUpOwogICAgIGlmIChzdWNjZXNzICYmIGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuYXVk
aW9wcm9jZXNzRXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oCmluZGV4IDZiNjVkMDE4ZWJmYWY2OTZhMDVkZDhkM2Rm
ODA0YTYzYzRiYWQ0MjQuLjEzMDYyNTkwOTBhZDQzYjJhZjVkNjM3MjJkNTVlMjQzM2Q4M2JiMmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vz
c29yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJv
Y2Vzc29yTm9kZS5oCkBAIC03Myw4ICs3Myw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGZpcmVQ
cm9jZXNzRXZlbnQoKTsKIAotICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVy
ZSkgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlk
ZTsKKyAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAg
IGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
RXZlbnRMaXN0ZW5lciYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1v
dmVBbGxFdmVudExpc3RlbmVycygpIG92ZXJyaWRlOwogCiAgICAgLy8gRG91YmxlIGJ1ZmZlcmlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZl
bnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RF
dmVudExpc3RlbmVyLmNwcAppbmRleCBkNGExZDE4MzUxY2YxYWQ0MTMzMmRlMTU3ZDA2YjI5MTQx
NzhiYWFjLi5mMmVkOTMyNTFjNTJjNDY4MTlkZWQxM2I1YzBhZTYyM2U2MTEwMTUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RFdmVudExpc3RlbmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RFdmVudExp
c3RlbmVyLmNwcApAQCAtNTcsOSArNTcsOSBAQCB2b2lkIEdPYmplY3RFdmVudExpc3RlbmVyOjpn
b2JqZWN0RGVzdHJveWVkKCkKICAgICAvLyBhbmQgbGF0ZXIgdXNlLWFmdGVyLWZyZWUgd2l0aCB0
aGUgbV9oYW5kbGVyID0gMDsgYXNzaWdubWVudC4KICAgICBSZWZQdHI8R09iamVjdEV2ZW50TGlz
dGVuZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CiAKLSAgICBtX2NvcmVUYXJnZXQtPnJlbW92ZUV2
ZW50TGlzdGVuZXIobV9kb21FdmVudE5hbWUuZGF0YSgpLCB0aGlzLCBtX2NhcHR1cmUpOwotICAg
IG1fY29yZVRhcmdldCA9IDA7Ci0gICAgbV9oYW5kbGVyID0gMDsKKyAgICBtX2NvcmVUYXJnZXQt
PnJlbW92ZUV2ZW50TGlzdGVuZXIobV9kb21FdmVudE5hbWUuZGF0YSgpLCAqdGhpcywgbV9jYXB0
dXJlKTsKKyAgICBtX2NvcmVUYXJnZXQgPSBudWxscHRyOworICAgIG1faGFuZGxlciA9IG51bGxw
dHI7CiB9CiAKIHZvaWQgR09iamVjdEV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBFdmVudCogZXZlbnQpCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgR09i
amVjdEV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBF
dmVudCogZXZlbnQpCiAgICAgZ192YWx1ZV91bnNldChwYXJhbWV0ZXJzICsgMSk7CiB9CiAKLWJv
b2wgR09iamVjdEV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYg
bGlzdGVuZXIpCitib29sIEdPYmplY3RFdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IEV2
ZW50TGlzdGVuZXImIGxpc3RlbmVyKSBjb25zdAogewogICAgIGlmIChjb25zdCBHT2JqZWN0RXZl
bnRMaXN0ZW5lciogZ29iamVjdEV2ZW50TGlzdGVuZXIgPSBHT2JqZWN0RXZlbnRMaXN0ZW5lcjo6
Y2FzdCgmbGlzdGVuZXIpKQogICAgICAgICByZXR1cm4gbV90YXJnZXQgPT0gZ29iamVjdEV2ZW50
TGlzdGVuZXItPm1fdGFyZ2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9n
b2JqZWN0L0dPYmplY3RFdmVudExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9n
b2JqZWN0L0dPYmplY3RFdmVudExpc3RlbmVyLmgKaW5kZXggZTExN2Y0MGQ2ZWNlNWQ0ZjY2OGMw
OTliODA5NTZhNzNiMGZjNmM4Ni4uMjA2YmJkNzg5ZTMxMDk3MGVmZGQyY2E3ZDgyZmM3MWJhYzk2
ZmJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0
RXZlbnRMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09i
amVjdEV2ZW50TGlzdGVuZXIuaApAQCAtMzUsMTQgKzM1LDE0IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBib29sIGFkZEV2ZW50TGlzdGVuZXIoR09iamVjdCogdGFyZ2V0LCBFdmVudFRhcmdldCog
Y29yZVRhcmdldCwgY29uc3QgY2hhciogZG9tRXZlbnROYW1lLCBHQ2xvc3VyZSogaGFuZGxlciwg
Ym9vbCB1c2VDYXB0dXJlKQogICAgIHsKLSAgICAgICAgUmVmUHRyPEdPYmplY3RFdmVudExpc3Rl
bmVyPiBsaXN0ZW5lcihhZG9wdFJlZihuZXcgR09iamVjdEV2ZW50TGlzdGVuZXIodGFyZ2V0LCBj
b3JlVGFyZ2V0LCBkb21FdmVudE5hbWUsIGhhbmRsZXIsIHVzZUNhcHR1cmUpKSk7Ci0gICAgICAg
IHJldHVybiBjb3JlVGFyZ2V0LT5hZGRFdmVudExpc3RlbmVyKGRvbUV2ZW50TmFtZSwgbGlzdGVu
ZXIucmVsZWFzZSgpLCB1c2VDYXB0dXJlKTsKKyAgICAgICAgUmVmPEdPYmplY3RFdmVudExpc3Rl
bmVyPiBsaXN0ZW5lcihhZG9wdFJlZigqbmV3IEdPYmplY3RFdmVudExpc3RlbmVyKHRhcmdldCwg
Y29yZVRhcmdldCwgZG9tRXZlbnROYW1lLCBoYW5kbGVyLCB1c2VDYXB0dXJlKSkpOworICAgICAg
ICByZXR1cm4gY29yZVRhcmdldC0+YWRkRXZlbnRMaXN0ZW5lcihkb21FdmVudE5hbWUsIFdURk1v
dmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCByZW1v
dmVFdmVudExpc3RlbmVyKEdPYmplY3QqIHRhcmdldCwgRXZlbnRUYXJnZXQqIGNvcmVUYXJnZXQs
IGNvbnN0IGNoYXIqIGRvbUV2ZW50TmFtZSwgR0Nsb3N1cmUqIGhhbmRsZXIsIGJvb2wgdXNlQ2Fw
dHVyZSkKICAgICB7CiAgICAgICAgIEdPYmplY3RFdmVudExpc3RlbmVyIGtleSh0YXJnZXQsIGNv
cmVUYXJnZXQsIGRvbUV2ZW50TmFtZSwgaGFuZGxlciwgdXNlQ2FwdHVyZSk7Ci0gICAgICAgIHJl
dHVybiBjb3JlVGFyZ2V0LT5yZW1vdmVFdmVudExpc3RlbmVyKGRvbUV2ZW50TmFtZSwgJmtleSwg
dXNlQ2FwdHVyZSk7CisgICAgICAgIHJldHVybiBjb3JlVGFyZ2V0LT5yZW1vdmVFdmVudExpc3Rl
bmVyKGRvbUV2ZW50TmFtZSwga2V5LCB1c2VDYXB0dXJlKTsKICAgICB9CiAKICAgICBzdGF0aWMg
dm9pZCBnb2JqZWN0RGVzdHJveWVkQ2FsbGJhY2soR09iamVjdEV2ZW50TGlzdGVuZXIqIGxpc3Rl
bmVyLCBHT2JqZWN0KikKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgOiAw
OwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVu
ZXImIG90aGVyKTsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3Ro
ZXIpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIEdPYmplY3RFdmVudExpc3RlbmVy
KEdPYmplY3QqLCBFdmVudFRhcmdldCosIGNvbnN0IGNoYXIqIGRvbUV2ZW50TmFtZSwgR0Nsb3N1
cmUqLCBib29sIGNhcHR1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRMaXN0ZW5lci5jcHAKaW5kZXggY2M1NGZkNGE4MTg0OTc3YTYwNGI1Zjk0YTU4NTIxMzJhMWQ4
Njg3ZS4uYmZkNzhhODI5NWU4MzgxMjE5YjNiMmRiYTVmNDRhYjA5MGUxNzY2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCkBAIC0xNjMsMjAg
KzE2MywxMyBAQCBib29sIEpTRXZlbnRMaXN0ZW5lcjo6dmlydHVhbGlzQXR0cmlidXRlKCkgY29u
c3QKICAgICByZXR1cm4gbV9pc0F0dHJpYnV0ZTsKIH0KIAotYm9vbCBKU0V2ZW50TGlzdGVuZXI6
Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpCitib29sIEpTRXZlbnRM
aXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikgY29uc3QK
IHsKICAgICBpZiAoY29uc3QgSlNFdmVudExpc3RlbmVyKiBqc0V2ZW50TGlzdGVuZXIgPSBKU0V2
ZW50TGlzdGVuZXI6OmNhc3QoJmxpc3RlbmVyKSkKICAgICAgICAgcmV0dXJuIG1fanNGdW5jdGlv
biA9PSBqc0V2ZW50TGlzdGVuZXItPm1fanNGdW5jdGlvbiAmJiBtX2lzQXR0cmlidXRlID09IGpz
RXZlbnRMaXN0ZW5lci0+bV9pc0F0dHJpYnV0ZTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJl
ZjxKU0V2ZW50TGlzdGVuZXI+IGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvckFkZChKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIEpTQzo6SlNPYmplY3QmIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0JiB3cmFw
cGVyKQotewotICAgIC8vIEZJWE1FOiBUaGlzIGFic3RyYWN0aW9uIGlzIG5vIGxvbmdlciBuZWVk
ZWQuIEl0IHdhcyBwYXJ0IG9mIHN1cHBvcnQgZm9yIFNWR0VsZW1lbnRJbnN0YW5jZS4KLSAgICAv
LyBXZSBzaG91bGQgcmVtb3ZlIGl0IGFuZCBzaW1wbGlmeSB0aGUgYmluZGluZ3MgZ2VuZXJhdGlv
biBzY3JpcHRzLgotICAgIHJldHVybiBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZSgmbGlzdGVuZXIs
ICZ3cmFwcGVyLCBmYWxzZSwgY3VycmVudFdvcmxkKCZzdGF0ZSkpOwotfQotCiBzdGF0aWMgaW5s
aW5lIEpTQzo6SlNWYWx1ZSBldmVudEhhbmRsZXJBdHRyaWJ1dGUoRXZlbnRMaXN0ZW5lciogYWJz
dHJhY3RMaXN0ZW5lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBp
ZiAoIWFic3RyYWN0TGlzdGVuZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0V2ZW50TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRMaXN0ZW5lci5oCmluZGV4IGEwMzk1NTM3MWJmMWNmM2NjYTgwMDBhMjQ2YjRiNjY2YTg5ZTJh
OTUuLmU1NWEyNWIwZjY5NDNlMjJiMjgzOWYxODkxODNlOTY3OGJiOTE3MzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCkBAIC00Myw2ICs0MywxNCBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpTRXZlbnRMaXN0ZW5lcihs
aXN0ZW5lciwgd3JhcHBlciwgaXNBdHRyaWJ1dGUsIHdvcmxkKSk7CiAgICAgfQogCisgICAgc3Rh
dGljIFJlZlB0cjxKU0V2ZW50TGlzdGVuZXI+IGNyZWF0ZShKU0M6OkpTVmFsdWUgbGlzdGVuZXIs
IEpTQzo6SlNPYmplY3QmIHdyYXBwZXIsIGJvb2wgaXNBdHRyaWJ1dGUsIERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQpCisgICAgeworICAgICAgICBpZiAoVU5MSUtFTFkoIWxpc3RlbmVyLmlzT2JqZWN0
KCkpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBKU0V2ZW50TGlzdGVuZXIoSlNDOjphc09iamVjdChsaXN0ZW5lciksICZ3cmFwcGVy
LCBpc0F0dHJpYnV0ZSwgd29ybGQpKTsKKyAgICB9CisKICAgICBzdGF0aWMgY29uc3QgSlNFdmVu
dExpc3RlbmVyKiBjYXN0KGNvbnN0IEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGxpc3RlbmVyLT50eXBlKCkgPT0gSlNFdmVudExpc3RlbmVyVHlwZQpAQCAt
NTIsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5KU0V2ZW50TGlzdGVuZXIoKTsK
IAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgb3ZlcnJp
ZGU7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGV2ZW50IGxpc3RlbmVy
IHdhcyBjcmVhdGVkIGZvciBhbiBldmVudCBoYW5kbGVyIGF0dHJpYnV0ZSwgbGlrZSAib25sb2Fk
IiBvciAib25jbGljayIuCiAgICAgYm9vbCBpc0F0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNBdHRyaWJ1dGU7IH0KQEAgLTk5LDkgKzEwNyw2IEBAIHZvaWQgc2V0RG9jdW1lbnRFdmVudEhh
bmRsZXJBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTT2JqZWN0JiwgSFRNTEVsZW1l
CiBKU0M6OkpTVmFsdWUgZG9jdW1lbnRFdmVudEhhbmRsZXJBdHRyaWJ1dGUoRG9jdW1lbnQmLCBj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7CiB2b2lkIHNldERvY3VtZW50RXZlbnRIYW5k
bGVyQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU09iamVjdCYsIERvY3VtZW50Jiwg
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEpTQzo6SlNWYWx1ZSk7CiAKLVJlZjxKU0V2
ZW50TGlzdGVuZXI+IGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvckFkZChKU0M6OkV4ZWNTdGF0ZSYs
IEpTQzo6SlNPYmplY3QmIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0JiB3cmFwcGVyKTsKLVJlZjxK
U0V2ZW50TGlzdGVuZXI+IGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvclJlbW92ZShKU0M6OkV4ZWNT
dGF0ZSYsIEpTQzo6SlNPYmplY3QmIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0JiB3cmFwcGVyKTsK
LQogaW5saW5lIEpTQzo6SlNPYmplY3QqIEpTRXZlbnRMaXN0ZW5lcjo6anNGdW5jdGlvbihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSBjb25zdAogewogICAg
IC8vIGluaXRpYWxpemVKU0Z1bmN0aW9uIGNhbiB0cmlnZ2VyIGNvZGUgdGhhdCBkZWxldGVzIHRo
aXMgZXZlbnQgbGlzdGVuZXIKQEAgLTEzMywxMSArMTM4LDYgQEAgaW5saW5lIEpTQzo6SlNPYmpl
Y3QqIEpTRXZlbnRMaXN0ZW5lcjo6anNGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHQKICAgICByZXR1cm4gbV9qc0Z1bmN0aW9uLmdldCgpOwogfQogCi1pbmxpbmUgUmVmPEpT
RXZlbnRMaXN0ZW5lcj4gY3JlYXRlSlNFdmVudExpc3RlbmVyRm9yUmVtb3ZlKEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgSlNDOjpKU09iamVjdCYgbGlzdGVuZXIsIEpTQzo6SlNPYmplY3QmIHdyYXBw
ZXIpCi17Ci0gICAgcmV0dXJuIGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvckFkZChzdGF0ZSwgbGlz
dGVuZXIsIHdyYXBwZXIpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBKU0V2ZW50TGlzdGVuZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
b2JqYy9PYmpDRXZlbnRMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9P
YmpDRXZlbnRMaXN0ZW5lci5oCmluZGV4IGYzZTk4NDM3ZmJhYWQ3OWEyY2I1MzNkYmI4MzgxNDMz
NjFmM2E1M2EuLjIzYzk4NDU1NTRmZTk4ZTcwNzBmOWY5YTFkYmNmODdkNTc0MzQ1NmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ0V2ZW50TGlzdGVuZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL09iakNFdmVudExpc3RlbmVyLmgKQEAg
LTUyLDcgKzUyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIE9iakNFdmVudExp
c3RlbmVyKE9iakNMaXN0ZW5lcik7CiAgICAgICAgIHZpcnR1YWwgfk9iakNFdmVudExpc3RlbmVy
KCk7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXIm
KTsKKyAgICAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYp
IGNvbnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIEV2ZW50Kik7CiAKICAgICAgICAgUmV0YWluUHRyPE9iakNMaXN0ZW5lcj4gbV9s
aXN0ZW5lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ0V2
ZW50TGlzdGVuZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL09iakNFdmVudExp
c3RlbmVyLm1tCmluZGV4IDA5OWQ0NTVjMGNhNWI0NzU4NzQ0OTdlZGYyOWUyNzE2YjFmNDA2YzMu
LjMyZmU2ZTY1MWIxNTA1MWMyMTMyM2M3OWM2MDM5NDhiMjU0MGE0MDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ0V2ZW50TGlzdGVuZXIubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9PYmpDRXZlbnRMaXN0ZW5lci5tbQpAQCAtNzksNyAr
NzksNyBAQCB2b2lkIE9iakNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgRXZlbnQqIGV2ZW50KQogICAgIFtsaXN0ZW5lciBoYW5kbGVFdmVudDpraXQo
ZXZlbnQpXTsKIH0KIAotYm9vbCBPYmpDRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBF
dmVudExpc3RlbmVyJiBsaXN0ZW5lcikKK2Jvb2wgT2JqQ0V2ZW50TGlzdGVuZXI6Om9wZXJhdG9y
PT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpIGNvbnN0CiB7CiAgICAgaWYgKGNvbnN0
IE9iakNFdmVudExpc3RlbmVyKiBvYmpDRXZlbnRMaXN0ZW5lciA9IE9iakNFdmVudExpc3RlbmVy
OjpjYXN0KCZsaXN0ZW5lcikpCiAgICAgICAgIHJldHVybiBtX2xpc3RlbmVyID09IG9iakNFdmVu
dExpc3RlbmVyLT5tX2xpc3RlbmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBmNzE3OGQxNTAxNDE2M2IwMTVkMWZmYWVi
ZGYzYjA0YWM2Y2FkODMyLi41MTVkYzRmNjJkOGU0OWU2NWMxOTE1ZGVjYzUxZjVmNGJiMzYwZjg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQpAQCAtMTQzLDI2ICsxNDMsNiBAQCBzdWIgRXZlbnRIYW5kbGVyQXR0cmlidXRlRXZl
bnROYW1lCiAgICAgcmV0dXJuICJldmVudE5hbWVzKCkuJHtldmVudFR5cGV9RXZlbnQiOwogfQog
Ci1zdWIgR2VuZXJhdGVFdmVudExpc3RlbmVyQ2FsbAotewotICAgIG15ICRmdW5jdGlvbk5hbWUg
PSBzaGlmdDsKLSAgICBteSAkc3VmZml4ID0gdWNmaXJzdCAkZnVuY3Rpb25OYW1lOwotICAgIG15
ICRwYXNzUmVmUHRySGFuZGxpbmcgPSAoJGZ1bmN0aW9uTmFtZSBlcSAiYWRkIikgPyAiIiA6ICIu
cHRyKCkiOwotCi0gICAgJGltcGxJbmNsdWRlc3siSlNFdmVudExpc3RlbmVyLmgifSA9IDE7Ci0K
LSAgICBteSBAR2VuZXJhdGVFdmVudExpc3RlbmVySW1wbCA9ICgpOwotCi0gICAgcHVzaChAR2Vu
ZXJhdGVFdmVudExpc3RlbmVySW1wbCwgPDxFTkQpOwotICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBz
dGF0ZS0+YXJndW1lbnQoMSk7Ci0gICAgaWYgKFVOTElLRUxZKCFsaXN0ZW5lci5pc09iamVjdCgp
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBp
bXBsLiR7ZnVuY3Rpb25OYW1lfUV2ZW50TGlzdGVuZXIoc3RhdGUtPmFyZ3VtZW50KDApLnRvU3Ry
aW5nKHN0YXRlKS0+dG9BdG9taWNTdHJpbmcoc3RhdGUpLCBjcmVhdGVKU0V2ZW50TGlzdGVuZXJG
b3Ikc3VmZml4KCpzdGF0ZSwgKmFzT2JqZWN0KGxpc3RlbmVyKSwgKmNhc3RlZFRoaXMpJHBhc3NS
ZWZQdHJIYW5kbGluZywgc3RhdGUtPmFyZ3VtZW50KDIpLnRvQm9vbGVhbihzdGF0ZSkpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci1FTkQKLSAgICByZXR1cm4g
QEdlbmVyYXRlRXZlbnRMaXN0ZW5lckltcGw7Ci19Ci0KIHN1YiBHZXRQYXJlbnRDbGFzc05hbWUK
IHsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CkBAIC0zMjE5LDMwICszMTk5LDI0IEBAIEVO
RAogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAjIEZvciBjb21wYXRpYmlsaXR5IHdpdGgg
bGVnYWN5IGNvbnRlbnQsIHRoZSBFdmVudExpc3RlbmVyIGNhbGxzIGFyZSBnZW5lcmF0ZWQgd2l0
aG91dCBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2suCi0gICAgICAgICAgICAgICAgICAgIGlm
ICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSBlcSAiYWRkRXZlbnRMaXN0ZW5lciIpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUV2ZW50TGlz
dGVuZXJDYWxsKCJhZGQiKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5uYW1lIGVxICJyZW1vdmVFdmVudExpc3RlbmVyIikgewotICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRlRXZlbnRMaXN0ZW5lckNh
bGwoInJlbW92ZSIpKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjayhcQGltcGxDb250ZW50LCAk
ZnVuY3Rpb24sICRpbnRlcmZhY2UpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHJh
aXNlc0V4Y2VwdGlvbldpdGhNZXNzYWdlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlIGVjO1xuIik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkcmFpc2VzRXhjZXB0aW9uKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKFxAaW1wbENvbnRlbnQsICRm
dW5jdGlvbiwgJGludGVyZmFjZSk7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZnVu
Y3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrU2VjdXJpdHlGb3JO
b2RlIn0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9Ob2RlKHN0YXRlLCBpbXBsLiIgLiAkZnVuY3Rp
b24tPnNpZ25hdHVyZS0+bmFtZSAuICIoIiAuICgkcmFpc2VzRXhjZXB0aW9uID8gImVjIiA6ICIi
KSAuIikpKVxuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpO1xuIik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNET01CaW5kaW5nLmgifSA9
IDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICgk
cmFpc2VzRXhjZXB0aW9uV2l0aE1lc3NhZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSBlYztcbiIpOwor
ICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkcmFpc2VzRXhjZXB0aW9uKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDtcbiIpOworICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG15ICRudW1QYXJhbWV0ZXJzID0gQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OwotICAgICAg
ICAgICAgICAgICAgICAgICAgbXkgKCRmdW5jdGlvblN0cmluZywgJGR1bW15KSA9IEdlbmVyYXRl
UGFyYW1ldGVyc0NoZWNrKFxAaW1wbENvbnRlbnQsICRmdW5jdGlvbiwgJGludGVyZmFjZSwgJG51
bVBhcmFtZXRlcnMsICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSwgJHN2Z1Byb3BlcnR5VHlw
ZSwgJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlLCAkc3ZnTGlzdFByb3BlcnR5VHlwZSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25D
YWxsKCRmdW5jdGlvbiwgJGZ1bmN0aW9uU3RyaW5nLCAiICAgICIsICRzdmdQcm9wZXJ0eVR5cGUs
ICRpbnRlcmZhY2UpOworICAgICAgICAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5Rm9yTm9kZSJ9KSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIXNob3VsZEFs
bG93QWNjZXNzVG9Ob2RlKHN0YXRlLCBpbXBsLiIgLiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFt
ZSAuICIoIiAuICgkcmFpc2VzRXhjZXB0aW9uID8gImVjIiA6ICIiKSAuIikpKVxuIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bGwoKSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICRp
bXBsSW5jbHVkZXN7IkpTRE9NQmluZGluZy5oIn0gPSAxOwogICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgbXkgJG51bVBhcmFtZXRlcnMgPSBAeyRmdW5jdGlvbi0+
cGFyYW1ldGVyc307CisgICAgICAgICAgICAgICAgICAgIG15ICgkZnVuY3Rpb25TdHJpbmcsICRk
dW1teSkgPSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayhcQGltcGxDb250ZW50LCAkZnVuY3Rpb24s
ICRpbnRlcmZhY2UsICRudW1QYXJhbWV0ZXJzLCAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUs
ICRzdmdQcm9wZXJ0eVR5cGUsICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSwgJHN2Z0xp
c3RQcm9wZXJ0eVR5cGUpOworICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uRnVuY3Rpb25DYWxsKCRmdW5jdGlvbiwgJGZ1bmN0aW9uU3RyaW5nLCAiICAgICIsICRzdmdQ
cm9wZXJ0eVR5cGUsICRpbnRlcmZhY2UpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KIApAQCAtNDQ1Myw2ICs0NDI3LDkgQEAgc3ViIEpTVmFsdWVUb05hdGl2ZQogCiAgICAgQWRk
VG9JbXBsSW5jbHVkZXMoIkpTJHR5cGUuaCIsICRjb25kaXRpb25hbCk7CiAKKyAgICAjIEZJWE1F
OiBFdmVudExpc3RlbmVyIHNob3VsZCBiZSBhIGNhbGxiYWNrIGludGVyZmFjZS4KKyAgICByZXR1
cm4gIkpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKCR2YWx1ZSwgKmNhc3RlZFRoaXMsIGZhbHNlLCBj
dXJyZW50V29ybGQoc3RhdGUpKSIgaWYgJHR5cGUgZXEgIkV2ZW50TGlzdGVuZXIiOworCiAgICAg
bXkgJGV4dGVuZGVkQXR0cmlidXRlcyA9ICRjb2RlR2VuZXJhdG9yLT5nZXRJbnRlcmZhY2VFeHRl
bmRlZEF0dHJpYnV0ZXNGcm9tTmFtZSgkdHlwZSk7CiAgICAgcmV0dXJuICgiSlMke3R5cGV9Ojp0
b1dyYXBwZWQoKnN0YXRlLCAkdmFsdWUpIiwgMSkgaWYgJGV4dGVuZGVkQXR0cmlidXRlcy0+eyJK
U0N1c3RvbVRvTmF0aXZlT2JqZWN0In07CiAgICAgcmV0dXJuICgiSlMke3R5cGV9Ojp0b1dyYXBw
ZWQoJHZhbHVlKSIsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCAyNjFmYTcwYTU1ZGNjMGM2NTZjZGQyMzdm
Y2M3MGMyNDMzNGEzMWIyLi5lOGE0NmE5MjdmMGNjMDY3YzA5ODg3YTk1N2YxZmZkZGFiYTgwZThi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcApAQCAtNDQzMCwxMCArNDQzMCwxOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5lcihFeGVj
U3RhdAogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAiYWRkRXZlbnRMaXN0ZW5lciIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSBsaXN0ZW5lciA9IHN0YXRlLT5hcmd1bWVudCgxKTsK
LSAgICBpZiAoVU5MSUtFTFkoIWxpc3RlbmVyLmlzT2JqZWN0KCkpKQorICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgYXV0
byB0eXBlID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKHN0YXRlKTsKKyAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBhdXRvIGxpc3RlbmVyID0gSlNFdmVudExpc3Rl
bmVyOjpjcmVhdGUoc3RhdGUtPmFyZ3VtZW50KDEpLCAqY2FzdGVkVGhpcywgZmFsc2UsIGN1cnJl
bnRXb3JsZChzdGF0ZSkpOworICAgIGlmIChVTkxJS0VMWSghbGlzdGVuZXIpKQorICAgICAgICBy
ZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDEsICJsaXN0ZW5lciIsICJUZXN0
T2JqIiwgImFkZEV2ZW50TGlzdGVuZXIiLCAiRXZlbnRMaXN0ZW5lciIpOworICAgIGF1dG8gdXNl
Q2FwdHVyZSA9IHN0YXRlLT5hcmd1bWVudCgyKS50b0Jvb2xlYW4oc3RhdGUpOworICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGltcGwuYWRkRXZlbnRMaXN0ZW5lcihzdGF0ZS0+
YXJndW1lbnQoMCkudG9TdHJpbmcoc3RhdGUpLT50b0F0b21pY1N0cmluZyhzdGF0ZSksIGNyZWF0
ZUpTRXZlbnRMaXN0ZW5lckZvckFkZCgqc3RhdGUsICphc09iamVjdChsaXN0ZW5lciksICpjYXN0
ZWRUaGlzKSwgc3RhdGUtPmFyZ3VtZW50KDIpLnRvQm9vbGVhbihzdGF0ZSkpOworICAgIGltcGwu
YWRkRXZlbnRMaXN0ZW5lcihXVEZNb3ZlKHR5cGUpLCAqbGlzdGVuZXIsIFdURk1vdmUodXNlQ2Fw
dHVyZSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
QEAgLTQ0NDUsMTAgKzQ0NTMsMTggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuZXIoRXhlY1MKICAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlbW92ZUV2ZW50
TGlzdGVuZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwotICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBzdGF0ZS0+YXJndW1lbnQoMSk7Ci0gICAgaWYgKFVO
TElLRUxZKCFsaXN0ZW5lci5pc09iamVjdCgpKSkKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDIpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgIGF1dG8gdHlwZSA9IHN0
YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CisgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CisgICAgYXV0byBsaXN0ZW5lciA9IEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRl
KHN0YXRlLT5hcmd1bWVudCgxKSwgKmNhc3RlZFRoaXMsIGZhbHNlLCBjdXJyZW50V29ybGQoc3Rh
dGUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWxpc3RlbmVyKSkKKyAgICAgICAgcmV0dXJuIHRocm93
QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAxLCAibGlzdGVuZXIiLCAiVGVzdE9iaiIsICJyZW1v
dmVFdmVudExpc3RlbmVyIiwgIkV2ZW50TGlzdGVuZXIiKTsKKyAgICBhdXRvIHVzZUNhcHR1cmUg
PSBzdGF0ZS0+YXJndW1lbnQoMikudG9Cb29sZWFuKHN0YXRlKTsKKyAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLSAgICBpbXBsLnJlbW92ZUV2ZW50TGlzdGVuZXIoc3RhdGUtPmFyZ3Vt
ZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dG9BdG9taWNTdHJpbmcoc3RhdGUpLCBjcmVhdGVKU0V2
ZW50TGlzdGVuZXJGb3JSZW1vdmUoKnN0YXRlLCAqYXNPYmplY3QobGlzdGVuZXIpLCAqY2FzdGVk
VGhpcykucHRyKCksIHN0YXRlLT5hcmd1bWVudCgyKS50b0Jvb2xlYW4oc3RhdGUpKTsKKyAgICBp
bXBsLnJlbW92ZUV2ZW50TGlzdGVuZXIoV1RGTW92ZSh0eXBlKSwgKmxpc3RlbmVyLCBXVEZNb3Zl
KHVzZUNhcHR1cmUpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaAppbmRleCBiYjRmOWYwMmRlYWQ1ZWQz
MTNjZTc2NDA2YTZkMTllZDhjODZmNmQxLi4yMjQzNTI5NTU5ZDgzMDMzNzU0ZmIwZTcyYmRkYzY0
YzhjOTUzYTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmgKQEAgLTQ4LDcgKzQ4LDcg
QEAgcHVibGljOgogICAgIH07CiAKICAgICB2aXJ0dWFsIH5FdmVudExpc3RlbmVyKCkgeyB9Ci0g
ICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYpID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJikgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
RXZlbnQqKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHdhc0NyZWF0ZWRGcm9tTWFya3VwKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50TGlzdGVuZXJNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAu
Y3BwCmluZGV4IGYxOTdjMjA2MDExYzhiYWE0OGQzMDgxZGRmYmMyMDFhMDVlMzg5MDguLmIwNGUx
MjEzYTU1Y2I2NWMyZjJlNTIzODllZTQ2NGQ3Zjg0NWVlZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRMaXN0ZW5lck1hcC5jcHAKQEAgLTk1LDkgKzk1LDkgQEAgVmVjdG9yPEF0b21pY1N0cmlu
Zz4gRXZlbnRMaXN0ZW5lck1hcDo6ZXZlbnRUeXBlcygpIGNvbnN0CiAgICAgcmV0dXJuIHR5cGVz
OwogfQogCi1zdGF0aWMgYm9vbCBhZGRMaXN0ZW5lclRvVmVjdG9yKEV2ZW50TGlzdGVuZXJWZWN0
b3IqIHZlY3RvciwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciwgYm9vbCB1c2VD
YXB0dXJlKQorc3RhdGljIGJvb2wgYWRkTGlzdGVuZXJUb1ZlY3RvcihFdmVudExpc3RlbmVyVmVj
dG9yKiB2ZWN0b3IsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1
cmUpCiB7Ci0gICAgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIgcmVnaXN0ZXJlZExpc3RlbmVyKGxp
c3RlbmVyLCB1c2VDYXB0dXJlKTsKKyAgICBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciByZWdpc3Rl
cmVkTGlzdGVuZXIoV1RGTW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOwogCiAgICAgaWYgKHZl
Y3Rvci0+ZmluZChyZWdpc3RlcmVkTGlzdGVuZXIpICE9IG5vdEZvdW5kKQogICAgICAgICByZXR1
cm4gZmFsc2U7IC8vIER1cGxpY2F0ZSBsaXN0ZW5lci4KQEAgLTEwNiwyMCArMTA2LDIwIEBAIHN0
YXRpYyBib29sIGFkZExpc3RlbmVyVG9WZWN0b3IoRXZlbnRMaXN0ZW5lclZlY3RvciogdmVjdG9y
LCBQYXNzUmVmUHRyPEV2ZW50TGlzCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRXZlbnRM
aXN0ZW5lck1hcDo6YWRkKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRy
PEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIEV2ZW50TGlz
dGVuZXJNYXA6OmFkZChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlz
dGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICBhc3NlcnROb0FjdGl2
ZUl0ZXJhdG9ycygpOwogCiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZW50cmllcykgewogICAg
ICAgICBpZiAoZW50cnkuZmlyc3QgPT0gZXZlbnRUeXBlKQotICAgICAgICAgICAgcmV0dXJuIGFk
ZExpc3RlbmVyVG9WZWN0b3IoZW50cnkuc2Vjb25kLmdldCgpLCBsaXN0ZW5lciwgdXNlQ2FwdHVy
ZSk7CisgICAgICAgICAgICByZXR1cm4gYWRkTGlzdGVuZXJUb1ZlY3RvcihlbnRyeS5zZWNvbmQu
Z2V0KCksIFdURk1vdmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKICAgICB9CiAKICAgICBtX2Vu
dHJpZXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGV2ZW50VHlwZSwgc3RkOjptYWtlX3VuaXF1ZTxF
dmVudExpc3RlbmVyVmVjdG9yPigpKSk7Ci0gICAgcmV0dXJuIGFkZExpc3RlbmVyVG9WZWN0b3Io
bV9lbnRyaWVzLmxhc3QoKS5zZWNvbmQuZ2V0KCksIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKKyAg
ICByZXR1cm4gYWRkTGlzdGVuZXJUb1ZlY3RvcihtX2VudHJpZXMubGFzdCgpLnNlY29uZC5nZXQo
KSwgV1RGTW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOwogfQogCi1zdGF0aWMgYm9vbCByZW1v
dmVMaXN0ZW5lckZyb21WZWN0b3IoRXZlbnRMaXN0ZW5lclZlY3RvciogbGlzdGVuZXJWZWN0b3Is
IEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUsIHNpemVfdCYgaW5kZXhP
ZlJlbW92ZWRMaXN0ZW5lcikKK3N0YXRpYyBib29sIHJlbW92ZUxpc3RlbmVyRnJvbVZlY3RvcihF
dmVudExpc3RlbmVyVmVjdG9yKiBsaXN0ZW5lclZlY3RvciwgRXZlbnRMaXN0ZW5lciYgbGlzdGVu
ZXIsIGJvb2wgdXNlQ2FwdHVyZSwgc2l6ZV90JiBpbmRleE9mUmVtb3ZlZExpc3RlbmVyKQogewog
ICAgIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyIHJlZ2lzdGVyZWRMaXN0ZW5lcihsaXN0ZW5lciwg
dXNlQ2FwdHVyZSk7CiAgICAgaW5kZXhPZlJlbW92ZWRMaXN0ZW5lciA9IGxpc3RlbmVyVmVjdG9y
LT5maW5kKHJlZ2lzdGVyZWRMaXN0ZW5lcik7CkBAIC0xMjksNyArMTI5LDcgQEAgc3RhdGljIGJv
b2wgcmVtb3ZlTGlzdGVuZXJGcm9tVmVjdG9yKEV2ZW50TGlzdGVuZXJWZWN0b3IqIGxpc3RlbmVy
VmVjdG9yLCBFdmVudEwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBFdmVudExpc3RlbmVy
TWFwOjpyZW1vdmUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIq
IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUsIHNpemVfdCYgaW5kZXhPZlJlbW92ZWRMaXN0ZW5l
cikKK2Jvb2wgRXZlbnRMaXN0ZW5lck1hcDo6cmVtb3ZlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlLCBzaXplX3Qm
IGluZGV4T2ZSZW1vdmVkTGlzdGVuZXIpCiB7CiAgICAgYXNzZXJ0Tm9BY3RpdmVJdGVyYXRvcnMo
KTsKIApAQCAtMTg1LDcgKzE4NSw3IEBAIHN0YXRpYyB2b2lkIGNvcHlMaXN0ZW5lcnNOb3RDcmVh
dGVkRnJvbU1hcmt1cFRvVGFyZ2V0KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUCiAgICAgICAg
IC8vIEV2ZW50IGxpc3RlbmVycyBjcmVhdGVkIGZyb20gbWFya3VwIGhhdmUgYWxyZWFkeSBiZWVu
IHRyYW5zZmVyZWQgdG8gdGhlIHNoYWRvdyB0cmVlIGR1cmluZyBjbG9uaW5nLgogICAgICAgICBp
ZiAobGlzdGVuZXIubGlzdGVuZXItPndhc0NyZWF0ZWRGcm9tTWFya3VwKCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgdGFyZ2V0LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwg
bGlzdGVuZXIubGlzdGVuZXIuY29weVJlZigpLCBsaXN0ZW5lci51c2VDYXB0dXJlKTsKKyAgICAg
ICAgdGFyZ2V0LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgKmxpc3RlbmVyLmxpc3RlbmVy
LCBsaXN0ZW5lci51c2VDYXB0dXJlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRM
aXN0ZW5lck1hcC5oCmluZGV4IDg5ZmY2NjY4ZDcyZmY5MDFkNjg3ZDNiNzdmYjM0MWIzYzZiODE3
ZjAuLjFlZmU2YWJmOGNlZWQyZDk2M2FjNzYzMTkxYzBhMmE4ZmY5YjYzMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuaApAQCAtNTQsOCArNTQsOCBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBjb250YWluc0NhcHR1cmluZyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkgY29u
c3Q7CiAKICAgICB2b2lkIGNsZWFyKCk7Ci0gICAgYm9vbCBhZGQoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSk7
Ci0gICAgYm9vbCByZW1vdmUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlz
dGVuZXIqLCBib29sIHVzZUNhcHR1cmUsIHNpemVfdCYgaW5kZXhPZlJlbW92ZWRMaXN0ZW5lcik7
CisgICAgYm9vbCBhZGQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExp
c3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpOworICAgIGJvb2wgcmVtb3ZlKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiwgYm9vbCB1c2VDYXB0dXJlLCBzaXpl
X3QmIGluZGV4T2ZSZW1vdmVkTGlzdGVuZXIpOwogICAgIEV2ZW50TGlzdGVuZXJWZWN0b3IqIGZp
bmQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpOwogICAgIFZlY3RvcjxBdG9taWNTdHJp
bmc+IGV2ZW50VHlwZXMoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKaW5k
ZXggZWMyMTA5ODY3YWMzMGQwYzMxYmU2OTI2MTYzMWMzMjUxNmZlYTNjZS4uZDI0ODM4NTkzZDE3
ZjZhYjU2ZDZkOTA5OTU4NTkyOTA1NmIwZTA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQu
Y3BwCkBAIC03NSwxMiArNzUsMjggQEAgYm9vbCBFdmVudFRhcmdldDo6aXNNZXNzYWdlUG9ydCgp
IGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEV2ZW50VGFyZ2V0OjphZGRFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBFdmVudFRhcmdldDo6YWRk
RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlz
dGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICByZXR1cm4gZW5zdXJl
RXZlbnRUYXJnZXREYXRhKCkuZXZlbnRMaXN0ZW5lck1hcC5hZGQoZXZlbnRUeXBlLCBXVEZNb3Zl
KGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiB9CiAKLWJvb2wgRXZlbnRUYXJnZXQ6OnJlbW92ZUV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIq
IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCit2b2lkIEV2ZW50VGFyZ2V0OjphZGRFdmVudExp
c3RlbmVyRm9yQmluZGluZ3MoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxF
dmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCit7CisgICAgLy8gRklY
TUU6IGxpc3RlbmVyIGlzIG5vdCBzdXBwb3NlZCB0byBiZSBudWxsYWJsZS4KKyAgICBpZiAoIWxp
c3RlbmVyKQorICAgICAgICByZXR1cm47CisgICAgYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUs
IGxpc3RlbmVyLnJlbGVhc2VOb25OdWxsKCksIHVzZUNhcHR1cmUpOworfQorCit2b2lkIEV2ZW50
VGFyZ2V0OjpyZW1vdmVFdmVudExpc3RlbmVyRm9yQmluZGluZ3MoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNh
cHR1cmUpCit7CisgICAgLy8gRklYTUU6IGxpc3RlbmVyIGlzIG5vdCBzdXBwb3NlZCB0byBiZSBu
dWxsYWJsZS4KKyAgICBpZiAoIWxpc3RlbmVyKQorICAgICAgICByZXR1cm47CisgICAgcmVtb3Zl
RXZlbnRMaXN0ZW5lcihldmVudFR5cGUsICpsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7Cit9CisKK2Jv
b2wgRXZlbnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAg
ICAgRXZlbnRUYXJnZXREYXRhKiBkID0gZXZlbnRUYXJnZXREYXRhKCk7CiAgICAgaWYgKCFkKQpA
QCAtMTEwLDEyICsxMjYsMTIgQEAgYm9vbCBFdmVudFRhcmdldDo6cmVtb3ZlRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW4KICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBFdmVudFRhcmdldDo6c2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBs
aXN0ZW5lcikKK2Jvb2wgRXZlbnRUYXJnZXQ6OnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3Rl
bmVyKQogewogICAgIGNsZWFyQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUpOwogICAg
IGlmICghbGlzdGVuZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gYWRkRXZl
bnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCBmYWxzZSk7CisgICAgcmV0dXJuIGFkZEV2
ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lci5yZWxlYXNlTm9uTnVsbCgpLCBmYWxzZSk7
CiB9CiAKIEV2ZW50TGlzdGVuZXIqIEV2ZW50VGFyZ2V0OjpnZXRBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKQpAQCAtMTMyLDcgKzE0OCw3IEBAIGJv
b2wgRXZlbnRUYXJnZXQ6OmNsZWFyQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSkKICAgICBFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IGdldEF0dHJp
YnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlKTsKICAgICBpZiAoIWxpc3RlbmVyKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBl
LCBsaXN0ZW5lciwgZmFsc2UpOworICAgIHJldHVybiByZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50
VHlwZSwgKmxpc3RlbmVyLCBmYWxzZSk7CiB9CiAKIGJvb2wgRXZlbnRUYXJnZXQ6OmRpc3BhdGNo
RXZlbnRGb3JCaW5kaW5ncyhFdmVudCogZXZlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXQuaAppbmRleCBmOWIwZjIxMTc0ZjU0MThkNTFmN2Q1NDM4MWIwMWM4Nzgy
MTJlYWFmLi4xYjFkZWQxOWE1ZDljYTU2NjRlNTBhOTk5ZDZjM2VmYjkyYTdlZTk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXQuaApAQCAtMTIxLDE1ICsxMjEsMTggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgRE9NV2luZG93KiB0b0RPTVdpbmRvdygpOwogICAgIHZpcnR1YWwgYm9vbCBpc01lc3Nh
Z2VQb3J0KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wg
dXNlQ2FwdHVyZSk7Ci0gICAgdmlydHVhbCBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUp
OworICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lckZvckJpbmRpbmdzKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKTsK
KyAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXJGb3JCaW5kaW5ncyhjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSk7
CisgICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpOworICAgIHZp
cnR1YWwgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBFdmVudExpc3RlbmVyJiwgYm9vbCB1c2VDYXB0dXJlKTsKKwogICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVBbGxFdmVudExpc3RlbmVycygpOwogICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEV2
ZW50KEV2ZW50Jik7CiAgICAgYm9vbCBkaXNwYXRjaEV2ZW50Rm9yQmluZGluZ3MoRXZlbnQqLCBF
eGNlcHRpb25Db2RlJik7IC8vIERPTSBBUEkKICAgICB2aXJ0dWFsIHZvaWQgdW5jYXVnaHRFeGNl
cHRpb25JbkV2ZW50SGFuZGxlcigpOwogCiAgICAgLy8gVXNlZCBmb3IgbGVnYWN5ICJvbkV2ZW50
IiBhdHRyaWJ1dGUgQVBJcy4KLSAgICBib29sIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4pOwor
ICAgIGJvb2wgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYpOwogICAgIGJvb2wgY2xlYXJBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKTsKICAgICBFdmVu
dExpc3RlbmVyKiBnZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5pZGwKaW5kZXggNTkzZTRjMDY4
NmEwOGI5MGMxM2ViZWJmNmNlYzI4MmY0Yjc2ZTg1ZC4uYzU5NDU4OTZlMDBhNjY3NTYzOTAzOWEw
ODYxZmY2NjU3NWVkYmUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaWRsCkBAIC0yNSw4
ICsyNSwxMCBAQAogICAgIEpTQ3VzdG9tVG9OYXRpdmVPYmplY3QsCiAgICAgT2JqQ1Byb3RvY29s
LAogXSBpbnRlcmZhY2UgRXZlbnRUYXJnZXQgewotICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFt
ZXRlcnNdIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihET01TdHJpbmcgdHlwZSwgRXZlbnRMaXN0ZW5l
cj8gbGlzdGVuZXIsIG9wdGlvbmFsIGJvb2xlYW4gdXNlQ2FwdHVyZSA9IGZhbHNlKTsKLSAgICBb
T2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzXSB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoRE9N
U3RyaW5nIHR5cGUsIEV2ZW50TGlzdGVuZXI/IGxpc3RlbmVyLCBvcHRpb25hbCBib29sZWFuIHVz
ZUNhcHR1cmUgPSBmYWxzZSk7CisgICAgLy8gRklYTUU6IFRoZSAndHlwZScgYW5kICdsaXN0ZW5l
cicgcGFyYW1ldGVycyBzaG91bGQgbm90IGJlIG9wdGlvbmFsLgorICAgIFtPYmpDTGVnYWN5VW5u
YW1lZFBhcmFtZXRlcnMsIEltcGxlbWVudGVkQXM9YWRkRXZlbnRMaXN0ZW5lckZvckJpbmRpbmdz
XSB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoW0F0b21pY1N0cmluZ10gb3B0aW9uYWwgRE9NU3RyaW5n
IHR5cGUgPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgRXZlbnRMaXN0ZW5lcj8gbGlzdGVuZXIsIG9w
dGlvbmFsIGJvb2xlYW4gdXNlQ2FwdHVyZSA9IGZhbHNlKTsKKyAgICBbT2JqQ0xlZ2FjeVVubmFt
ZWRQYXJhbWV0ZXJzLCBJbXBsZW1lbnRlZEFzPXJlbW92ZUV2ZW50TGlzdGVuZXJGb3JCaW5kaW5n
c10gdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKFtBdG9taWNTdHJpbmddIG9wdGlvbmFsIERPTVN0
cmluZyB0eXBlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIEV2ZW50TGlzdGVuZXI/IGxpc3RlbmVy
LCBvcHRpb25hbCBib29sZWFuIHVzZUNhcHR1cmUgPSBmYWxzZSk7CisKICAgICAvLyBGSVhNRTog
ZXZlbnQgc2hvdWxkIG5vdCBiZSBudWxsYWJsZS4KICAgICBbSW1wbGVtZW50ZWRBcz1kaXNwYXRj
aEV2ZW50Rm9yQmluZGluZ3MsIFJhaXNlc0V4Y2VwdGlvbl0gYm9vbGVhbiBkaXNwYXRjaEV2ZW50
KEV2ZW50PyBldmVudCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VQb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKaW5kZXggNWE4
NGE0NGEyMDhhYmViZTQxM2I5OWYxMWU2ZjUwMTE5ZGE0MDJiOC4uM2Q3ODQ3Y2FlZGIyOTIwZTNi
MjY0YjY1MmJjNTRjYmMzNDc4YTNhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VQb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCkBA
IC0yMjEsOSArMjIxLDkgQEAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0QXJyYXk+IE1lc3Nh
Z2VQb3J0OjplbnRhbmdsZVBvcnRzKFNjcmlwdEV4ZWN1dGlvbkNvbnQKICAgICByZXR1cm4gcG9y
dEFycmF5OwogfQogCi1ib29sIE1lc3NhZ2VQb3J0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwg
Ym9vbCB1c2VDYXB0dXJlKQorYm9vbCBNZXNzYWdlUG9ydDo6YWRkRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIs
IGJvb2wgdXNlQ2FwdHVyZSkKIHsKLSAgICBpZiAobGlzdGVuZXIgJiYgbGlzdGVuZXItPmlzQXR0
cmlidXRlKCkgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQpCisgICAg
aWYgKGxpc3RlbmVyLT5pc0F0dHJpYnV0ZSgpICYmIGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCku
bWVzc2FnZUV2ZW50KQogICAgICAgICBzdGFydCgpOwogICAgIHJldHVybiBFdmVudFRhcmdldFdp
dGhJbmxpbmVEYXRhOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5l
ciksIHVzZUNhcHR1cmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VQb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaAppbmRleCBiYWUwMWQ1
Yjk1MWRkNzgyMzdhZmRmODcyMzE0ZjgyNGQxNTdiMTZlLi45Y2ExMjRmNGEyZWZjOTgxZGY1NTYz
YmJiYjc1MDQ2Zjc5Y2ZjZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2Fn
ZVBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaApAQCAtOTIsNyAr
OTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIEEgcG9ydCBnZXRzIG5ldXRl
cmVkIHdoZW4gaXQgaXMgdHJhbnNmZXJyZWQgdG8gYSBuZXcgb3duZXIgdmlhIHBvc3RNZXNzYWdl
KCkuCiAgICAgICAgIGJvb2wgaXNOZXV0ZXJlZCgpIHsgcmV0dXJuICFtX2VudGFuZ2xlZENoYW5u
ZWw7IH0KIAotICAgICAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92
ZXJyaWRlOworICAgICAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJy
aWRlOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZXhwbGljaXQgTWVzc2FnZVBvcnQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDRjNDc1MTA0YjcyMjYwMmEz
OTM4OGJlMTIzOWE4ZTQ2MzdmNWJiNWQuLmQwYzVkNGM0MmVhYzNlMzZiZmJmODA1OTM3OTE2Y2U4
NzJhM2Y3N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTE5NjAsNyArMTk2MCw3IEBAIHZvaWQgTm9k
ZTo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KQogICAgIH0KIH0K
IAotc3RhdGljIGlubGluZSBib29sIHRyeUFkZEV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0Tm9k
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYm
IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitzdGF0aWMgaW5saW5lIGJvb2wgdHJ5QWRkRXZl
bnRMaXN0ZW5lcihOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAg
ICBpZiAoIXRhcmdldE5vZGUtPkV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlw
ZSwgbGlzdGVuZXIuY29weVJlZigpLCB1c2VDYXB0dXJlKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMTk5NiwxMiArMTk5NiwxMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdHJ5QWRkRXZlbnRM
aXN0ZW5lcihOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIE5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29s
IHVzZUNhcHR1cmUpCitib29sIE5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNh
cHR1cmUpCiB7CiAgICAgcmV0dXJuIHRyeUFkZEV2ZW50TGlzdGVuZXIodGhpcywgZXZlbnRUeXBl
LCBXVEZNb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9v
bCB0cnlSZW1vdmVFdmVudExpc3RlbmVyKE5vZGUqIHRhcmdldE5vZGUsIGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJl
KQorc3RhdGljIGlubGluZSBib29sIHRyeVJlbW92ZUV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0
Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3Rl
bmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgaWYgKCF0YXJnZXROb2RlLT5FdmVudFRhcmdl
dDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjAzNyw3ICsyMDM3LDcgQEAgc3RhdGljIGlubGlu
ZSBib29sIHRyeVJlbW92ZUV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgQXRv
bWljU3RyaW5nJgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE5vZGU6OnJlbW92ZUV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqIGxp
c3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIE5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBi
b29sIHVzZUNhcHR1cmUpCiB7CiAgICAgcmV0dXJuIHRyeVJlbW92ZUV2ZW50TGlzdGVuZXIodGhp
cywgZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA1
NTdkZGNjMTE3MzE5NGE4ZjBkZDE5NGNiMzZiMTc2NzBlMDRlMzQ5Li4yMDhlMjg4ZjE3OTc3MmRj
OWY5MjAwNzVjNDI2N2EyYjRlZGU0NTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTUwNiw4ICs1MDYsOCBA
QCBwdWJsaWM6CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2Uo
KSBjb25zdCBvdmVycmlkZTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3QgZmluYWw7IC8vIEltcGxlbWVudGVkIGluIERvY3VtZW50LmgK
IAotICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7Ci0g
ICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKKyAgICBib29sIGFk
ZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExp
c3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgIGJvb2wgcmVtb3ZlRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYs
IGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAKICAgICB1c2luZyBFdmVudFRhcmdldDo6ZGlz
cGF0Y2hFdmVudDsKICAgICBib29sIGRpc3BhdGNoRXZlbnQoRXZlbnQmKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgKaW5kZXggMTI0ODNm
YTYxMTg5ZTJlZTNmNDQ4MjY0YTY1ZjU5M2UyNGMwODlkYi4uMWNjNjljYTJlMjgxZTVlNjU4YjM4
YmE4NjVhYjczMGIxZTdiNTcxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1JlZ2lz
dGVyZWRFdmVudExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JlZ2lzdGVyZWRF
dmVudExpc3RlbmVyLmgKQEAgLTMxLDggKzMxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgY2xhc3MgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAg
UmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5l
ciwgYm9vbCB1c2VDYXB0dXJlKQotICAgICAgICAgICAgOiBsaXN0ZW5lcihsaXN0ZW5lcikKKyAg
ICAgICAgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIoUmVmPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVy
LCBib29sIHVzZUNhcHR1cmUpCisgICAgICAgICAgICA6IGxpc3RlbmVyKFdURk1vdmUobGlzdGVu
ZXIpKQogICAgICAgICAgICAgLCB1c2VDYXB0dXJlKHVzZUNhcHR1cmUpCiAgICAgICAgIHsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggODdl
ODAzYjNmYzY3MzdmYjRkZjhhY2MwYTViZTYyMTgxYzdmYjVhNS4uMzhiZTQ0YjI3OGFkOTRlOGQ0
YzRlMTlhZjQzOGJhZmYxZDI0MDYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCkBAIC01MjE2LDcgKzUyMTYsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmRp
c3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogICAgIHJldHVybiBIVE1MRWxlbWVudDo6ZGlzcGF0
Y2hFdmVudChldmVudCk7CiB9CiAKLWJvb2wgSFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+
JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6YWRk
RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlz
dGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICBpZiAoZXZlbnRUeXBl
ICE9IGV2ZW50TmFtZXMoKS53ZWJraXRwbGF5YmFja3RhcmdldGF2YWlsYWJpbGl0eWNoYW5nZWRF
dmVudCkKICAgICAgICAgcmV0dXJuIE5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBX
VEZNb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CkBAIC01MjM2LDcgKzUyMzYsNyBAQCBib29s
IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIFJlZlB0cjxFdgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEhUTUxNZWRp
YUVsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIEhUTUxN
ZWRpYUVsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAg
aWYgKGV2ZW50VHlwZSAhPSBldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFi
aWxpdHljaGFuZ2VkRXZlbnQpCiAgICAgICAgIHJldHVybiBOb2RlOjpyZW1vdmVFdmVudExpc3Rl
bmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaAppbmRleCBiMzg5Mzk4YjMzYWQ2N2EyODJjYTEyM2M5NTI4OWY1MmE0
YTUwZjM2Li42Njc5OGFjY2M3MTc2ZjY4NDBlMTA2YTg1YWJkNGU0MTlkYjllZGMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMzQ0LDggKzM0NCw4IEBAIHB1Ymxp
YzoKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgdm9pZCB3ZWJr
aXRTaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoKTsKLSAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBi
b29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2Fw
dHVyZSkgb3ZlcnJpZGU7CisgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKSBv
dmVycmlkZTsKKyAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCB3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZSgpIG92ZXJyaWRlOwog
ICAgIGJvb2wgY2FuUGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0IG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggMmYzNWIyOWIzOWI2NzI4
ZGUwYmE4NTc1ZWQ3NTY4ODgzZTU3N2NlNi4uN2ZkMmM3YzllNTc2YTk1YWIxNGY5Y2Q3YmU5YmM3
YTA4MGUzZmFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC02NCw3
ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBFdmVudExpc3RlbmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEV2ZW50TGlzdGVuZXImKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGhhbmRsZUV2ZW50KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCopIG92ZXJyaWRlOwogCiAgICAgSW1hZ2VEb2N1
bWVudCYgbV9kb2N1bWVudDsKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6
OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCkKICAgICAgICAgLy8gU2V0IHRoZSB2aWV3cG9ydCB0
byBiZSBpbiBkZXZpY2UgcGl4ZWxzIChyYXRoZXIgdGhhbiB0aGUgZGVmYXVsdCBvZiA5ODApLgog
ICAgICAgICBwcm9jZXNzVmlld3BvcnQoQVNDSUlMaXRlcmFsKCJ3aWR0aD1kZXZpY2Utd2lkdGgi
KSwgVmlld3BvcnRBcmd1bWVudHM6OkltYWdlRG9jdW1lbnQpOwogI2Vsc2UKLSAgICAgICAgUmVm
UHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gSW1hZ2VFdmVudExpc3RlbmVyOjpjcmVhdGUo
KnRoaXMpOworICAgICAgICBhdXRvIGxpc3RlbmVyID0gSW1hZ2VFdmVudExpc3RlbmVyOjpjcmVh
dGUoKnRoaXMpOwogICAgICAgICBpZiAoRE9NV2luZG93KiB3aW5kb3cgPSB0aGlzLT5kb21XaW5k
b3coKSkKICAgICAgICAgICAgIHdpbmRvdy0+YWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgbGlz
dGVuZXIuY29weVJlZigpLCBmYWxzZSk7CiAgICAgICAgIGltYWdlRWxlbWVudC0+YWRkRXZlbnRM
aXN0ZW5lcigiY2xpY2siLCBXVEZNb3ZlKGxpc3RlbmVyKSwgZmFsc2UpOwpAQCAtNDA3LDcgKzQw
Nyw3IEBAIHZvaWQgSW1hZ2VFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgRXZlbnQqIGV2ZW50KQogICAgIH0KIH0KIAotYm9vbCBJbWFnZUV2ZW50TGlz
dGVuZXI6Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3RoZXIpCitib29sIEltYWdl
RXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgY29u
c3QKIHsKICAgICAvLyBBbGwgSW1hZ2VFdmVudExpc3RlbmVyIG9iamVjdHMgY29tcGFyZSBhcyBl
cXVhbDsgT0sgc2luY2UgdGhlcmUgaXMgb25seSBvbmUgcGVyIGRvY3VtZW50LgogICAgIHJldHVy
biBvdGhlci50eXBlKCkgPT0gSW1hZ2VFdmVudExpc3RlbmVyVHlwZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwCmluZGV4IGNmN2FjNGJj
ZmY3MzI0ZTllMDAyYTljNzA0ZjMwMjJmOTMxOGY2MDIuLmQ5N2RhNzhlNTYxMTM3MWFjYjRkMjlk
YjAwZTBlZTBiY2M3NDdmZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbHNBcHBsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sc0FwcGxlLmNwcApAQCAtNTA5LDE1ICs1MDksMTUgQEAgdm9pZCBNZWRpYUNv
bnRyb2xzQXBwbGU6OnNob3dDbG9zZWRDYXB0aW9uVHJhY2tMaXN0KCkKICAgICBtX3BhbmVsLT5z
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5UG9pbnRlckV2ZW50cywgQ1NTVmFsdWVO
b25lKTsKIAogICAgIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyID0gZXZlbnRMaXN0ZW5lcigpOwot
ICAgIG1fY2xvc2VkQ2FwdGlvbnNDb250YWluZXItPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1l
cygpLndoZWVsRXZlbnQsICZsaXN0ZW5lciwgdHJ1ZSk7CisgICAgbV9jbG9zZWRDYXB0aW9uc0Nv
bnRhaW5lci0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkud2hlZWxFdmVudCwgbGlzdGVu
ZXIsIHRydWUpOwogCiAgICAgLy8gVHJhY2sgY2xpY2sgZXZlbnRzIGluIHRoZSBjYXB0dXJlIHBo
YXNlIGF0IHR3byBsZXZlbHMsIGZpcnN0IGF0IHRoZSBkb2N1bWVudCBsZXZlbAogICAgIC8vIHN1
Y2ggdGhhdCBhIGNsaWNrIG91dHNpZGUgb2YgdGhlIDx2aWRlbz4gbWF5IGRpc21pc3MgdGhlIHRy
YWNrIGxpc3QsIHNlY29uZCBhdCB0aGUKICAgICAvLyBtZWRpYSBjb250cm9scyBsZXZlbCBzdWNo
IHRoYXQgYSBjbGljayBhbnl3aGVyZSBvdXRzaWRlIG9mIHRoZSB0cmFjayBsaXN0IGhpZGVzIHRo
ZQogICAgIC8vIHRyYWNrIGxpc3QuIFRoZXNlIHR3byBsZXZlbHMgYXJlIG5lY2Vzc2FyeSBzaW5j
ZSBpdCB3b3VsZCBub3QgYmUgcG9zc2libGUgdG8gZ2V0IGEKICAgICAvLyByZWZlcmVuY2UgdG8g
dGhlIHRyYWNrIGxpc3Qgd2hlbiBoYW5kbGluZyB0aGUgZXZlbnQgb3V0c2lkZSBvZiB0aGUgc2hh
ZG93IHRyZWUuCi0gICAgZG9jdW1lbnQoKS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5j
bGlja0V2ZW50LCAmbGlzdGVuZXIsIHRydWUpOwotICAgIGFkZEV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLmNsaWNrRXZlbnQsICZsaXN0ZW5lciwgdHJ1ZSk7CisgICAgZG9jdW1lbnQoKS5hZGRF
dmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBsaXN0ZW5lciwgdHJ1ZSk7Cisg
ICAgYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgbGlzdGVuZXIsIHRy
dWUpOwogfQogCiB2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6aGlkZUNsb3NlZENhcHRpb25UcmFj
a0xpc3QoKQpAQCAtNTMxLDkgKzUzMSw5IEBAIHZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjpoaWRl
Q2xvc2VkQ2FwdGlvblRyYWNrTGlzdCgpCiAgICAgbV9wYW5lbC0+cmVtb3ZlSW5saW5lU3R5bGVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHMpOwogCiAgICAgRXZlbnRMaXN0ZW5lciYg
bGlzdGVuZXIgPSBldmVudExpc3RlbmVyKCk7Ci0gICAgbV9jbG9zZWRDYXB0aW9uc0NvbnRhaW5l
ci0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkud2hlZWxFdmVudCwgJmxpc3RlbmVy
LCB0cnVlKTsKLSAgICBkb2N1bWVudCgpLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygp
LmNsaWNrRXZlbnQsICZsaXN0ZW5lciwgdHJ1ZSk7Ci0gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkuY2xpY2tFdmVudCwgJmxpc3RlbmVyLCB0cnVlKTsKKyAgICBtX2Nsb3NlZENh
cHRpb25zQ29udGFpbmVyLT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS53aGVlbEV2
ZW50LCBsaXN0ZW5lciwgdHJ1ZSk7CisgICAgZG9jdW1lbnQoKS5yZW1vdmVFdmVudExpc3RlbmVy
KGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBsaXN0ZW5lciwgdHJ1ZSk7CisgICAgcmVtb3ZlRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgbGlzdGVuZXIsIHRydWUpOwogfQog
CiB2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6c2V0RnVsbHNjcmVlblNsaWRlclZvbHVtZSgpCkBA
IC01OTUsNyArNTk1LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQXBwbGVFdmVudExpc3RlbmVyOjpo
YW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQKICAgICB9CiB9CiAKLWJv
b2wgTWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBFdmVu
dExpc3RlbmVyJiBsaXN0ZW5lcikKK2Jvb2wgTWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0ZW5l
cjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikgY29uc3QKIHsKICAg
ICBpZiAoY29uc3QgTWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0ZW5lciogbWVkaWFDb250cm9s
c0FwcGxlRXZlbnRMaXN0ZW5lciA9IE1lZGlhQ29udHJvbHNBcHBsZUV2ZW50TGlzdGVuZXI6OmNh
c3QoJmxpc3RlbmVyKSkKICAgICAgICAgcmV0dXJuIG1fbWVkaWFDb250cm9scyA9PSBtZWRpYUNv
bnRyb2xzQXBwbGVFdmVudExpc3RlbmVyLT5tX21lZGlhQ29udHJvbHM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5oCmluZGV4IDY5OGNjMzg5ZDlm
MmQ3MjAyYmYyNDFkY2MxYmFmNzNmMDNiZjA0MjkuLmYyOGRkNmI3ZjUxNDEwYjFjZGVlZDQyYzgz
M2UwY2ZmOTNkMWNjMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHNBcHBsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbHNBcHBsZS5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIDog
MDsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3Ro
ZXIpIG92ZXJyaWRlOworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBv
dGhlcikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgTWVkaWFDb250cm9sc0FwcGxl
RXZlbnRMaXN0ZW5lcihNZWRpYUNvbnRyb2xzQXBwbGUqIG1lZGlhQ29udHJvbHMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApp
bmRleCA0NDE1NDMyMTQ0OGQxMTU0NWYyMTE0MjJjMWRmZDgwMzlmOGU2NDcwLi5hYzBlZGQ0ODZh
ZGY0YzJkZTA3YzgyYWFhYWM2YjMxMzEwMDJjYmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTExMiw3ICsxMTIs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5PcGVuRGF0YWJhc2VDYWxsYmFjaygpIHsgfQog
Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKSBvdmVycmlk
ZQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgY29uc3Qg
b3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzID09ICZvdGhlcjsKICAgICB9CkBA
IC0zNzEsNyArMzcxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+T3BlbkN1cnNvckNhbGxi
YWNrKCkgeyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3Ro
ZXIpIG92ZXJyaWRlCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90
aGVyKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMgPT0gJm90aGVy
OwogICAgIH0KQEAgLTY2MCw3ICs2NjAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5DbGVh
ck9iamVjdFN0b3JlTGlzdGVuZXIoKSB7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBF
dmVudExpc3RlbmVyJiBvdGhlcikgb3ZlcnJpZGUKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
RXZlbnRMaXN0ZW5lciYgb3RoZXIpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcyA9PSAmb3RoZXI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4
IGU3ODFiN2NjNGI5MWJhYmRmMzFmZDc4NjJiOTg4NTE3M2JhZmJlODAuLmI3NTQxZWQzODQxYzg1
OGJmNDA3M2JiNDliZjNiOWMzZGJlYjkxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
QEAgLTE3MjQsNyArMTcyNCw3IEBAIGJvb2wgRE9NV2luZG93Ojppc1NhbWVTZWN1cml0eU9yaWdp
bkFzTWFpbkZyYW1lKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgRE9NV2lu
ZG93OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBET01X
aW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJl
ZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgaWYg
KCFFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdURk1vdmUobGlzdGVu
ZXIpLCB1c2VDYXB0dXJlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTgyNyw3ICsxODI3
LDcgQEAgdm9pZCBET01XaW5kb3c6OnJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9uKCkKICNl
bmRpZgogfQogCi1ib29sIERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIsIGJvb2wgdXNlQ2Fw
dHVyZSkKK2Jvb2wgRE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJl
KQogewogICAgIGlmICghRXZlbnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBl
LCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5oCmluZGV4IDRiMjRiOTk4MTM3NzMyNzYzOGI2NGU2ODdkNzVmZTJmZDhkODcy
ZWUuLjAxNThlMTQwNjYyNzQ4ZmM4OTRmOTI1ODE0ZDQ2MjQ4MWJmYWY0MWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuaApAQCAtMjc5LDggKzI3OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICAvLyBFdmVudHMKICAgICAgICAgLy8gRXZlbnRUYXJnZXQgQVBJCi0gICAgICAgIGJv
b2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRy
PEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7Ci0gICAgICAgIGJv
b2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZl
bnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CisgICAgICAgIGJvb2wgYWRk
RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlz
dGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CisgICAgICAgIGJvb2wgcmVtb3Zl
RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5l
ciYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgcmVtb3ZlQWxsRXZl
bnRMaXN0ZW5lcnMoKSBvdmVycmlkZTsKIAogICAgICAgICB1c2luZyBFdmVudFRhcmdldDo6ZGlz
cGF0Y2hFdmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oCmluZGV4IDli
NTczOWNiYTgxNjlhMDRmZmExMmUxNDkzMjhiN2MzNDUzMDAyZTkuLjBiZjQxNDY0ODExYTA0OWE1
NGVmOWYyNDVlY2JjZmMzMzA0ZTYwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVs
ZW1lbnQuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGhhbmRsZUV2ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJDb3Jl
OjpFdmVudCopIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlRm9yRXZlbnROYW1lKGNvbnN0IFdURjo6
QXRvbWljU3RyaW5nJik7Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXIm
IHJocykgZmluYWwgeyByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RXZlbnRMaXN0ZW5lcio+
KHRoaXMpID09ICZyaHM7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5l
ciYgcmhzKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBXZWJDb3JlOjpF
dmVudExpc3RlbmVyKj4odGhpcykgPT0gJnJoczsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBwbGF5KCkgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYXVzZSgpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxNZWRpYUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9X
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQppbmRleCBhNGM2ZmEzY2RlMDZm
ZWNmMTk0YzVhMjI5MmZiZWQ1YzQ0N2MyZDkzLi5mNWJjYjEyYjM5OWYwZWM5NmYxYTA3ZGZmOGNi
ZjMyZjQwNGRmYTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9X
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQpA
QCAtODksNyArODksNyBAQCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50
OjpzZXRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaQogCiAgICAgaWYgKG1fbWVk
aWFFbGVtZW50ICYmIG1faXNMaXN0ZW5pbmcpIHsKICAgICAgICAgZm9yIChhdXRvJiBldmVudE5h
bWUgOiBvYnNlcnZlZEV2ZW50TmFtZXMoKSkKLSAgICAgICAgICAgIG1fbWVkaWFFbGVtZW50LT5y
ZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdGhpcywgZmFsc2UpOworICAgICAgICAgICAg
bV9tZWRpYUVsZW1lbnQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCAqdGhpcywgZmFs
c2UpOwogICAgIH0KICAgICBtX2lzTGlzdGVuaW5nID0gZmFsc2U7CiAKQEAgLTk5LDcgKzk5LDcg
QEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6c2V0TWVkaWFFbGVt
ZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChh
dXRvJiBldmVudE5hbWUgOiBvYnNlcnZlZEV2ZW50TmFtZXMoKSkKLSAgICAgICAgbV9tZWRpYUVs
ZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLCBmYWxzZSk7CisgICAgICAg
IG1fbWVkaWFFbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgKnRoaXMsIGZhbHNl
KTsKICAgICBtX2lzTGlzdGVuaW5nID0gdHJ1ZTsKIAogICAgIHVwZGF0ZUZvckV2ZW50TmFtZShl
dmVudE5hbWVBbGwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaAppbmRl
eCA3MTlhMjU3MGMwZmRiODI3ZDBlNmQzZmZhMWU2YmUzMzRkODIzZmRhLi5lZDg4OTFhYTJkNzhi
Y2Q5Mzg3YjU3ODBjMGExMGJlYjVmZTJmMDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50LmgKQEAgLTU5LDggKzU5LDcgQEAgcHVibGljOgogICAgIAogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgaGFuZGxlRXZlbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFdlYkNvcmU6OkV2ZW50Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVGb3JFdmVudE5hbWUo
Y29uc3QgV1RGOjpBdG9taWNTdHJpbmcmKTsKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZl
bnRMaXN0ZW5lciYgcmhzKSBvdmVycmlkZQotICAgICAgICB7cmV0dXJuIHN0YXRpY19jYXN0PFdl
YkNvcmU6OkV2ZW50TGlzdGVuZXIqPih0aGlzKSA9PSAmcmhzO30KKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgcmhzKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBXZWJDb3JlOjpFdmVudExpc3RlbmVyKj4odGhpcykgPT0gJnJoczsgfQog
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlh
RWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBvdmVycmlkZTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IGZjODMxZTY3NjU4YmEwOWI4OWE4M2IxZTc1ODlh
MDAxY2JiNTk1NTEuLmFiMjQ1ZDU3ZjU4OWJkYmQwNTQxNGE3ODg0Mjk3YjgyMmQwY2Q2N2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTUyOCw3ICs1MjgsNyBAQCBib29sIFNWR0Vs
ZW1lbnQ6OmhhdmVMb2FkZWRSZXF1aXJlZFJlc291cmNlcygpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgU1ZHRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2Fw
dHVyZSkKK2Jvb2wgU1ZHRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2Fw
dHVyZSkKIHsgICAKICAgICAvLyBBZGQgZXZlbnQgbGlzdGVuZXIgdG8gcmVndWxhciBET00gZWxl
bWVudAogICAgIGlmICghTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVy
LmNvcHlSZWYoKSwgdXNlQ2FwdHVyZSkpCkBAIC01NDgsNyArNTQ4LDcgQEAgYm9vbCBTVkdFbGVt
ZW50OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQ
dHI8RXZlbnRMaXMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBTVkdFbGVtZW50OjpyZW1v
dmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3Rl
bmVyKiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBTVkdFbGVtZW50OjpyZW1vdmVF
dmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVy
JiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIGlmIChjb250YWluaW5nU2hhZG93
Um9vdCgpKQogICAgICAgICByZXR1cm4gTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5
cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKQEAgLTU1OCw3ICs1NTgsNyBAQCBib29sIFNWR0Vs
ZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IEV2ZW50TGlzdGVuZQogICAgIC8vIGV2ZW50IGxpc3RlbmVyIGluIGEgY2FjaGUuIElmIHdlIHdh
bnQgdG8gYmUgYWJsZSB0byBjYWxsIHJlbW92ZUV2ZW50TGlzdGVuZXIoKSBtdWx0aXBsZQogICAg
IC8vIHRpbWVzIG9uIGRpZmZlcmVudCBub2Rlcywgd2UgaGF2ZSB0byBkZWxheSBpdHMgaW1tZWRp
YXRlIGRlc3RydWN0aW9uLCB3aGljaCB3b3VsZCBoYXBwZW4KICAgICAvLyBhZnRlciB0aGUgZmly
c3QgY2FsbCBiZWxvdy4KLSAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gcHJvdGVjdG9yKGxpc3Rl
bmVyKTsKKyAgICBSZWY8RXZlbnRMaXN0ZW5lcj4gcHJvdGVjdG9yKGxpc3RlbmVyKTsKIAogICAg
IC8vIFJlbW92ZSBldmVudCBsaXN0ZW5lciBmcm9tIHJlZ3VsYXIgRE9NIGVsZW1lbnQKICAgICBp
ZiAoIU5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2Fw
dHVyZSkpCkBAIC01NzMsNyArNTczLDcgQEAgYm9vbCBTVkdFbGVtZW50OjpyZW1vdmVFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmUKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIC8vIFRoaXMgY2FzZSBjYW4gb25seSBiZSBoaXQg
Zm9yIGV2ZW50IGxpc3RlbmVycyBjcmVhdGVkIGZyb20gbWFya3VwCi0gICAgICAgIEFTU0VSVChs
aXN0ZW5lci0+d2FzQ3JlYXRlZEZyb21NYXJrdXAoKSk7CisgICAgICAgIEFTU0VSVChsaXN0ZW5l
ci53YXNDcmVhdGVkRnJvbU1hcmt1cCgpKTsKIAogICAgICAgICAvLyBJZiB0aGUgZXZlbnQgbGlz
dGVuZXIgJ2xpc3RlbmVyJyBoYXMgYmVlbiBjcmVhdGVkIGZyb20gbWFya3VwIGFuZCBoYXMgYmVl
biBmaXJlZCBiZWZvcmUKICAgICAgICAgLy8gdGhlbiBKU0xhenlFdmVudExpc3RlbmVyOjpwYXJz
ZUNvZGUoKSBoYXMgYmVlbiBjYWxsZWQgYW5kIG1fanNGdW5jdGlvbiBvZiB0aGF0IGxpc3RlbmVy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAppbmRleCAzODE2ODEwMmFmNWVlNzVhZjc4N2NiMGZlMTVh
OGU3YTJiYTcxY2ZiLi45NmQ2YzkwNDYzMWFiMDk0ODhmYjViNmFhYmFlZTIwZmM2MmMzN2JhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKQEAgLTEzMyw4ICsxMzMsOCBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCk7CiAKLSAgICBib29s
IGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxF
dmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVt
b3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0
ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CisgICAgYm9vbCBhZGRFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwg
Ym9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKKyAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBib29sIHVzZUNh
cHR1cmUpIG92ZXJyaWRlOwogICAgIGJvb2wgaGFzRm9jdXNFdmVudExpc3RlbmVycygpIGNvbnN0
OwogCiAjaWYgRU5BQkxFKENTU19SRUdJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RSZWZFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVu
dC5jcHAKaW5kZXggYzdkODQ2ZWEyMzFhZTE1MGRhODEyZGZhNzg1OTczODExZWVjMzZhYS4uNmRk
YmI3NjI3ZGE0Zjc5YzQxZWZjZTQ2NmFhNjU2OGVkN2QzZmNjYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVFJlZkVsZW1lbnQuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXIoU1ZHVFJlZkVsZW1lbnQmIHRyZWZFbGVtZW50
KTsKIAogICAgIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50
Kikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImKSBv
dmVycmlkZTsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgU1ZHVFJlZkVsZW1lbnQmIG1fdHJlZkVsZW1lbnQ7CiAgICAgUmVm
UHRyPEVsZW1lbnQ+IG1fdGFyZ2V0OwpAQCAtOTIsOCArOTIsOCBAQCB2b2lkIFNWR1RSZWZUYXJn
ZXRFdmVudExpc3RlbmVyOjphdHRhY2goUmVmUHRyPEVsZW1lbnQ+JiYgdGFyZ2V0KQogICAgIEFT
U0VSVCh0YXJnZXQuZ2V0KCkpOwogICAgIEFTU0VSVCh0YXJnZXQtPmluRG9jdW1lbnQoKSk7CiAK
LSAgICB0YXJnZXQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLkRPTVN1YnRyZWVNb2Rp
ZmllZEV2ZW50LCB0aGlzLCBmYWxzZSk7Ci0gICAgdGFyZ2V0LT5hZGRFdmVudExpc3RlbmVyKGV2
ZW50TmFtZXMoKS5ET01Ob2RlUmVtb3ZlZEZyb21Eb2N1bWVudEV2ZW50LCB0aGlzLCBmYWxzZSk7
CisgICAgdGFyZ2V0LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5ET01TdWJ0cmVlTW9k
aWZpZWRFdmVudCwgKnRoaXMsIGZhbHNlKTsKKyAgICB0YXJnZXQtPmFkZEV2ZW50TGlzdGVuZXIo
ZXZlbnROYW1lcygpLkRPTU5vZGVSZW1vdmVkRnJvbURvY3VtZW50RXZlbnQsICp0aGlzLCBmYWxz
ZSk7CiAgICAgbV90YXJnZXQgPSBXVEZNb3ZlKHRhcmdldCk7CiB9CiAKQEAgLTEwMiwxMiArMTAy
LDEyIEBAIHZvaWQgU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI6OmRldGFjaCgpCiAgICAgaWYg
KCFpc0F0dGFjaGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fdGFyZ2V0LT5yZW1vdmVF
dmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5ET01TdWJ0cmVlTW9kaWZpZWRFdmVudCwgdGhpcywg
ZmFsc2UpOwotICAgIG1fdGFyZ2V0LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5E
T01Ob2RlUmVtb3ZlZEZyb21Eb2N1bWVudEV2ZW50LCB0aGlzLCBmYWxzZSk7CisgICAgbV90YXJn
ZXQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLkRPTVN1YnRyZWVNb2RpZmllZEV2
ZW50LCAqdGhpcywgZmFsc2UpOworICAgIG1fdGFyZ2V0LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2
ZW50TmFtZXMoKS5ET01Ob2RlUmVtb3ZlZEZyb21Eb2N1bWVudEV2ZW50LCAqdGhpcywgZmFsc2Up
OwogICAgIG1fdGFyZ2V0ID0gbnVsbHB0cjsKIH0KIAotYm9vbCBTVkdUUmVmVGFyZ2V0RXZlbnRM
aXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikKK2Jvb2wg
U1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5l
ciYgbGlzdGVuZXIpIGNvbnN0CiB7CiAgICAgaWYgKGNvbnN0IFNWR1RSZWZUYXJnZXRFdmVudExp
c3RlbmVyKiB0YXJnZXRMaXN0ZW5lciA9IFNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjpjYXN0
KCZsaXN0ZW5lcikpCiAgICAgICAgIHJldHVybiAmbV90cmVmRWxlbWVudCA9PSAmdGFyZ2V0TGlz
dGVuZXItPm1fdHJlZkVsZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5p
bWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24v
U1ZHU01JTEVsZW1lbnQuY3BwCmluZGV4IDdiMjk4NzBmM2UyZDRjZmM1MGIwZDEyNGNiMTIzOWY0
YzNlNzU0ZTYuLjBkMjRhNjE3NGZiZjFhOTRiZjJhZDdkOTkwZGUzMDQyNTg4ODIwYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCkBAIC03
Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIDogbnVsbHB0cjsKICAgICB9CiAKLSAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3RoZXIpIG92ZXJyaWRlOwor
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgCiAgICAgdm9pZCBkaXNjb25uZWN0QW5pbWF0aW9uKCkKICAgICB7CkBAIC05
Nyw3ICs5Nyw3IEBAIHByaXZhdGU6CiAgICAgU1ZHU01JTEVsZW1lbnQ6OkNvbmRpdGlvbiogbV9j
b25kaXRpb247CiB9OwogCi1ib29sIENvbmRpdGlvbkV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0o
Y29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpCitib29sIENvbmRpdGlvbkV2ZW50TGlzdGVu
ZXI6Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpIGNvbnN0CiB7CiAg
ICAgaWYgKGNvbnN0IENvbmRpdGlvbkV2ZW50TGlzdGVuZXIqIGNvbmRpdGlvbkV2ZW50TGlzdGVu
ZXIgPSBDb25kaXRpb25FdmVudExpc3RlbmVyOjpjYXN0KCZsaXN0ZW5lcikpCiAgICAgICAgIHJl
dHVybiBtX2FuaW1hdGlvbiA9PSBjb25kaXRpb25FdmVudExpc3RlbmVyLT5tX2FuaW1hdGlvbiAm
JiBtX2NvbmRpdGlvbiA9PSBjb25kaXRpb25FdmVudExpc3RlbmVyLT5tX2NvbmRpdGlvbjsKQEAg
LTU0NSw3ICs1NDUsNyBAQCB2b2lkIFNWR1NNSUxFbGVtZW50Ojpjb25uZWN0Q29uZGl0aW9ucygp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBBU1NFUlQoIWNvbmRpdGlv
bi5tX2V2ZW50TGlzdGVuZXIpOwogICAgICAgICAgICAgY29uZGl0aW9uLm1fZXZlbnRMaXN0ZW5l
ciA9IENvbmRpdGlvbkV2ZW50TGlzdGVuZXI6OmNyZWF0ZSh0aGlzLCAmY29uZGl0aW9uKTsKLSAg
ICAgICAgICAgIGV2ZW50QmFzZS0+YWRkRXZlbnRMaXN0ZW5lcihjb25kaXRpb24ubV9uYW1lLCBj
b25kaXRpb24ubV9ldmVudExpc3RlbmVyLCBmYWxzZSk7CisgICAgICAgICAgICBldmVudEJhc2Ut
PmFkZEV2ZW50TGlzdGVuZXIoY29uZGl0aW9uLm1fbmFtZSwgKmNvbmRpdGlvbi5tX2V2ZW50TGlz
dGVuZXIsIGZhbHNlKTsKICAgICAgICAgfSBlbHNlIGlmIChjb25kaXRpb24ubV90eXBlID09IENv
bmRpdGlvbjo6U3luY2Jhc2UpIHsKICAgICAgICAgICAgIEFTU0VSVCghY29uZGl0aW9uLm1fYmFz
ZUlELmlzRW1wdHkoKSk7CiAgICAgICAgICAgICBjb25kaXRpb24ubV9zeW5jYmFzZSA9IHRyZWVT
Y29wZSgpLmdldEVsZW1lbnRCeUlkKGNvbmRpdGlvbi5tX2Jhc2VJRCk7CkBAIC01NzcsNyArNTc3
LDcgQEAgdm9pZCBTVkdTTUlMRWxlbWVudDo6ZGlzY29ubmVjdENvbmRpdGlvbnMoKQogICAgICAg
ICAgICAgLy8gb3VyIGNvbmRpdGlvbiBldmVudCBsaXN0ZW5lciwgaW4gY2FzZSBpdCBsYXRlciBm
aXJlcy4KICAgICAgICAgICAgIEVsZW1lbnQqIGV2ZW50QmFzZSA9IGV2ZW50QmFzZUZvcihjb25k
aXRpb24pOwogICAgICAgICAgICAgaWYgKGV2ZW50QmFzZSkKLSAgICAgICAgICAgICAgICBldmVu
dEJhc2UtPnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uZGl0aW9uLm1fbmFtZSwgY29uZGl0aW9uLm1f
ZXZlbnRMaXN0ZW5lci5nZXQoKSwgZmFsc2UpOworICAgICAgICAgICAgICAgIGV2ZW50QmFzZS0+
cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25kaXRpb24ubV9uYW1lLCAqY29uZGl0aW9uLm1fZXZlbnRM
aXN0ZW5lciwgZmFsc2UpOwogICAgICAgICAgICAgY29uZGl0aW9uLm1fZXZlbnRMaXN0ZW5lci0+
ZGlzY29ubmVjdEFuaW1hdGlvbigpOwogICAgICAgICAgICAgY29uZGl0aW9uLm1fZXZlbnRMaXN0
ZW5lciA9IG51bGxwdHI7CiAgICAgICAgIH0gZWxzZSBpZiAoY29uZGl0aW9uLm1fdHlwZSA9PSBD
b25kaXRpb246OlN5bmNiYXNlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9ET01D
b3JlQ2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKaW5k
ZXggNWRmNzgzODYyY2M5MWM4NWEzYjVhNmIzZjU0MjY2OTYxMzFhODNiMy4uMmExMGFkZWQ4ZGNm
NDcyMjkxZGQyNjk0MTIyM2M4YWE5MmRlZmVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93
aW4vRE9NQ29yZUNsYXNzZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFz
c2VzLmNwcApAQCAtNDEyLDggKzQxMiw4IEBAIEhSRVNVTFQgRE9NTm9kZTo6c2V0VGV4dENvbnRl
bnQoX0luXyBCU1RSIC8qdGV4dCovKQogCiBIUkVTVUxUIERPTU5vZGU6OmFkZEV2ZW50TGlzdGVu
ZXIoX0luXyBCU1RSIHR5cGUsIF9Jbl9vcHRfIElET01FdmVudExpc3RlbmVyKiBsaXN0ZW5lciwg
Qk9PTCB1c2VDYXB0dXJlKQogewotICAgIFJlZlB0cjxXZWJFdmVudExpc3RlbmVyPiB3ZWJMaXN0
ZW5lciA9IFdlYkV2ZW50TGlzdGVuZXI6OmNyZWF0ZShsaXN0ZW5lcik7Ci0gICAgbV9ub2RlLT5h
ZGRFdmVudExpc3RlbmVyKHR5cGUsIHdlYkxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKKyAgICBhdXRv
IHdlYkxpc3RlbmVyID0gV2ViRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGxpc3RlbmVyKTsKKyAgICBt
X25vZGUtPmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgV1RGTW92ZSh3ZWJMaXN0ZW5lciksIHVzZUNh
cHR1cmUpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC00MjQsOCArNDI0LDggQEAgSFJFU1VM
VCBET01Ob2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKF9Jbl8gQlNUUiB0eXBlLCBfSW5fb3B0XyBJ
RE9NRXZlbnRMaXN0ZW5lcioKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICBpZiAoIW1f
bm9kZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKLSAgICBSZWZQdHI8V2ViRXZlbnRMaXN0ZW5l
cj4gd2ViTGlzdGVuZXIgPSBXZWJFdmVudExpc3RlbmVyOjpjcmVhdGUobGlzdGVuZXIpOwotICAg
IG1fbm9kZS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCB3ZWJMaXN0ZW5lci5nZXQoKSwgdXNl
Q2FwdHVyZSk7CisgICAgYXV0byB3ZWJMaXN0ZW5lciA9IFdlYkV2ZW50TGlzdGVuZXI6OmNyZWF0
ZShsaXN0ZW5lcik7CisgICAgbV9ub2RlLT5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIHdlYkxp
c3RlbmVyLCB1c2VDYXB0dXJlKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtOTEwLDggKzkx
MCw4IEBAIEhSRVNVTFQgRE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyKF9Jbl8gQlNUUiB0eXBl
LCBfSW5fb3B0XyBJRE9NRXZlbnRMaXN0ZW5lcioKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsK
ICAgICBpZiAoIW1fd2luZG93KQogICAgICAgICByZXR1cm4gRV9GQUlMOwotICAgIFJlZlB0cjxX
ZWJFdmVudExpc3RlbmVyPiB3ZWJMaXN0ZW5lciA9IFdlYkV2ZW50TGlzdGVuZXI6OmNyZWF0ZShs
aXN0ZW5lcik7Ci0gICAgbV93aW5kb3ctPmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgd2ViTGlzdGVu
ZXIsIHVzZUNhcHR1cmUpOworICAgIGF1dG8gd2ViTGlzdGVuZXIgPSBXZWJFdmVudExpc3RlbmVy
OjpjcmVhdGUobGlzdGVuZXIpOworICAgIG1fd2luZG93LT5hZGRFdmVudExpc3RlbmVyKHR5cGUs
IFdURk1vdmUod2ViTGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKICAgICByZXR1cm4gU19PSzsKIH0K
IApAQCAtOTIxLDggKzkyMSw4IEBAIEhSRVNVTFQgRE9NV2luZG93OjpyZW1vdmVFdmVudExpc3Rl
bmVyKF9Jbl8gQlNUUiB0eXBlLCBfSW5fb3B0XyBJRE9NRXZlbnRMaXN0ZW5lCiAgICAgICAgIHJl
dHVybiBFX1BPSU5URVI7CiAgICAgaWYgKCFtX3dpbmRvdykKICAgICAgICAgcmV0dXJuIEVfRkFJ
TDsKLSAgICBSZWZQdHI8V2ViRXZlbnRMaXN0ZW5lcj4gd2ViTGlzdGVuZXIgPSBXZWJFdmVudExp
c3RlbmVyOjpjcmVhdGUobGlzdGVuZXIpOwotICAgIG1fd2luZG93LT5yZW1vdmVFdmVudExpc3Rl
bmVyKHR5cGUsIHdlYkxpc3RlbmVyLmdldCgpLCB1c2VDYXB0dXJlKTsKKyAgICBhdXRvIHdlYkxp
c3RlbmVyID0gV2ViRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGxpc3RlbmVyKTsKKyAgICBtX3dpbmRv
dy0+cmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCB3ZWJMaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUV2
ZW50c0NsYXNzZXMuY3BwIGIvU291cmNlL1dlYktpdC93aW4vRE9NRXZlbnRzQ2xhc3Nlcy5jcHAK
aW5kZXggODBiNGQyZWFjYmI1Y2ZkN2MzZTVlZmM3MWVhOWExZWExNGZjYTNiZS4uYWQ4NzY2YjMx
YjU2ODNhNjljZTU0NzViZjc3MDRiY2EzZGM4MzZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW4vRE9NRXZlbnRzQ2xhc3Nlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vRE9NRXZl
bnRzQ2xhc3Nlcy5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgV2ViRXZlbnRMaXN0ZW5lcjo6fldlYkV2
ZW50TGlzdGVuZXIoKQogICAgIG1faURPTUV2ZW50TGlzdGVuZXItPlJlbGVhc2UoKTsKIH0KIAot
Ym9vbCBXZWJFdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IFdlYkNvcmU6OkV2ZW50TGlz
dGVuZXImIG90aGVyKQorYm9vbCBXZWJFdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IFdl
YkNvcmU6OkV2ZW50TGlzdGVuZXImIG90aGVyKSBjb25zdAogewogICAgIHJldHVybiAob3RoZXIu
dHlwZSgpID09IENQUEV2ZW50TGlzdGVuZXJUeXBlIAogICAgICAgICAmJiByZWludGVycHJldF9j
YXN0PGNvbnN0IFdlYkV2ZW50TGlzdGVuZXIqPigmb3RoZXIpLT5tX2lET01FdmVudExpc3RlbmVy
ID09IG1faURPTUV2ZW50TGlzdGVuZXIpOwpAQCAtODEsOSArODEsOSBAQCB2b2lkIFdlYkV2ZW50
TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHMs
IFdlYkNvcmU6OgogICAgIG1faURPTUV2ZW50TGlzdGVuZXItPmhhbmRsZUV2ZW50KGRvbUV2ZW50
LmdldCgpKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJFdmVudExpc3RlbmVyPiBXZWJFdmVudExpc3Rl
bmVyOjpjcmVhdGUoSURPTUV2ZW50TGlzdGVuZXIqIGQpCitSZWY8V2ViRXZlbnRMaXN0ZW5lcj4g
V2ViRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKElET01FdmVudExpc3RlbmVyKiBkKQogewotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgV2ViRXZlbnRMaXN0ZW5lcihkKSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgV2ViRXZlbnRMaXN0ZW5lcihkKSk7CiB9CiAKIC8vIERPTUV2ZW50IC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUV2ZW50c0NsYXNzZXMuaCBiL1Nv
dXJjZS9XZWJLaXQvd2luL0RPTUV2ZW50c0NsYXNzZXMuaAppbmRleCA0YWIyY2VlMWMxZjMyYTk5
YjcwOWNjZjQ4Mjc4NzIwNThlMTZkYzVlLi43ZGY4MTNiODAzMDc0MTBjZGZhNWM4N2I1ZmJiNDY1
MDc1YTQ5MTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9ET01FdmVudHNDbGFzc2Vz
LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vRE9NRXZlbnRzQ2xhc3Nlcy5oCkBAIC00Niw5ICs0
Niw5IEBAIGNsYXNzIFdlYkV2ZW50TGlzdGVuZXIgOiBwdWJsaWMgV2ViQ29yZTo6RXZlbnRMaXN0
ZW5lciB7CiBwdWJsaWM6CiAgICAgV2ViRXZlbnRMaXN0ZW5lcihJRE9NRXZlbnRMaXN0ZW5lciop
OwogICAgIH5XZWJFdmVudExpc3RlbmVyKCk7Ci0gICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0o
Y29uc3QgRXZlbnRMaXN0ZW5lciYpOworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEV2ZW50TGlzdGVuZXImKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkNvcmU6OkV2ZW50Kik7Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViRXZlbnRMaXN0ZW5lcj4gY3JlYXRlKElET01FdmVudExpc3RlbmVy
Kik7CisgICAgc3RhdGljIFJlZjxXZWJFdmVudExpc3RlbmVyPiBjcmVhdGUoSURPTUV2ZW50TGlz
dGVuZXIqKTsKIHByaXZhdGU6CiAgICAgSURPTUV2ZW50TGlzdGVuZXIqIG1faURPTUV2ZW50TGlz
dGVuZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24uaAppbmRleCA2M2E0OGFjNTYwNmI3NDRhOTUx
MWEyN2U2NjJjODE4MDUyZmViMTNlLi5mNjMzOTcwMWU2NjAxMDllMjkxYThmYzBjNWI5MWE0OTg5
YTM0ZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbkFubm90YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24uaApAQCAtODQsNyArODQsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUERGUGx1Z2luQW5ub3RhdGlvbkV2
ZW50TGlzdGVuZXIoYW5ub3RhdGlvbikpOwogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyKSBvdmVycmlkZSB7IHJldHVybiB0
aGlzID09ICZsaXN0ZW5lcjsgfQorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRM
aXN0ZW5lciYgbGlzdGVuZXIpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRoaXMgPT0gJmxpc3Rl
bmVyOyB9CiAKICAgICAgICAgdm9pZCBzZXRBbm5vdGF0aW9uKFBERlBsdWdpbkFubm90YXRpb24q
IGFubm90YXRpb24pIHsgbV9hbm5vdGF0aW9uID0gYW5ub3RhdGlvbjsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFu
bm90YXRpb24ubW0KaW5kZXggNDdiYTljMjkzNTE4NGE1NTgwZDllNjc1YzcyNWVjMjdhY2JmM2Ez
Yy4uM2NhN2U0ODk4ODdjZmU1OGM0M2M4ZWE3NDM0NmUxYzQ3ODdjZWE0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
QW5ub3RhdGlvbi5tbQpAQCAtNjksOCArNjksOCBAQCB2b2lkIFBERlBsdWdpbkFubm90YXRpb246
OmF0dGFjaChFbGVtZW50KiBwYXJlbnQpCiAgICAgbV9lbGVtZW50ID0gY3JlYXRlQW5ub3RhdGlv
bkVsZW1lbnQoKTsKIAogICAgIG1fZWxlbWVudC0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgImFu
bm90YXRpb24iKTsKLSAgICBtX2VsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygp
LmNoYW5nZUV2ZW50LCBtX2V2ZW50TGlzdGVuZXIsIGZhbHNlKTsKLSAgICBtX2VsZW1lbnQtPmFk
ZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJsdXJFdmVudCwgbV9ldmVudExpc3RlbmVyLCBm
YWxzZSk7CisgICAgbV9lbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jaGFu
Z2VFdmVudCwgKm1fZXZlbnRMaXN0ZW5lciwgZmFsc2UpOworICAgIG1fZWxlbWVudC0+YWRkRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYmx1ckV2ZW50LCAqbV9ldmVudExpc3RlbmVyLCBmYWxz
ZSk7CiAKICAgICB1cGRhdGVHZW9tZXRyeSgpOwogCkBAIC04Nyw4ICs4Nyw4IEBAIHZvaWQgUERG
UGx1Z2luQW5ub3RhdGlvbjo6Y29tbWl0KCkKIAogUERGUGx1Z2luQW5ub3RhdGlvbjo6flBERlBs
dWdpbkFubm90YXRpb24oKQogewotICAgIG1fZWxlbWVudC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkuY2hhbmdlRXZlbnQsIG1fZXZlbnRMaXN0ZW5lci5nZXQoKSwgZmFsc2UpOwot
ICAgIG1fZWxlbWVudC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYmx1ckV2ZW50
LCBtX2V2ZW50TGlzdGVuZXIuZ2V0KCksIGZhbHNlKTsKKyAgICBtX2VsZW1lbnQtPnJlbW92ZUV2
ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNoYW5nZUV2ZW50LCAqbV9ldmVudExpc3RlbmVyLCBm
YWxzZSk7CisgICAgbV9lbGVtZW50LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5i
bHVyRXZlbnQsICptX2V2ZW50TGlzdGVuZXIsIGZhbHNlKTsKIAogICAgIG1fZXZlbnRMaXN0ZW5l
ci0+c2V0QW5ub3RhdGlvbigwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tCmluZGV4
IGIyYTNjN2YwZmVmYTViYjBmNTdmMTM1ZDNiMzZhYzcwMjE3ZWRkN2IuLjY3NzY0NzU3MmQ2ZmEy
MDFkYzMyOTMzZGIzMWIwNmRmYzkxYjA4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQu
bW0KQEAgLTQ5LDE0ICs0OSwxNCBAQCBSZWY8UERGUGx1Z2luUGFzc3dvcmRGaWVsZD4gUERGUGx1
Z2luUGFzc3dvcmRGaWVsZDo6Y3JlYXRlKFBERkxheWVyQ29udHJvbGxlciAqcAogCiBQREZQbHVn
aW5QYXNzd29yZEZpZWxkOjp+UERGUGx1Z2luUGFzc3dvcmRGaWVsZCgpCiB7Ci0gICAgZWxlbWVu
dCgpLT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5rZXl1cEV2ZW50LCBldmVudExp
c3RlbmVyKCksIGZhbHNlKTsKKyAgICBlbGVtZW50KCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lcygpLmtleXVwRXZlbnQsICpldmVudExpc3RlbmVyKCksIGZhbHNlKTsKIH0KIAogUGFz
c1JlZlB0cjxFbGVtZW50PiBQREZQbHVnaW5QYXNzd29yZEZpZWxkOjpjcmVhdGVBbm5vdGF0aW9u
RWxlbWVudCgpCiB7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBQREZQbHVnaW5UZXh0
QW5ub3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKTsKICAgICBlbGVtZW50LT5zZXRB
dHRyaWJ1dGUodHlwZUF0dHIsICJwYXNzd29yZCIpOwotICAgIGVsZW1lbnQtPmFkZEV2ZW50TGlz
dGVuZXIoZXZlbnROYW1lcygpLmtleXVwRXZlbnQsIGV2ZW50TGlzdGVuZXIoKSwgZmFsc2UpOwor
ICAgIGVsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleXVwRXZlbnQsICpl
dmVudExpc3RlbmVyKCksIGZhbHNlKTsKICAgICByZXR1cm4gZWxlbWVudDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0
QW5ub3RhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luVGV4dEFubm90YXRpb24ubW0KaW5kZXggZmJlZDNhNmZkYTY4OTNkOGQyZTU1MzVkYjQz
M2RkMjk0NzE2ZmIxNy4uOGMwNzQ2OWM2ZDU4YWIxNzYyODE4MDg4ZGJlMTk1NjJjMzc4ZmNiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW5UZXh0QW5ub3RhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tCkBAIC03OCw3ICs3OCw3IEBAIFJlZjxQ
REZQbHVnaW5UZXh0QW5ub3RhdGlvbj4gUERGUGx1Z2luVGV4dEFubm90YXRpb246OmNyZWF0ZShQ
REZBbm5vdGF0aW9uICphbm5vCiAKIFBERlBsdWdpblRleHRBbm5vdGF0aW9uOjp+UERGUGx1Z2lu
VGV4dEFubm90YXRpb24oKQogewotICAgIGVsZW1lbnQoKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkua2V5ZG93bkV2ZW50LCBldmVudExpc3RlbmVyKCksIGZhbHNlKTsKKyAgICBl
bGVtZW50KCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleWRvd25FdmVudCwg
KmV2ZW50TGlzdGVuZXIoKSwgZmFsc2UpOwogfQogCiBQYXNzUmVmUHRyPEVsZW1lbnQ+IFBERlBs
dWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpCkBAIC05Nyw3ICs5
Nyw3IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gUERGUGx1Z2luVGV4dEFubm90YXRpb246OmNyZWF0
ZUFubm90YXRpb25FbGVtZW50KCkKICAgICBlbHNlCiAgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KGlucHV0VGFnLCBmYWxzZSk7CiAKLSAgICBlbGVtZW50LT5hZGRFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQsIGV2ZW50TGlzdGVuZXIoKSwgZmFs
c2UpOworICAgIGVsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleWRvd25F
dmVudCwgKmV2ZW50TGlzdGVuZXIoKSwgZmFsc2UpOwogCiAgICAgU3R5bGVkRWxlbWVudCogc3R5
bGVkRWxlbWVudCA9IHN0YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPihlbGVtZW50LmdldCgpKTsK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IGY5MWU4M2MyMjFmZTE3N2ZhZTE3OGFlODllZGRhMDRjY2YyNjU2ZmIuLmQwNzJl
ZWI4MTU1YzYwZDU3NWQzNDE3Mzk4ODczZGQ3MmE4YzI4YTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAxNi0wNS0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IEdlbmVyYXRlIGJpbmRpbmdzIGNvZGUgZm9yIEV2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIo
KSAvIHJlbW92ZUV2ZW50TGlzdGVuZXIoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU3ODgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmViYXNlbGluZSBleGlzdGluZyB0ZXN0IG5vdyB0aGF0IHRoZSAn
bGVuZ3RoJyBwcm9wZXJ0eSBvZiB0aG9zZSBmdW5jdGlvbnMKKyAgICAgICAgaGF2ZSBjaGFuZ2Vk
LiBUaGlzIGlzIGJlY2F1c2UgdGhlIElETCBoYXMgYmVlbiB1cGRhdGVkIHRvIG1hdGNoIG91cgor
ICAgICAgICBpbXBsZW1lbnRhdGlvbiAoYWxsIHBhcmFtZXRlcnMgYXJlIG9wdGlvbmFsKS4gV2hp
bGUgdGhpcyBkb2VzIG5vdCBtYXRjaAorICAgICAgICB0aGUgc3BlY2lmaWNhdGlvbiwgdGhlIG5l
dyBsZW5ndGggbm93IG1hdGNoZXMgb3VyIGFjdHVhbCBiZWhhdmlvci4KKworICAgICAgICAqIGpz
L2RvbS9mdW5jdGlvbi1sZW5ndGgtZXhwZWN0ZWQudHh0OgorCiAyMDE2LTA1LTE4ICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAKICAgICAgICAgU3luYyBET00g
ZXhjZXB0aW9uIHR5cGVzIHdpdGggV2ViSURMIGFuZCB1cGRhdGUgcHJvbWlzZSByZWplY3Rpb25z
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2RvbS9pbnRlcmZhY2VzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2ludGVyZmFjZXMtZXhwZWN0ZWQudHh0CmluZGV4IDcxOTc2
MmJmODYyNzgxOWU0NTljNWM2ZjljNTVhMjUwODJiODU3YjguLjMyNTJkODc1MTYwZWQ4YTk1NDk1
ZGFhNzgxZmMwYzkyOWUyMjI0YTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2ludGVyZmFjZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2ludGVyZmFjZXMt
ZXhwZWN0ZWQudHh0CkBAIC0xMTAsOCArMTEwLDggQEAgUEFTUyBFdmVudFRhcmdldCBpbnRlcmZh
Y2Ugb2JqZWN0IGxlbmd0aAogUEFTUyBFdmVudFRhcmdldCBpbnRlcmZhY2Ugb2JqZWN0IG5hbWUg
CiBQQVNTIEV2ZW50VGFyZ2V0IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9m
IGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IAogUEFTUyBFdmVudFRhcmdldCBpbnRlcmZhY2U6
IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdz
ICJjb25zdHJ1Y3RvciIgcHJvcGVydHkgCi1QQVNTIEV2ZW50VGFyZ2V0IGludGVyZmFjZTogb3Bl
cmF0aW9uIGFkZEV2ZW50TGlzdGVuZXIoRE9NU3RyaW5nLEV2ZW50TGlzdGVuZXIsW29iamVjdCBP
YmplY3RdLFtvYmplY3QgT2JqZWN0XSkgCi1QQVNTIEV2ZW50VGFyZ2V0IGludGVyZmFjZTogb3Bl
cmF0aW9uIHJlbW92ZUV2ZW50TGlzdGVuZXIoRE9NU3RyaW5nLEV2ZW50TGlzdGVuZXIsW29iamVj
dCBPYmplY3RdLFtvYmplY3QgT2JqZWN0XSkgCitGQUlMIEV2ZW50VGFyZ2V0IGludGVyZmFjZTog
b3BlcmF0aW9uIGFkZEV2ZW50TGlzdGVuZXIoRE9NU3RyaW5nLEV2ZW50TGlzdGVuZXIsW29iamVj
dCBPYmplY3RdLFtvYmplY3QgT2JqZWN0XSkgYXNzZXJ0X2VxdWFsczogcHJvcGVydHkgaGFzIHdy
b25nIC5sZW5ndGggZXhwZWN0ZWQgMiBidXQgZ290IDAKK0ZBSUwgRXZlbnRUYXJnZXQgaW50ZXJm
YWNlOiBvcGVyYXRpb24gcmVtb3ZlRXZlbnRMaXN0ZW5lcihET01TdHJpbmcsRXZlbnRMaXN0ZW5l
cixbb2JqZWN0IE9iamVjdF0sW29iamVjdCBPYmplY3RdKSBhc3NlcnRfZXF1YWxzOiBwcm9wZXJ0
eSBoYXMgd3JvbmcgLmxlbmd0aCBleHBlY3RlZCAyIGJ1dCBnb3QgMAogUEFTUyBFdmVudFRhcmdl
dCBpbnRlcmZhY2U6IG9wZXJhdGlvbiBkaXNwYXRjaEV2ZW50KEV2ZW50KSAKIFBBU1MgRXZlbnRM
aXN0ZW5lciBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ug
b2JqZWN0IAogUEFTUyBFdmVudExpc3RlbmVyIGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9w
ZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvanMvZG9tL2Z1bmN0aW9uLWxlbmd0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9q
cy9kb20vZnVuY3Rpb24tbGVuZ3RoLWV4cGVjdGVkLnR4dAppbmRleCA0YTM2Yjk4ZjZiOGMyMjA4
MjRiYjkyZWEwODVhYzEzYTYwNGI0N2VhLi5lOTViZTUwZTUwNjVhZDc3MTZjYjU4OTMwZjQ4ZTIz
MTc0YTRhOTU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9kb20vZnVuY3Rpb24tbGVuZ3Ro
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZnVuY3Rpb24tbGVuZ3RoLWV4
cGVjdGVkLnR4dApAQCAtOCw3ICs4LDcgQEAgUEFTUyB3aW5kb3cub3Blbi5sZW5ndGggaXMgMgog
UEFTUyB3aW5kb3cuc2hvd01vZGFsRGlhbG9nLmxlbmd0aCBpcyAxCiBQQVNTIHdpbmRvdy5zZXRU
aW1lb3V0Lmxlbmd0aCBpcyAxCiBQQVNTIHdpbmRvdy5jbGVhclRpbWVvdXQubGVuZ3RoIGlzIDAK
LVBBU1Mgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIubGVuZ3RoIGlzIDIKK0ZBSUwgd2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIubGVuZ3RoIHNob3VsZCBiZSAyLiBXYXMgMC4KIFBBU1MgQXJyYXkucHJv
dG90eXBlLmNvbmNhdC5sZW5ndGggaXMgMQogUEFTUyBBcnJheS5wcm90b3R5cGUuam9pbi5sZW5n
dGggaXMgMQogUEFTUyBBcnJheS5wcm90b3R5cGUucHVzaC5sZW5ndGggaXMgMQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279358</attachid>
            <date>2016-05-18 23:19:39 -0700</date>
            <delta_ts>2016-05-19 16:58:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157882-20160518232038.patch</filename>
            <type>text/plain</type>
            <size>77527</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxMDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzczYWNlZjg4MjA4MzNi
MTc1ZjVmNGFkMjMyY2NjZjVhMzQ2MDUyYi4uNGI5NjcyZWJkZGRkNDU2ZDU5NWIxODA3NzBkNmE1
NDBkYjk4Zjk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxNi0wNS0xOCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEdlbmVyYXRlIGJpbmRpbmdz
IGNvZGUgZm9yIEV2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoKSAvIHJlbW92ZUV2ZW50TGlz
dGVuZXIoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU3ODgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
R2VuZXJhdGUgYmluZGluZ3MgY29kZSBmb3IgRXZlbnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigp
IC8gcmVtb3ZlRXZlbnRMaXN0ZW5lcigpCisgICAgICAgIGluc3RlYWQgb2YgaGFyZGNvZGluZyB0
aGVtIGluIHRoZSBiaW5kaW5ncyBnZW5lcmF0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBy
ZWJhc2VsaW5lZCBleGlzdGluZyB0ZXN0LiBUaGUgb25seSBXZWItRXhwb3NlZCBiZWhhdmlvciBj
aGFuZ2UKKyAgICAgICAgaXMgdGhhdCAnbGVuZ3RoJyBwcm9wZXJ0eSBvZiB0aG9zZSBmdW5jdGlv
bnMgaGF2ZSBjaGFuZ2VkLiBUaGlzIGlzIGJlY2F1c2UgdGhlCisgICAgICAgIElETCBoYXMgYmVl
biB1cGRhdGVkIHRvIG1hdGNoIG91ciBpbXBsZW1lbnRhdGlvbiAoYWxsIHBhcmFtZXRlcnMgYXJl
IG9wdGlvbmFsKS4KKyAgICAgICAgV2hpbGUgdGhpcyBkb2VzIG5vdCBtYXRjaCB0aGUgc3BlY2lm
aWNhdGlvbiwgdGhlIG5ldyBsZW5ndGggbm93IG1hdGNoZXMgb3VyCisgICAgICAgIGFjdHVhbCBi
ZWhhdmlvci4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3Vy
Y2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6
YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NjaGVkdWxlZFNvdXJj
ZU5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9T
Y3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nv
ck5vZGU6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvY2Vz
c29yTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9TY3JpcHRQcm9jZXNzb3JOb2RlLmg6CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9HT2Jq
ZWN0RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHT2JqZWN0RXZlbnRMaXN0
ZW5lcjo6b3BlcmF0b3I9PSk6CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZl
bnRMaXN0ZW5lci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAg
ICAoV2ViQ29yZTo6ZXZlbnRIYW5kbGVyQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRM
aXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6Y2Fz
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OmpzRnVuY3Rp
b24pOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL29iamMvT2JqQ0V2ZW50TGlzdGVuZXIu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL09iakNFdmVudExpc3RlbmVyLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6T2JqQ0V2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbik6CisgICAgICAgIChKU1ZhbHVlVG9OYXRpdmUpOgorICAgICAgICAoR2V0UGFy
ZW50Q2xhc3NOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEdldENhbGxiYWNrQ2xhc3NOYW1lKTog
RGVsZXRlZC4KKyAgICAgICAgKEdldEpTQ2FsbGJhY2tEYXRhVHlwZSk6IERlbGV0ZWQuCisgICAg
ICAgICogZG9tL0V2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lck1h
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRMaXN0ZW5lclRvVmVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50TGlzdGVuZXJNYXA6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpyZW1v
dmVMaXN0ZW5lckZyb21WZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRMaXN0ZW5lck1h
cDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlMaXN0ZW5lcnNOb3RDcmVhdGVkRnJv
bU1hcmt1cFRvVGFyZ2V0KToKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lck1hcC5oOgorICAg
ICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdl
dDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6YWRk
RXZlbnRMaXN0ZW5lckZvckJpbmRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0
OjpyZW1vdmVFdmVudExpc3RlbmVyRm9yQmluZGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRU
YXJnZXQ6OnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRUYXJnZXQ6OmNsZWFyQXR0cmlidXRlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogZG9tL0V2
ZW50VGFyZ2V0Lmg6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0LmlkbDoKKyAgICAgICAgKiBk
b20vTWVzc2FnZVBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmFkZEV2
ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5oOgorICAgICAgICAqIGRv
bS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyeUFkZEV2ZW50TGlzdGVuZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3Jl
Ojp0cnlSZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlbW92
ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogZG9tL1Jl
Z2lzdGVyZWRFdmVudExpc3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RlcmVkRXZl
bnRMaXN0ZW5lcjo6UmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGh0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojph
ZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJl
bW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURvY3VtZW50OjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGh0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHNBcHBsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQXBw
bGU6OnNob3dDbG9zZWRDYXB0aW9uVHJhY2tMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbHNBcHBsZTo6aGlkZUNsb3NlZENhcHRpb25UcmFja0xpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PSk6CisgICAg
ICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRv
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAg
ICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjphZGRFdmVudExpc3Rl
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIp
OgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjph
dHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI6OmRl
dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcjo6b3Bl
cmF0b3I9PSk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb25kaXRpb25FdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50Ojpjb25uZWN0Q29uZGl0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6ZGlzY29ubmVjdENvbmRpdGlvbnMpOgorCiAy
MDE2LTA1LTE4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBN
b2Rlcm4gSURCOiBNYWtlIFRlc3RSdW5uZXIuY2xlYXJBbGxEYXRhYmFzZXMgYWxzbyBkZWxldGUg
SW5kZXhlZERCIGRhdGFiYXNlcyAob25jZSBkb2luZyBzbyBpcyBzdXBwb3J0ZWQpLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hh
bmdlTG9nCmluZGV4IDNhNDBkMzUwN2JjNjc2YzJmNzhhOTk1MWU2NTU2YWVhNTY5ZGMwNWEuLjQ0
M2FkNGE5YWIxNDUyZGU5MWNjMTRiYmY2Mjk3YmY4NjQyOGMxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAxNi0wNS0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIEdlbmVyYXRlIGJpbmRpbmdzIGNvZGUgZm9yIEV2ZW50VGFyZ2V0LmFk
ZEV2ZW50TGlzdGVuZXIoKSAvIHJlbW92ZUV2ZW50TGlzdGVuZXIoKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3ODgyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2VuZXJhdGUgYmluZGluZ3MgY29kZSBm
b3IgRXZlbnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigpIC8gcmVtb3ZlRXZlbnRMaXN0ZW5lcigp
CisgICAgICAgIGluc3RlYWQgb2YgaGFyZGNvZGluZyB0aGVtIGluIHRoZSBiaW5kaW5ncyBnZW5l
cmF0b3IuCisKKyAgICAgICAgKiBET01FdmVudHNDbGFzc2VzLmNwcDoKKyAgICAgICAgKFdlYkV2
ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIERPTUV2ZW50c0NsYXNzZXMuaDoK
KwogMjAxNi0wNS0xNiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQgcm9sbG91dCByMjAwOTI0LiBDYXVzZWQganMvcmVncmVzcy9zdHJp
bmctcmVwbGFjZS1nZW5lcmljLmh0bWwgdG8gZmFpbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjMWVhOTQ0NzM5
ZmJiNTRlNmJhZmEzOGFlMzM5NDEzNGMyMmMxODQyLi45MWE1Y2EyZmFlNDQxZTBkMDdjZTdjOTIw
NzRkMTU5NWI2Zjg4Zjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTYtMDUtMTgg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBHZW5lcmF0ZSBiaW5k
aW5ncyBjb2RlIGZvciBFdmVudFRhcmdldC5hZGRFdmVudExpc3RlbmVyKCkgLyByZW1vdmVFdmVu
dExpc3RlbmVyKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1Nzg4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEdlbmVyYXRlIGJpbmRpbmdzIGNvZGUgZm9yIEV2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVu
ZXIoKSAvIHJlbW92ZUV2ZW50TGlzdGVuZXIoKQorICAgICAgICBpbnN0ZWFkIG9mIGhhcmRjb2Rp
bmcgdGhlbSBpbiB0aGUgYmluZGluZ3MgZ2VuZXJhdG9yLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW5Bbm5vdGF0aW9uOjphdHRhY2gpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5B
bm5vdGF0aW9uOjp+UERGUGx1Z2luQW5ub3RhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW5QYXNzd29yZEZpZWxkOjp+UERGUGx1Z2luUGFzc3dvcmRGaWVsZCk6CisgICAgICAg
IChXZWJLaXQ6OlBERlBsdWdpblBhc3N3b3JkRmllbGQ6OmNyZWF0ZUFubm90YXRpb25FbGVtZW50
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0
aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6flBERlBs
dWdpblRleHRBbm5vdGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luVGV4dEFubm90
YXRpb246OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KToKKwogMjAxNi0wNS0xOCAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kZXJuIElEQjogTWFrZSBUZXN0
UnVubmVyLmNsZWFyQWxsRGF0YWJhc2VzIGFsc28gZGVsZXRlIEluZGV4ZWREQiBkYXRhYmFzZXMg
KG9uY2UgZG9pbmcgc28gaXMgc3VwcG9ydGVkKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcAppbmRl
eCBiYzRlZmI0YjcyY2U2ZDdlYmNjY2UzOGViNjA5OTk1Mzk0MGU5YjUwLi40Y2E2YTA0NDJmZDNh
OTMxNTdjNzI1MTRmMzQ3YTFmYWM3ODM2NGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwCkBA
IC0yMDEsNyArMjAxLDcgQEAgdm9pZCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OmZpbmlzaCgp
CiAgICAgfQogfQogCi1ib29sIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6YWRkRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+
JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgQXVkaW9TY2hlZHVsZWRTb3VyY2VO
b2RlOjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8
RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIGJvb2wg
c3VjY2VzcyA9IEF1ZGlvTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdURk1vdmUo
bGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKICAgICBpZiAoc3VjY2VzcyAmJiBldmVudFR5cGUgPT0g
ZXZlbnROYW1lcygpLmVuZGVkRXZlbnQpCkBAIC0yMDksNyArMjA5LDcgQEAgYm9vbCBBdWRpb1Nj
aGVkdWxlZFNvdXJjZU5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIFIKICAgICByZXR1cm4gc3VjY2VzczsKIH0KIAotYm9vbCBBdWRpb1NjaGVkdWxl
ZFNvdXJjZU5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIEF1
ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVy
ZSkKIHsKICAgICBib29sIHN1Y2Nlc3MgPSBBdWRpb05vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIo
ZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CiAgICAgaWYgKHN1Y2Nlc3MgJiYgZXZl
bnRUeXBlID09IGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgKaW5k
ZXggZWNlZGUzOGEwODk0MjZkMDljZGU2MWQ0MGNiN2Y3NDNiOWM2MTA1NS4uY2I0ZGQzY2RlODIx
NzVjZDE2NTYzZDBkODhmZmNjMTE3Y2ExZDA5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCkBAIC0x
MDEsOCArMTAxLDggQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgVW5rbm93
blRpbWU7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0
dXJlKSBvdmVycmlkZTsKLSAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpIG92ZXJy
aWRlOworICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7Cisg
ICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBFdmVudExpc3RlbmVyJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKICAgICB2b2lkIHJl
bW92ZUFsbEV2ZW50TGlzdGVuZXJzKCkgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAppbmRl
eCA2ODVjNjczMDg0YzhjMWYxODMzMGZmOWZmMzY3NjUzMDljZDM5M2U1Li4wY2M0MWI3NTY4YmIw
NTEwZTE1NWVlOWNlYzEwMDU2MWViNzRiYTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKQEAgLTI3Myw3ICsy
NzMsNyBAQCBkb3VibGUgU2NyaXB0UHJvY2Vzc29yTm9kZTo6bGF0ZW5jeVRpbWUoKSBjb25zdAog
ICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7CiB9CiAK
LWJvb2wgU2NyaXB0UHJvY2Vzc29yTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wg
dXNlQ2FwdHVyZSkKK2Jvb2wgU2NyaXB0UHJvY2Vzc29yTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVu
ZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICBib29sIHN1Y2Nlc3MgPSBBdWRpb05vZGU6OmFk
ZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7
CiAgICAgaWYgKHN1Y2Nlc3MgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5hdWRpb3Byb2Nl
c3NFdmVudCkKQEAgLTI4MSw3ICsyODEsNyBAQCBib29sIFNjcmlwdFByb2Nlc3Nvck5vZGU6OmFk
ZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cgogICAg
IHJldHVybiBzdWNjZXNzOwogfQogCi1ib29sIFNjcmlwdFByb2Nlc3Nvck5vZGU6OnJlbW92ZUV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIq
IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIFNjcmlwdFByb2Nlc3Nvck5vZGU6OnJl
bW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlz
dGVuZXImIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgYm9vbCBzdWNjZXNzID0g
QXVkaW9Ob2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNh
cHR1cmUpOwogICAgIGlmIChzdWNjZXNzICYmIGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuYXVk
aW9wcm9jZXNzRXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oCmluZGV4IDZiNjVkMDE4ZWJmYWY2OTZhMDVkZDhkM2Rm
ODA0YTYzYzRiYWQ0MjQuLjEzMDYyNTkwOTBhZDQzYjJhZjVkNjM3MjJkNTVlMjQzM2Q4M2JiMmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vz
c29yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJv
Y2Vzc29yTm9kZS5oCkBAIC03Myw4ICs3Myw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGZpcmVQ
cm9jZXNzRXZlbnQoKTsKIAotICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVy
ZSkgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlk
ZTsKKyAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAg
IGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
RXZlbnRMaXN0ZW5lciYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1v
dmVBbGxFdmVudExpc3RlbmVycygpIG92ZXJyaWRlOwogCiAgICAgLy8gRG91YmxlIGJ1ZmZlcmlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZl
bnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RF
dmVudExpc3RlbmVyLmNwcAppbmRleCBkNGExZDE4MzUxY2YxYWQ0MTMzMmRlMTU3ZDA2YjI5MTQx
NzhiYWFjLi5mMmVkOTMyNTFjNTJjNDY4MTlkZWQxM2I1YzBhZTYyM2U2MTEwMTUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RFdmVudExpc3RlbmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RFdmVudExp
c3RlbmVyLmNwcApAQCAtNTcsOSArNTcsOSBAQCB2b2lkIEdPYmplY3RFdmVudExpc3RlbmVyOjpn
b2JqZWN0RGVzdHJveWVkKCkKICAgICAvLyBhbmQgbGF0ZXIgdXNlLWFmdGVyLWZyZWUgd2l0aCB0
aGUgbV9oYW5kbGVyID0gMDsgYXNzaWdubWVudC4KICAgICBSZWZQdHI8R09iamVjdEV2ZW50TGlz
dGVuZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CiAKLSAgICBtX2NvcmVUYXJnZXQtPnJlbW92ZUV2
ZW50TGlzdGVuZXIobV9kb21FdmVudE5hbWUuZGF0YSgpLCB0aGlzLCBtX2NhcHR1cmUpOwotICAg
IG1fY29yZVRhcmdldCA9IDA7Ci0gICAgbV9oYW5kbGVyID0gMDsKKyAgICBtX2NvcmVUYXJnZXQt
PnJlbW92ZUV2ZW50TGlzdGVuZXIobV9kb21FdmVudE5hbWUuZGF0YSgpLCAqdGhpcywgbV9jYXB0
dXJlKTsKKyAgICBtX2NvcmVUYXJnZXQgPSBudWxscHRyOworICAgIG1faGFuZGxlciA9IG51bGxw
dHI7CiB9CiAKIHZvaWQgR09iamVjdEV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBFdmVudCogZXZlbnQpCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgR09i
amVjdEV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBF
dmVudCogZXZlbnQpCiAgICAgZ192YWx1ZV91bnNldChwYXJhbWV0ZXJzICsgMSk7CiB9CiAKLWJv
b2wgR09iamVjdEV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYg
bGlzdGVuZXIpCitib29sIEdPYmplY3RFdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IEV2
ZW50TGlzdGVuZXImIGxpc3RlbmVyKSBjb25zdAogewogICAgIGlmIChjb25zdCBHT2JqZWN0RXZl
bnRMaXN0ZW5lciogZ29iamVjdEV2ZW50TGlzdGVuZXIgPSBHT2JqZWN0RXZlbnRMaXN0ZW5lcjo6
Y2FzdCgmbGlzdGVuZXIpKQogICAgICAgICByZXR1cm4gbV90YXJnZXQgPT0gZ29iamVjdEV2ZW50
TGlzdGVuZXItPm1fdGFyZ2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9n
b2JqZWN0L0dPYmplY3RFdmVudExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9n
b2JqZWN0L0dPYmplY3RFdmVudExpc3RlbmVyLmgKaW5kZXggZTExN2Y0MGQ2ZWNlNWQ0ZjY2OGMw
OTliODA5NTZhNzNiMGZjNmM4Ni4uMjA2YmJkNzg5ZTMxMDk3MGVmZGQyY2E3ZDgyZmM3MWJhYzk2
ZmJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0
RXZlbnRMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09i
amVjdEV2ZW50TGlzdGVuZXIuaApAQCAtMzUsMTQgKzM1LDE0IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBib29sIGFkZEV2ZW50TGlzdGVuZXIoR09iamVjdCogdGFyZ2V0LCBFdmVudFRhcmdldCog
Y29yZVRhcmdldCwgY29uc3QgY2hhciogZG9tRXZlbnROYW1lLCBHQ2xvc3VyZSogaGFuZGxlciwg
Ym9vbCB1c2VDYXB0dXJlKQogICAgIHsKLSAgICAgICAgUmVmUHRyPEdPYmplY3RFdmVudExpc3Rl
bmVyPiBsaXN0ZW5lcihhZG9wdFJlZihuZXcgR09iamVjdEV2ZW50TGlzdGVuZXIodGFyZ2V0LCBj
b3JlVGFyZ2V0LCBkb21FdmVudE5hbWUsIGhhbmRsZXIsIHVzZUNhcHR1cmUpKSk7Ci0gICAgICAg
IHJldHVybiBjb3JlVGFyZ2V0LT5hZGRFdmVudExpc3RlbmVyKGRvbUV2ZW50TmFtZSwgbGlzdGVu
ZXIucmVsZWFzZSgpLCB1c2VDYXB0dXJlKTsKKyAgICAgICAgUmVmPEdPYmplY3RFdmVudExpc3Rl
bmVyPiBsaXN0ZW5lcihhZG9wdFJlZigqbmV3IEdPYmplY3RFdmVudExpc3RlbmVyKHRhcmdldCwg
Y29yZVRhcmdldCwgZG9tRXZlbnROYW1lLCBoYW5kbGVyLCB1c2VDYXB0dXJlKSkpOworICAgICAg
ICByZXR1cm4gY29yZVRhcmdldC0+YWRkRXZlbnRMaXN0ZW5lcihkb21FdmVudE5hbWUsIFdURk1v
dmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCByZW1v
dmVFdmVudExpc3RlbmVyKEdPYmplY3QqIHRhcmdldCwgRXZlbnRUYXJnZXQqIGNvcmVUYXJnZXQs
IGNvbnN0IGNoYXIqIGRvbUV2ZW50TmFtZSwgR0Nsb3N1cmUqIGhhbmRsZXIsIGJvb2wgdXNlQ2Fw
dHVyZSkKICAgICB7CiAgICAgICAgIEdPYmplY3RFdmVudExpc3RlbmVyIGtleSh0YXJnZXQsIGNv
cmVUYXJnZXQsIGRvbUV2ZW50TmFtZSwgaGFuZGxlciwgdXNlQ2FwdHVyZSk7Ci0gICAgICAgIHJl
dHVybiBjb3JlVGFyZ2V0LT5yZW1vdmVFdmVudExpc3RlbmVyKGRvbUV2ZW50TmFtZSwgJmtleSwg
dXNlQ2FwdHVyZSk7CisgICAgICAgIHJldHVybiBjb3JlVGFyZ2V0LT5yZW1vdmVFdmVudExpc3Rl
bmVyKGRvbUV2ZW50TmFtZSwga2V5LCB1c2VDYXB0dXJlKTsKICAgICB9CiAKICAgICBzdGF0aWMg
dm9pZCBnb2JqZWN0RGVzdHJveWVkQ2FsbGJhY2soR09iamVjdEV2ZW50TGlzdGVuZXIqIGxpc3Rl
bmVyLCBHT2JqZWN0KikKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgOiAw
OwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVu
ZXImIG90aGVyKTsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3Ro
ZXIpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIEdPYmplY3RFdmVudExpc3RlbmVy
KEdPYmplY3QqLCBFdmVudFRhcmdldCosIGNvbnN0IGNoYXIqIGRvbUV2ZW50TmFtZSwgR0Nsb3N1
cmUqLCBib29sIGNhcHR1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRMaXN0ZW5lci5jcHAKaW5kZXggY2M1NGZkNGE4MTg0OTc3YTYwNGI1Zjk0YTU4NTIxMzJhMWQ4
Njg3ZS4uYmZkNzhhODI5NWU4MzgxMjE5YjNiMmRiYTVmNDRhYjA5MGUxNzY2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCkBAIC0xNjMsMjAg
KzE2MywxMyBAQCBib29sIEpTRXZlbnRMaXN0ZW5lcjo6dmlydHVhbGlzQXR0cmlidXRlKCkgY29u
c3QKICAgICByZXR1cm4gbV9pc0F0dHJpYnV0ZTsKIH0KIAotYm9vbCBKU0V2ZW50TGlzdGVuZXI6
Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpCitib29sIEpTRXZlbnRM
aXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikgY29uc3QK
IHsKICAgICBpZiAoY29uc3QgSlNFdmVudExpc3RlbmVyKiBqc0V2ZW50TGlzdGVuZXIgPSBKU0V2
ZW50TGlzdGVuZXI6OmNhc3QoJmxpc3RlbmVyKSkKICAgICAgICAgcmV0dXJuIG1fanNGdW5jdGlv
biA9PSBqc0V2ZW50TGlzdGVuZXItPm1fanNGdW5jdGlvbiAmJiBtX2lzQXR0cmlidXRlID09IGpz
RXZlbnRMaXN0ZW5lci0+bV9pc0F0dHJpYnV0ZTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJl
ZjxKU0V2ZW50TGlzdGVuZXI+IGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvckFkZChKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIEpTQzo6SlNPYmplY3QmIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0JiB3cmFw
cGVyKQotewotICAgIC8vIEZJWE1FOiBUaGlzIGFic3RyYWN0aW9uIGlzIG5vIGxvbmdlciBuZWVk
ZWQuIEl0IHdhcyBwYXJ0IG9mIHN1cHBvcnQgZm9yIFNWR0VsZW1lbnRJbnN0YW5jZS4KLSAgICAv
LyBXZSBzaG91bGQgcmVtb3ZlIGl0IGFuZCBzaW1wbGlmeSB0aGUgYmluZGluZ3MgZ2VuZXJhdGlv
biBzY3JpcHRzLgotICAgIHJldHVybiBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZSgmbGlzdGVuZXIs
ICZ3cmFwcGVyLCBmYWxzZSwgY3VycmVudFdvcmxkKCZzdGF0ZSkpOwotfQotCiBzdGF0aWMgaW5s
aW5lIEpTQzo6SlNWYWx1ZSBldmVudEhhbmRsZXJBdHRyaWJ1dGUoRXZlbnRMaXN0ZW5lciogYWJz
dHJhY3RMaXN0ZW5lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBp
ZiAoIWFic3RyYWN0TGlzdGVuZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0V2ZW50TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRMaXN0ZW5lci5oCmluZGV4IGEwMzk1NTM3MWJmMWNmM2NjYTgwMDBhMjQ2YjRiNjY2YTg5ZTJh
OTUuLmU1NWEyNWIwZjY5NDNlMjJiMjgzOWYxODkxODNlOTY3OGJiOTE3MzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCkBAIC00Myw2ICs0MywxNCBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpTRXZlbnRMaXN0ZW5lcihs
aXN0ZW5lciwgd3JhcHBlciwgaXNBdHRyaWJ1dGUsIHdvcmxkKSk7CiAgICAgfQogCisgICAgc3Rh
dGljIFJlZlB0cjxKU0V2ZW50TGlzdGVuZXI+IGNyZWF0ZShKU0M6OkpTVmFsdWUgbGlzdGVuZXIs
IEpTQzo6SlNPYmplY3QmIHdyYXBwZXIsIGJvb2wgaXNBdHRyaWJ1dGUsIERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQpCisgICAgeworICAgICAgICBpZiAoVU5MSUtFTFkoIWxpc3RlbmVyLmlzT2JqZWN0
KCkpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBKU0V2ZW50TGlzdGVuZXIoSlNDOjphc09iamVjdChsaXN0ZW5lciksICZ3cmFwcGVy
LCBpc0F0dHJpYnV0ZSwgd29ybGQpKTsKKyAgICB9CisKICAgICBzdGF0aWMgY29uc3QgSlNFdmVu
dExpc3RlbmVyKiBjYXN0KGNvbnN0IEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGxpc3RlbmVyLT50eXBlKCkgPT0gSlNFdmVudExpc3RlbmVyVHlwZQpAQCAt
NTIsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5KU0V2ZW50TGlzdGVuZXIoKTsK
IAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgb3ZlcnJp
ZGU7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGV2ZW50IGxpc3RlbmVy
IHdhcyBjcmVhdGVkIGZvciBhbiBldmVudCBoYW5kbGVyIGF0dHJpYnV0ZSwgbGlrZSAib25sb2Fk
IiBvciAib25jbGljayIuCiAgICAgYm9vbCBpc0F0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNBdHRyaWJ1dGU7IH0KQEAgLTk5LDkgKzEwNyw2IEBAIHZvaWQgc2V0RG9jdW1lbnRFdmVudEhh
bmRsZXJBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTT2JqZWN0JiwgSFRNTEVsZW1l
CiBKU0M6OkpTVmFsdWUgZG9jdW1lbnRFdmVudEhhbmRsZXJBdHRyaWJ1dGUoRG9jdW1lbnQmLCBj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7CiB2b2lkIHNldERvY3VtZW50RXZlbnRIYW5k
bGVyQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU09iamVjdCYsIERvY3VtZW50Jiwg
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEpTQzo6SlNWYWx1ZSk7CiAKLVJlZjxKU0V2
ZW50TGlzdGVuZXI+IGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvckFkZChKU0M6OkV4ZWNTdGF0ZSYs
IEpTQzo6SlNPYmplY3QmIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0JiB3cmFwcGVyKTsKLVJlZjxK
U0V2ZW50TGlzdGVuZXI+IGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvclJlbW92ZShKU0M6OkV4ZWNT
dGF0ZSYsIEpTQzo6SlNPYmplY3QmIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0JiB3cmFwcGVyKTsK
LQogaW5saW5lIEpTQzo6SlNPYmplY3QqIEpTRXZlbnRMaXN0ZW5lcjo6anNGdW5jdGlvbihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KSBjb25zdAogewogICAg
IC8vIGluaXRpYWxpemVKU0Z1bmN0aW9uIGNhbiB0cmlnZ2VyIGNvZGUgdGhhdCBkZWxldGVzIHRo
aXMgZXZlbnQgbGlzdGVuZXIKQEAgLTEzMywxMSArMTM4LDYgQEAgaW5saW5lIEpTQzo6SlNPYmpl
Y3QqIEpTRXZlbnRMaXN0ZW5lcjo6anNGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHQKICAgICByZXR1cm4gbV9qc0Z1bmN0aW9uLmdldCgpOwogfQogCi1pbmxpbmUgUmVmPEpT
RXZlbnRMaXN0ZW5lcj4gY3JlYXRlSlNFdmVudExpc3RlbmVyRm9yUmVtb3ZlKEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgSlNDOjpKU09iamVjdCYgbGlzdGVuZXIsIEpTQzo6SlNPYmplY3QmIHdyYXBw
ZXIpCi17Ci0gICAgcmV0dXJuIGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvckFkZChzdGF0ZSwgbGlz
dGVuZXIsIHdyYXBwZXIpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBKU0V2ZW50TGlzdGVuZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
b2JqYy9PYmpDRXZlbnRMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9P
YmpDRXZlbnRMaXN0ZW5lci5oCmluZGV4IGYzZTk4NDM3ZmJhYWQ3OWEyY2I1MzNkYmI4MzgxNDMz
NjFmM2E1M2EuLjIzYzk4NDU1NTRmZTk4ZTcwNzBmOWY5YTFkYmNmODdkNTc0MzQ1NmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ0V2ZW50TGlzdGVuZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL09iakNFdmVudExpc3RlbmVyLmgKQEAg
LTUyLDcgKzUyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIE9iakNFdmVudExp
c3RlbmVyKE9iakNMaXN0ZW5lcik7CiAgICAgICAgIHZpcnR1YWwgfk9iakNFdmVudExpc3RlbmVy
KCk7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXIm
KTsKKyAgICAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYp
IGNvbnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIEV2ZW50Kik7CiAKICAgICAgICAgUmV0YWluUHRyPE9iakNMaXN0ZW5lcj4gbV9s
aXN0ZW5lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ0V2
ZW50TGlzdGVuZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL09iakNFdmVudExp
c3RlbmVyLm1tCmluZGV4IDA5OWQ0NTVjMGNhNWI0NzU4NzQ0OTdlZGYyOWUyNzE2YjFmNDA2YzMu
LjMyZmU2ZTY1MWIxNTA1MWMyMTMyM2M3OWM2MDM5NDhiMjU0MGE0MDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ0V2ZW50TGlzdGVuZXIubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9PYmpDRXZlbnRMaXN0ZW5lci5tbQpAQCAtNzksNyAr
NzksNyBAQCB2b2lkIE9iakNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgRXZlbnQqIGV2ZW50KQogICAgIFtsaXN0ZW5lciBoYW5kbGVFdmVudDpraXQo
ZXZlbnQpXTsKIH0KIAotYm9vbCBPYmpDRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBF
dmVudExpc3RlbmVyJiBsaXN0ZW5lcikKK2Jvb2wgT2JqQ0V2ZW50TGlzdGVuZXI6Om9wZXJhdG9y
PT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpIGNvbnN0CiB7CiAgICAgaWYgKGNvbnN0
IE9iakNFdmVudExpc3RlbmVyKiBvYmpDRXZlbnRMaXN0ZW5lciA9IE9iakNFdmVudExpc3RlbmVy
OjpjYXN0KCZsaXN0ZW5lcikpCiAgICAgICAgIHJldHVybiBtX2xpc3RlbmVyID09IG9iakNFdmVu
dExpc3RlbmVyLT5tX2xpc3RlbmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBmNzE3OGQxNTAxNDE2M2IwMTVkMWZmYWVi
ZGYzYjA0YWM2Y2FkODMyLi41MTVkYzRmNjJkOGU0OWU2NWMxOTE1ZGVjYzUxZjVmNGJiMzYwZjg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQpAQCAtMTQzLDI2ICsxNDMsNiBAQCBzdWIgRXZlbnRIYW5kbGVyQXR0cmlidXRlRXZl
bnROYW1lCiAgICAgcmV0dXJuICJldmVudE5hbWVzKCkuJHtldmVudFR5cGV9RXZlbnQiOwogfQog
Ci1zdWIgR2VuZXJhdGVFdmVudExpc3RlbmVyQ2FsbAotewotICAgIG15ICRmdW5jdGlvbk5hbWUg
PSBzaGlmdDsKLSAgICBteSAkc3VmZml4ID0gdWNmaXJzdCAkZnVuY3Rpb25OYW1lOwotICAgIG15
ICRwYXNzUmVmUHRySGFuZGxpbmcgPSAoJGZ1bmN0aW9uTmFtZSBlcSAiYWRkIikgPyAiIiA6ICIu
cHRyKCkiOwotCi0gICAgJGltcGxJbmNsdWRlc3siSlNFdmVudExpc3RlbmVyLmgifSA9IDE7Ci0K
LSAgICBteSBAR2VuZXJhdGVFdmVudExpc3RlbmVySW1wbCA9ICgpOwotCi0gICAgcHVzaChAR2Vu
ZXJhdGVFdmVudExpc3RlbmVySW1wbCwgPDxFTkQpOwotICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBz
dGF0ZS0+YXJndW1lbnQoMSk7Ci0gICAgaWYgKFVOTElLRUxZKCFsaXN0ZW5lci5pc09iamVjdCgp
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBp
bXBsLiR7ZnVuY3Rpb25OYW1lfUV2ZW50TGlzdGVuZXIoc3RhdGUtPmFyZ3VtZW50KDApLnRvU3Ry
aW5nKHN0YXRlKS0+dG9BdG9taWNTdHJpbmcoc3RhdGUpLCBjcmVhdGVKU0V2ZW50TGlzdGVuZXJG
b3Ikc3VmZml4KCpzdGF0ZSwgKmFzT2JqZWN0KGxpc3RlbmVyKSwgKmNhc3RlZFRoaXMpJHBhc3NS
ZWZQdHJIYW5kbGluZywgc3RhdGUtPmFyZ3VtZW50KDIpLnRvQm9vbGVhbihzdGF0ZSkpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci1FTkQKLSAgICByZXR1cm4g
QEdlbmVyYXRlRXZlbnRMaXN0ZW5lckltcGw7Ci19Ci0KIHN1YiBHZXRQYXJlbnRDbGFzc05hbWUK
IHsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CkBAIC0zMjE5LDMwICszMTk5LDI0IEBAIEVO
RAogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAjIEZvciBjb21wYXRpYmlsaXR5IHdpdGgg
bGVnYWN5IGNvbnRlbnQsIHRoZSBFdmVudExpc3RlbmVyIGNhbGxzIGFyZSBnZW5lcmF0ZWQgd2l0
aG91dCBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2suCi0gICAgICAgICAgICAgICAgICAgIGlm
ICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSBlcSAiYWRkRXZlbnRMaXN0ZW5lciIpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUV2ZW50TGlz
dGVuZXJDYWxsKCJhZGQiKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5uYW1lIGVxICJyZW1vdmVFdmVudExpc3RlbmVyIikgewotICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRlRXZlbnRMaXN0ZW5lckNh
bGwoInJlbW92ZSIpKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjayhcQGltcGxDb250ZW50LCAk
ZnVuY3Rpb24sICRpbnRlcmZhY2UpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHJh
aXNlc0V4Y2VwdGlvbldpdGhNZXNzYWdlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlIGVjO1xuIik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkcmFpc2VzRXhjZXB0aW9uKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKFxAaW1wbENvbnRlbnQsICRm
dW5jdGlvbiwgJGludGVyZmFjZSk7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZnVu
Y3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrU2VjdXJpdHlGb3JO
b2RlIn0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBpZiAoIXNob3VsZEFsbG93QWNjZXNzVG9Ob2RlKHN0YXRlLCBpbXBsLiIgLiAkZnVuY3Rp
b24tPnNpZ25hdHVyZS0+bmFtZSAuICIoIiAuICgkcmFpc2VzRXhjZXB0aW9uID8gImVjIiA6ICIi
KSAuIikpKVxuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpO1xuIik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNET01CaW5kaW5nLmgifSA9
IDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICgk
cmFpc2VzRXhjZXB0aW9uV2l0aE1lc3NhZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSBlYztcbiIpOwor
ICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkcmFpc2VzRXhjZXB0aW9uKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDtcbiIpOworICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG15ICRudW1QYXJhbWV0ZXJzID0gQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OwotICAgICAg
ICAgICAgICAgICAgICAgICAgbXkgKCRmdW5jdGlvblN0cmluZywgJGR1bW15KSA9IEdlbmVyYXRl
UGFyYW1ldGVyc0NoZWNrKFxAaW1wbENvbnRlbnQsICRmdW5jdGlvbiwgJGludGVyZmFjZSwgJG51
bVBhcmFtZXRlcnMsICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSwgJHN2Z1Byb3BlcnR5VHlw
ZSwgJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlLCAkc3ZnTGlzdFByb3BlcnR5VHlwZSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25D
YWxsKCRmdW5jdGlvbiwgJGZ1bmN0aW9uU3RyaW5nLCAiICAgICIsICRzdmdQcm9wZXJ0eVR5cGUs
ICRpbnRlcmZhY2UpOworICAgICAgICAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5Rm9yTm9kZSJ9KSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIXNob3VsZEFs
bG93QWNjZXNzVG9Ob2RlKHN0YXRlLCBpbXBsLiIgLiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFt
ZSAuICIoIiAuICgkcmFpc2VzRXhjZXB0aW9uID8gImVjIiA6ICIiKSAuIikpKVxuIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bGwoKSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICRp
bXBsSW5jbHVkZXN7IkpTRE9NQmluZGluZy5oIn0gPSAxOwogICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgbXkgJG51bVBhcmFtZXRlcnMgPSBAeyRmdW5jdGlvbi0+
cGFyYW1ldGVyc307CisgICAgICAgICAgICAgICAgICAgIG15ICgkZnVuY3Rpb25TdHJpbmcsICRk
dW1teSkgPSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayhcQGltcGxDb250ZW50LCAkZnVuY3Rpb24s
ICRpbnRlcmZhY2UsICRudW1QYXJhbWV0ZXJzLCAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUs
ICRzdmdQcm9wZXJ0eVR5cGUsICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSwgJHN2Z0xp
c3RQcm9wZXJ0eVR5cGUpOworICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uRnVuY3Rpb25DYWxsKCRmdW5jdGlvbiwgJGZ1bmN0aW9uU3RyaW5nLCAiICAgICIsICRzdmdQ
cm9wZXJ0eVR5cGUsICRpbnRlcmZhY2UpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KIApAQCAtNDQ1Myw2ICs0NDI3LDkgQEAgc3ViIEpTVmFsdWVUb05hdGl2ZQogCiAgICAgQWRk
VG9JbXBsSW5jbHVkZXMoIkpTJHR5cGUuaCIsICRjb25kaXRpb25hbCk7CiAKKyAgICAjIEZJWE1F
OiBFdmVudExpc3RlbmVyIHNob3VsZCBiZSBhIGNhbGxiYWNrIGludGVyZmFjZS4KKyAgICByZXR1
cm4gIkpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKCR2YWx1ZSwgKmNhc3RlZFRoaXMsIGZhbHNlLCBj
dXJyZW50V29ybGQoc3RhdGUpKSIgaWYgJHR5cGUgZXEgIkV2ZW50TGlzdGVuZXIiOworCiAgICAg
bXkgJGV4dGVuZGVkQXR0cmlidXRlcyA9ICRjb2RlR2VuZXJhdG9yLT5nZXRJbnRlcmZhY2VFeHRl
bmRlZEF0dHJpYnV0ZXNGcm9tTmFtZSgkdHlwZSk7CiAgICAgcmV0dXJuICgiSlMke3R5cGV9Ojp0
b1dyYXBwZWQoKnN0YXRlLCAkdmFsdWUpIiwgMSkgaWYgJGV4dGVuZGVkQXR0cmlidXRlcy0+eyJK
U0N1c3RvbVRvTmF0aXZlT2JqZWN0In07CiAgICAgcmV0dXJuICgiSlMke3R5cGV9Ojp0b1dyYXBw
ZWQoJHZhbHVlKSIsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCAyNjFmYTcwYTU1ZGNjMGM2NTZjZGQyMzdm
Y2M3MGMyNDMzNGEzMWIyLi5lOGE0NmE5MjdmMGNjMDY3YzA5ODg3YTk1N2YxZmZkZGFiYTgwZThi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcApAQCAtNDQzMCwxMCArNDQzMCwxOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5lcihFeGVj
U3RhdAogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoi
LCAiYWRkRXZlbnRMaXN0ZW5lciIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7Ci0gICAgSlNWYWx1ZSBsaXN0ZW5lciA9IHN0YXRlLT5hcmd1bWVudCgxKTsK
LSAgICBpZiAoVU5MSUtFTFkoIWxpc3RlbmVyLmlzT2JqZWN0KCkpKQorICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgYXV0
byB0eXBlID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKHN0YXRlKTsKKyAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBhdXRvIGxpc3RlbmVyID0gSlNFdmVudExpc3Rl
bmVyOjpjcmVhdGUoc3RhdGUtPmFyZ3VtZW50KDEpLCAqY2FzdGVkVGhpcywgZmFsc2UsIGN1cnJl
bnRXb3JsZChzdGF0ZSkpOworICAgIGlmIChVTkxJS0VMWSghbGlzdGVuZXIpKQorICAgICAgICBy
ZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDEsICJsaXN0ZW5lciIsICJUZXN0
T2JqIiwgImFkZEV2ZW50TGlzdGVuZXIiLCAiRXZlbnRMaXN0ZW5lciIpOworICAgIGF1dG8gdXNl
Q2FwdHVyZSA9IHN0YXRlLT5hcmd1bWVudCgyKS50b0Jvb2xlYW4oc3RhdGUpOworICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGltcGwuYWRkRXZlbnRMaXN0ZW5lcihzdGF0ZS0+
YXJndW1lbnQoMCkudG9TdHJpbmcoc3RhdGUpLT50b0F0b21pY1N0cmluZyhzdGF0ZSksIGNyZWF0
ZUpTRXZlbnRMaXN0ZW5lckZvckFkZCgqc3RhdGUsICphc09iamVjdChsaXN0ZW5lciksICpjYXN0
ZWRUaGlzKSwgc3RhdGUtPmFyZ3VtZW50KDIpLnRvQm9vbGVhbihzdGF0ZSkpOworICAgIGltcGwu
YWRkRXZlbnRMaXN0ZW5lcihXVEZNb3ZlKHR5cGUpLCAqbGlzdGVuZXIsIFdURk1vdmUodXNlQ2Fw
dHVyZSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
QEAgLTQ0NDUsMTAgKzQ0NTMsMTggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuZXIoRXhlY1MKICAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgInJlbW92ZUV2ZW50
TGlzdGVuZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwotICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBzdGF0ZS0+YXJndW1lbnQoMSk7Ci0gICAgaWYgKFVO
TElLRUxZKCFsaXN0ZW5lci5pc09iamVjdCgpKSkKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDIpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgIGF1dG8gdHlwZSA9IHN0
YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CisgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CisgICAgYXV0byBsaXN0ZW5lciA9IEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRl
KHN0YXRlLT5hcmd1bWVudCgxKSwgKmNhc3RlZFRoaXMsIGZhbHNlLCBjdXJyZW50V29ybGQoc3Rh
dGUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWxpc3RlbmVyKSkKKyAgICAgICAgcmV0dXJuIHRocm93
QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAxLCAibGlzdGVuZXIiLCAiVGVzdE9iaiIsICJyZW1v
dmVFdmVudExpc3RlbmVyIiwgIkV2ZW50TGlzdGVuZXIiKTsKKyAgICBhdXRvIHVzZUNhcHR1cmUg
PSBzdGF0ZS0+YXJndW1lbnQoMikudG9Cb29sZWFuKHN0YXRlKTsKKyAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLSAgICBpbXBsLnJlbW92ZUV2ZW50TGlzdGVuZXIoc3RhdGUtPmFyZ3Vt
ZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dG9BdG9taWNTdHJpbmcoc3RhdGUpLCBjcmVhdGVKU0V2
ZW50TGlzdGVuZXJGb3JSZW1vdmUoKnN0YXRlLCAqYXNPYmplY3QobGlzdGVuZXIpLCAqY2FzdGVk
VGhpcykucHRyKCksIHN0YXRlLT5hcmd1bWVudCgyKS50b0Jvb2xlYW4oc3RhdGUpKTsKKyAgICBp
bXBsLnJlbW92ZUV2ZW50TGlzdGVuZXIoV1RGTW92ZSh0eXBlKSwgKmxpc3RlbmVyLCBXVEZNb3Zl
KHVzZUNhcHR1cmUpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaAppbmRleCBiYjRmOWYwMmRlYWQ1ZWQz
MTNjZTc2NDA2YTZkMTllZDhjODZmNmQxLi4yMjQzNTI5NTU5ZDgzMDMzNzU0ZmIwZTcyYmRkYzY0
YzhjOTUzYTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmgKQEAgLTQ4LDcgKzQ4LDcg
QEAgcHVibGljOgogICAgIH07CiAKICAgICB2aXJ0dWFsIH5FdmVudExpc3RlbmVyKCkgeyB9Ci0g
ICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYpID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJikgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
RXZlbnQqKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHdhc0NyZWF0ZWRGcm9tTWFya3VwKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50TGlzdGVuZXJNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAu
Y3BwCmluZGV4IGYxOTdjMjA2MDExYzhiYWE0OGQzMDgxZGRmYmMyMDFhMDVlMzg5MDguLmIwNGUx
MjEzYTU1Y2I2NWMyZjJlNTIzODllZTQ2NGQ3Zjg0NWVlZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRMaXN0ZW5lck1hcC5jcHAKQEAgLTk1LDkgKzk1LDkgQEAgVmVjdG9yPEF0b21pY1N0cmlu
Zz4gRXZlbnRMaXN0ZW5lck1hcDo6ZXZlbnRUeXBlcygpIGNvbnN0CiAgICAgcmV0dXJuIHR5cGVz
OwogfQogCi1zdGF0aWMgYm9vbCBhZGRMaXN0ZW5lclRvVmVjdG9yKEV2ZW50TGlzdGVuZXJWZWN0
b3IqIHZlY3RvciwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciwgYm9vbCB1c2VD
YXB0dXJlKQorc3RhdGljIGJvb2wgYWRkTGlzdGVuZXJUb1ZlY3RvcihFdmVudExpc3RlbmVyVmVj
dG9yKiB2ZWN0b3IsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1
cmUpCiB7Ci0gICAgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIgcmVnaXN0ZXJlZExpc3RlbmVyKGxp
c3RlbmVyLCB1c2VDYXB0dXJlKTsKKyAgICBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciByZWdpc3Rl
cmVkTGlzdGVuZXIoV1RGTW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOwogCiAgICAgaWYgKHZl
Y3Rvci0+ZmluZChyZWdpc3RlcmVkTGlzdGVuZXIpICE9IG5vdEZvdW5kKQogICAgICAgICByZXR1
cm4gZmFsc2U7IC8vIER1cGxpY2F0ZSBsaXN0ZW5lci4KQEAgLTEwNiwyMCArMTA2LDIwIEBAIHN0
YXRpYyBib29sIGFkZExpc3RlbmVyVG9WZWN0b3IoRXZlbnRMaXN0ZW5lclZlY3RvciogdmVjdG9y
LCBQYXNzUmVmUHRyPEV2ZW50TGlzCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRXZlbnRM
aXN0ZW5lck1hcDo6YWRkKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRy
PEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIEV2ZW50TGlz
dGVuZXJNYXA6OmFkZChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlz
dGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICBhc3NlcnROb0FjdGl2
ZUl0ZXJhdG9ycygpOwogCiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZW50cmllcykgewogICAg
ICAgICBpZiAoZW50cnkuZmlyc3QgPT0gZXZlbnRUeXBlKQotICAgICAgICAgICAgcmV0dXJuIGFk
ZExpc3RlbmVyVG9WZWN0b3IoZW50cnkuc2Vjb25kLmdldCgpLCBsaXN0ZW5lciwgdXNlQ2FwdHVy
ZSk7CisgICAgICAgICAgICByZXR1cm4gYWRkTGlzdGVuZXJUb1ZlY3RvcihlbnRyeS5zZWNvbmQu
Z2V0KCksIFdURk1vdmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKICAgICB9CiAKICAgICBtX2Vu
dHJpZXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGV2ZW50VHlwZSwgc3RkOjptYWtlX3VuaXF1ZTxF
dmVudExpc3RlbmVyVmVjdG9yPigpKSk7Ci0gICAgcmV0dXJuIGFkZExpc3RlbmVyVG9WZWN0b3Io
bV9lbnRyaWVzLmxhc3QoKS5zZWNvbmQuZ2V0KCksIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKKyAg
ICByZXR1cm4gYWRkTGlzdGVuZXJUb1ZlY3RvcihtX2VudHJpZXMubGFzdCgpLnNlY29uZC5nZXQo
KSwgV1RGTW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOwogfQogCi1zdGF0aWMgYm9vbCByZW1v
dmVMaXN0ZW5lckZyb21WZWN0b3IoRXZlbnRMaXN0ZW5lclZlY3RvciogbGlzdGVuZXJWZWN0b3Is
IEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUsIHNpemVfdCYgaW5kZXhP
ZlJlbW92ZWRMaXN0ZW5lcikKK3N0YXRpYyBib29sIHJlbW92ZUxpc3RlbmVyRnJvbVZlY3RvcihF
dmVudExpc3RlbmVyVmVjdG9yKiBsaXN0ZW5lclZlY3RvciwgRXZlbnRMaXN0ZW5lciYgbGlzdGVu
ZXIsIGJvb2wgdXNlQ2FwdHVyZSwgc2l6ZV90JiBpbmRleE9mUmVtb3ZlZExpc3RlbmVyKQogewog
ICAgIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyIHJlZ2lzdGVyZWRMaXN0ZW5lcihsaXN0ZW5lciwg
dXNlQ2FwdHVyZSk7CiAgICAgaW5kZXhPZlJlbW92ZWRMaXN0ZW5lciA9IGxpc3RlbmVyVmVjdG9y
LT5maW5kKHJlZ2lzdGVyZWRMaXN0ZW5lcik7CkBAIC0xMjksNyArMTI5LDcgQEAgc3RhdGljIGJv
b2wgcmVtb3ZlTGlzdGVuZXJGcm9tVmVjdG9yKEV2ZW50TGlzdGVuZXJWZWN0b3IqIGxpc3RlbmVy
VmVjdG9yLCBFdmVudEwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBFdmVudExpc3RlbmVy
TWFwOjpyZW1vdmUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIq
IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUsIHNpemVfdCYgaW5kZXhPZlJlbW92ZWRMaXN0ZW5l
cikKK2Jvb2wgRXZlbnRMaXN0ZW5lck1hcDo6cmVtb3ZlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlLCBzaXplX3Qm
IGluZGV4T2ZSZW1vdmVkTGlzdGVuZXIpCiB7CiAgICAgYXNzZXJ0Tm9BY3RpdmVJdGVyYXRvcnMo
KTsKIApAQCAtMTg1LDcgKzE4NSw3IEBAIHN0YXRpYyB2b2lkIGNvcHlMaXN0ZW5lcnNOb3RDcmVh
dGVkRnJvbU1hcmt1cFRvVGFyZ2V0KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUCiAgICAgICAg
IC8vIEV2ZW50IGxpc3RlbmVycyBjcmVhdGVkIGZyb20gbWFya3VwIGhhdmUgYWxyZWFkeSBiZWVu
IHRyYW5zZmVyZWQgdG8gdGhlIHNoYWRvdyB0cmVlIGR1cmluZyBjbG9uaW5nLgogICAgICAgICBp
ZiAobGlzdGVuZXIubGlzdGVuZXItPndhc0NyZWF0ZWRGcm9tTWFya3VwKCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgdGFyZ2V0LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwg
bGlzdGVuZXIubGlzdGVuZXIuY29weVJlZigpLCBsaXN0ZW5lci51c2VDYXB0dXJlKTsKKyAgICAg
ICAgdGFyZ2V0LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgKmxpc3RlbmVyLmxpc3RlbmVy
LCBsaXN0ZW5lci51c2VDYXB0dXJlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRM
aXN0ZW5lck1hcC5oCmluZGV4IDg5ZmY2NjY4ZDcyZmY5MDFkNjg3ZDNiNzdmYjM0MWIzYzZiODE3
ZjAuLjFlZmU2YWJmOGNlZWQyZDk2M2FjNzYzMTkxYzBhMmE4ZmY5YjYzMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuaApAQCAtNTQsOCArNTQsOCBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBjb250YWluc0NhcHR1cmluZyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkgY29u
c3Q7CiAKICAgICB2b2lkIGNsZWFyKCk7Ci0gICAgYm9vbCBhZGQoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4sIGJvb2wgdXNlQ2FwdHVyZSk7
Ci0gICAgYm9vbCByZW1vdmUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlz
dGVuZXIqLCBib29sIHVzZUNhcHR1cmUsIHNpemVfdCYgaW5kZXhPZlJlbW92ZWRMaXN0ZW5lcik7
CisgICAgYm9vbCBhZGQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExp
c3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpOworICAgIGJvb2wgcmVtb3ZlKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiwgYm9vbCB1c2VDYXB0dXJlLCBzaXpl
X3QmIGluZGV4T2ZSZW1vdmVkTGlzdGVuZXIpOwogICAgIEV2ZW50TGlzdGVuZXJWZWN0b3IqIGZp
bmQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpOwogICAgIFZlY3RvcjxBdG9taWNTdHJp
bmc+IGV2ZW50VHlwZXMoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKaW5k
ZXggZWMyMTA5ODY3YWMzMGQwYzMxYmU2OTI2MTYzMWMzMjUxNmZlYTNjZS4uZDI0ODM4NTkzZDE3
ZjZhYjU2ZDZkOTA5OTU4NTkyOTA1NmIwZTA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQu
Y3BwCkBAIC03NSwxMiArNzUsMjggQEAgYm9vbCBFdmVudFRhcmdldDo6aXNNZXNzYWdlUG9ydCgp
IGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEV2ZW50VGFyZ2V0OjphZGRFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBFdmVudFRhcmdldDo6YWRk
RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlz
dGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICByZXR1cm4gZW5zdXJl
RXZlbnRUYXJnZXREYXRhKCkuZXZlbnRMaXN0ZW5lck1hcC5hZGQoZXZlbnRUeXBlLCBXVEZNb3Zl
KGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiB9CiAKLWJvb2wgRXZlbnRUYXJnZXQ6OnJlbW92ZUV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIq
IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCit2b2lkIEV2ZW50VGFyZ2V0OjphZGRFdmVudExp
c3RlbmVyRm9yQmluZGluZ3MoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxF
dmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCit7CisgICAgLy8gRklY
TUU6IGxpc3RlbmVyIGlzIG5vdCBzdXBwb3NlZCB0byBiZSBudWxsYWJsZS4KKyAgICBpZiAoIWxp
c3RlbmVyKQorICAgICAgICByZXR1cm47CisgICAgYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUs
IGxpc3RlbmVyLnJlbGVhc2VOb25OdWxsKCksIHVzZUNhcHR1cmUpOworfQorCit2b2lkIEV2ZW50
VGFyZ2V0OjpyZW1vdmVFdmVudExpc3RlbmVyRm9yQmluZGluZ3MoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNh
cHR1cmUpCit7CisgICAgLy8gRklYTUU6IGxpc3RlbmVyIGlzIG5vdCBzdXBwb3NlZCB0byBiZSBu
dWxsYWJsZS4KKyAgICBpZiAoIWxpc3RlbmVyKQorICAgICAgICByZXR1cm47CisgICAgcmVtb3Zl
RXZlbnRMaXN0ZW5lcihldmVudFR5cGUsICpsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7Cit9CisKK2Jv
b2wgRXZlbnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAg
ICAgRXZlbnRUYXJnZXREYXRhKiBkID0gZXZlbnRUYXJnZXREYXRhKCk7CiAgICAgaWYgKCFkKQpA
QCAtMTEwLDEyICsxMjYsMTIgQEAgYm9vbCBFdmVudFRhcmdldDo6cmVtb3ZlRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW4KICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBFdmVudFRhcmdldDo6c2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBs
aXN0ZW5lcikKK2Jvb2wgRXZlbnRUYXJnZXQ6OnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3Rl
bmVyKQogewogICAgIGNsZWFyQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUpOwogICAg
IGlmICghbGlzdGVuZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gYWRkRXZl
bnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCBmYWxzZSk7CisgICAgcmV0dXJuIGFkZEV2
ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lci5yZWxlYXNlTm9uTnVsbCgpLCBmYWxzZSk7
CiB9CiAKIEV2ZW50TGlzdGVuZXIqIEV2ZW50VGFyZ2V0OjpnZXRBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKQpAQCAtMTMyLDcgKzE0OCw3IEBAIGJv
b2wgRXZlbnRUYXJnZXQ6OmNsZWFyQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSkKICAgICBFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IGdldEF0dHJp
YnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlKTsKICAgICBpZiAoIWxpc3RlbmVyKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBl
LCBsaXN0ZW5lciwgZmFsc2UpOworICAgIHJldHVybiByZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50
VHlwZSwgKmxpc3RlbmVyLCBmYWxzZSk7CiB9CiAKIGJvb2wgRXZlbnRUYXJnZXQ6OmRpc3BhdGNo
RXZlbnRGb3JCaW5kaW5ncyhFdmVudCogZXZlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXQuaAppbmRleCBmOWIwZjIxMTc0ZjU0MThkNTFmN2Q1NDM4MWIwMWM4Nzgy
MTJlYWFmLi4xYjFkZWQxOWE1ZDljYTU2NjRlNTBhOTk5ZDZjM2VmYjkyYTdlZTk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXQuaApAQCAtMTIxLDE1ICsxMjEsMTggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgRE9NV2luZG93KiB0b0RPTVdpbmRvdygpOwogICAgIHZpcnR1YWwgYm9vbCBpc01lc3Nh
Z2VQb3J0KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wg
dXNlQ2FwdHVyZSk7Ci0gICAgdmlydHVhbCBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUp
OworICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lckZvckJpbmRpbmdzKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKTsK
KyAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXJGb3JCaW5kaW5ncyhjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSk7
CisgICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpOworICAgIHZp
cnR1YWwgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBFdmVudExpc3RlbmVyJiwgYm9vbCB1c2VDYXB0dXJlKTsKKwogICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVBbGxFdmVudExpc3RlbmVycygpOwogICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEV2
ZW50KEV2ZW50Jik7CiAgICAgYm9vbCBkaXNwYXRjaEV2ZW50Rm9yQmluZGluZ3MoRXZlbnQqLCBF
eGNlcHRpb25Db2RlJik7IC8vIERPTSBBUEkKICAgICB2aXJ0dWFsIHZvaWQgdW5jYXVnaHRFeGNl
cHRpb25JbkV2ZW50SGFuZGxlcigpOwogCiAgICAgLy8gVXNlZCBmb3IgbGVnYWN5ICJvbkV2ZW50
IiBhdHRyaWJ1dGUgQVBJcy4KLSAgICBib29sIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4pOwor
ICAgIGJvb2wgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYpOwogICAgIGJvb2wgY2xlYXJBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKTsKICAgICBFdmVu
dExpc3RlbmVyKiBnZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5pZGwKaW5kZXggNTkzZTRjMDY4
NmEwOGI5MGMxM2ViZWJmNmNlYzI4MmY0Yjc2ZTg1ZC4uYzU5NDU4OTZlMDBhNjY3NTYzOTAzOWEw
ODYxZmY2NjU3NWVkYmUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaWRsCkBAIC0yNSw4
ICsyNSwxMCBAQAogICAgIEpTQ3VzdG9tVG9OYXRpdmVPYmplY3QsCiAgICAgT2JqQ1Byb3RvY29s
LAogXSBpbnRlcmZhY2UgRXZlbnRUYXJnZXQgewotICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFt
ZXRlcnNdIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihET01TdHJpbmcgdHlwZSwgRXZlbnRMaXN0ZW5l
cj8gbGlzdGVuZXIsIG9wdGlvbmFsIGJvb2xlYW4gdXNlQ2FwdHVyZSA9IGZhbHNlKTsKLSAgICBb
T2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzXSB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoRE9N
U3RyaW5nIHR5cGUsIEV2ZW50TGlzdGVuZXI/IGxpc3RlbmVyLCBvcHRpb25hbCBib29sZWFuIHVz
ZUNhcHR1cmUgPSBmYWxzZSk7CisgICAgLy8gRklYTUU6IFRoZSAndHlwZScgYW5kICdsaXN0ZW5l
cicgcGFyYW1ldGVycyBzaG91bGQgbm90IGJlIG9wdGlvbmFsLgorICAgIFtPYmpDTGVnYWN5VW5u
YW1lZFBhcmFtZXRlcnMsIEltcGxlbWVudGVkQXM9YWRkRXZlbnRMaXN0ZW5lckZvckJpbmRpbmdz
XSB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoW0F0b21pY1N0cmluZ10gb3B0aW9uYWwgRE9NU3RyaW5n
IHR5cGUgPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgRXZlbnRMaXN0ZW5lcj8gbGlzdGVuZXIsIG9w
dGlvbmFsIGJvb2xlYW4gdXNlQ2FwdHVyZSA9IGZhbHNlKTsKKyAgICBbT2JqQ0xlZ2FjeVVubmFt
ZWRQYXJhbWV0ZXJzLCBJbXBsZW1lbnRlZEFzPXJlbW92ZUV2ZW50TGlzdGVuZXJGb3JCaW5kaW5n
c10gdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKFtBdG9taWNTdHJpbmddIG9wdGlvbmFsIERPTVN0
cmluZyB0eXBlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIEV2ZW50TGlzdGVuZXI/IGxpc3RlbmVy
LCBvcHRpb25hbCBib29sZWFuIHVzZUNhcHR1cmUgPSBmYWxzZSk7CisKICAgICAvLyBGSVhNRTog
ZXZlbnQgc2hvdWxkIG5vdCBiZSBudWxsYWJsZS4KICAgICBbSW1wbGVtZW50ZWRBcz1kaXNwYXRj
aEV2ZW50Rm9yQmluZGluZ3MsIFJhaXNlc0V4Y2VwdGlvbl0gYm9vbGVhbiBkaXNwYXRjaEV2ZW50
KEV2ZW50PyBldmVudCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VQb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKaW5kZXggNWE4
NGE0NGEyMDhhYmViZTQxM2I5OWYxMWU2ZjUwMTE5ZGE0MDJiOC4uM2Q3ODQ3Y2FlZGIyOTIwZTNi
MjY0YjY1MmJjNTRjYmMzNDc4YTNhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VQb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCkBA
IC0yMjEsOSArMjIxLDkgQEAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0QXJyYXk+IE1lc3Nh
Z2VQb3J0OjplbnRhbmdsZVBvcnRzKFNjcmlwdEV4ZWN1dGlvbkNvbnQKICAgICByZXR1cm4gcG9y
dEFycmF5OwogfQogCi1ib29sIE1lc3NhZ2VQb3J0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwg
Ym9vbCB1c2VDYXB0dXJlKQorYm9vbCBNZXNzYWdlUG9ydDo6YWRkRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIs
IGJvb2wgdXNlQ2FwdHVyZSkKIHsKLSAgICBpZiAobGlzdGVuZXIgJiYgbGlzdGVuZXItPmlzQXR0
cmlidXRlKCkgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQpCisgICAg
aWYgKGxpc3RlbmVyLT5pc0F0dHJpYnV0ZSgpICYmIGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCku
bWVzc2FnZUV2ZW50KQogICAgICAgICBzdGFydCgpOwogICAgIHJldHVybiBFdmVudFRhcmdldFdp
dGhJbmxpbmVEYXRhOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5l
ciksIHVzZUNhcHR1cmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VQb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaAppbmRleCBiYWUwMWQ1
Yjk1MWRkNzgyMzdhZmRmODcyMzE0ZjgyNGQxNTdiMTZlLi45Y2ExMjRmNGEyZWZjOTgxZGY1NTYz
YmJiYjc1MDQ2Zjc5Y2ZjZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2Fn
ZVBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaApAQCAtOTIsNyAr
OTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIEEgcG9ydCBnZXRzIG5ldXRl
cmVkIHdoZW4gaXQgaXMgdHJhbnNmZXJyZWQgdG8gYSBuZXcgb3duZXIgdmlhIHBvc3RNZXNzYWdl
KCkuCiAgICAgICAgIGJvb2wgaXNOZXV0ZXJlZCgpIHsgcmV0dXJuICFtX2VudGFuZ2xlZENoYW5u
ZWw7IH0KIAotICAgICAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92
ZXJyaWRlOworICAgICAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJy
aWRlOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZXhwbGljaXQgTWVzc2FnZVBvcnQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDRjNDc1MTA0YjcyMjYwMmEz
OTM4OGJlMTIzOWE4ZTQ2MzdmNWJiNWQuLmQwYzVkNGM0MmVhYzNlMzZiZmJmODA1OTM3OTE2Y2U4
NzJhM2Y3N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTE5NjAsNyArMTk2MCw3IEBAIHZvaWQgTm9k
ZTo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KQogICAgIH0KIH0K
IAotc3RhdGljIGlubGluZSBib29sIHRyeUFkZEV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0Tm9k
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYm
IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitzdGF0aWMgaW5saW5lIGJvb2wgdHJ5QWRkRXZl
bnRMaXN0ZW5lcihOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAg
ICBpZiAoIXRhcmdldE5vZGUtPkV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlw
ZSwgbGlzdGVuZXIuY29weVJlZigpLCB1c2VDYXB0dXJlKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMTk5NiwxMiArMTk5NiwxMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdHJ5QWRkRXZlbnRM
aXN0ZW5lcihOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIE5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29s
IHVzZUNhcHR1cmUpCitib29sIE5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNh
cHR1cmUpCiB7CiAgICAgcmV0dXJuIHRyeUFkZEV2ZW50TGlzdGVuZXIodGhpcywgZXZlbnRUeXBl
LCBXVEZNb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9v
bCB0cnlSZW1vdmVFdmVudExpc3RlbmVyKE5vZGUqIHRhcmdldE5vZGUsIGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJl
KQorc3RhdGljIGlubGluZSBib29sIHRyeVJlbW92ZUV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0
Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3Rl
bmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgaWYgKCF0YXJnZXROb2RlLT5FdmVudFRhcmdl
dDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjAzNyw3ICsyMDM3LDcgQEAgc3RhdGljIGlubGlu
ZSBib29sIHRyeVJlbW92ZUV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgQXRv
bWljU3RyaW5nJgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE5vZGU6OnJlbW92ZUV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqIGxp
c3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIE5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBi
b29sIHVzZUNhcHR1cmUpCiB7CiAgICAgcmV0dXJuIHRyeVJlbW92ZUV2ZW50TGlzdGVuZXIodGhp
cywgZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA1
NTdkZGNjMTE3MzE5NGE4ZjBkZDE5NGNiMzZiMTc2NzBlMDRlMzQ5Li4yMDhlMjg4ZjE3OTc3MmRj
OWY5MjAwNzVjNDI2N2EyYjRlZGU0NTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTUwNiw4ICs1MDYsOCBA
QCBwdWJsaWM6CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2Uo
KSBjb25zdCBvdmVycmlkZTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3QgZmluYWw7IC8vIEltcGxlbWVudGVkIGluIERvY3VtZW50LmgK
IAotICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7Ci0g
ICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKKyAgICBib29sIGFk
ZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExp
c3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgIGJvb2wgcmVtb3ZlRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYs
IGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAKICAgICB1c2luZyBFdmVudFRhcmdldDo6ZGlz
cGF0Y2hFdmVudDsKICAgICBib29sIGRpc3BhdGNoRXZlbnQoRXZlbnQmKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmgKaW5kZXggMTI0ODNm
YTYxMTg5ZTJlZTNmNDQ4MjY0YTY1ZjU5M2UyNGMwODlkYi4uMWNjNjljYTJlMjgxZTVlNjU4YjM4
YmE4NjVhYjczMGIxZTdiNTcxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1JlZ2lz
dGVyZWRFdmVudExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JlZ2lzdGVyZWRF
dmVudExpc3RlbmVyLmgKQEAgLTMxLDggKzMxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgY2xhc3MgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAg
UmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5l
ciwgYm9vbCB1c2VDYXB0dXJlKQotICAgICAgICAgICAgOiBsaXN0ZW5lcihsaXN0ZW5lcikKKyAg
ICAgICAgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIoUmVmPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVy
LCBib29sIHVzZUNhcHR1cmUpCisgICAgICAgICAgICA6IGxpc3RlbmVyKFdURk1vdmUobGlzdGVu
ZXIpKQogICAgICAgICAgICAgLCB1c2VDYXB0dXJlKHVzZUNhcHR1cmUpCiAgICAgICAgIHsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggODdl
ODAzYjNmYzY3MzdmYjRkZjhhY2MwYTViZTYyMTgxYzdmYjVhNS4uMzhiZTQ0YjI3OGFkOTRlOGQ0
YzRlMTlhZjQzOGJhZmYxZDI0MDYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCkBAIC01MjE2LDcgKzUyMTYsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmRp
c3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogICAgIHJldHVybiBIVE1MRWxlbWVudDo6ZGlzcGF0
Y2hFdmVudChldmVudCk7CiB9CiAKLWJvb2wgSFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+
JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6YWRk
RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlz
dGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICBpZiAoZXZlbnRUeXBl
ICE9IGV2ZW50TmFtZXMoKS53ZWJraXRwbGF5YmFja3RhcmdldGF2YWlsYWJpbGl0eWNoYW5nZWRF
dmVudCkKICAgICAgICAgcmV0dXJuIE5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBX
VEZNb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CkBAIC01MjM2LDcgKzUyMzYsNyBAQCBib29s
IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIFJlZlB0cjxFdgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEhUTUxNZWRp
YUVsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIEhUTUxN
ZWRpYUVsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAg
aWYgKGV2ZW50VHlwZSAhPSBldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFi
aWxpdHljaGFuZ2VkRXZlbnQpCiAgICAgICAgIHJldHVybiBOb2RlOjpyZW1vdmVFdmVudExpc3Rl
bmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaAppbmRleCBiMzg5Mzk4YjMzYWQ2N2EyODJjYTEyM2M5NTI4OWY1MmE0
YTUwZjM2Li42Njc5OGFjY2M3MTc2ZjY4NDBlMTA2YTg1YWJkNGU0MTlkYjllZGMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMzQ0LDggKzM0NCw4IEBAIHB1Ymxp
YzoKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgdm9pZCB3ZWJr
aXRTaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoKTsKLSAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBi
b29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2Fw
dHVyZSkgb3ZlcnJpZGU7CisgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKSBv
dmVycmlkZTsKKyAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCB3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZSgpIG92ZXJyaWRlOwog
ICAgIGJvb2wgY2FuUGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0IG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggMmYzNWIyOWIzOWI2NzI4
ZGUwYmE4NTc1ZWQ3NTY4ODgzZTU3N2NlNi4uN2ZkMmM3YzllNTc2YTk1YWIxNGY5Y2Q3YmU5YmM3
YTA4MGUzZmFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC02NCw3
ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBFdmVudExpc3RlbmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEV2ZW50TGlzdGVuZXImKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGhhbmRsZUV2ZW50KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCopIG92ZXJyaWRlOwogCiAgICAgSW1hZ2VEb2N1
bWVudCYgbV9kb2N1bWVudDsKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6
OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCkKICAgICAgICAgLy8gU2V0IHRoZSB2aWV3cG9ydCB0
byBiZSBpbiBkZXZpY2UgcGl4ZWxzIChyYXRoZXIgdGhhbiB0aGUgZGVmYXVsdCBvZiA5ODApLgog
ICAgICAgICBwcm9jZXNzVmlld3BvcnQoQVNDSUlMaXRlcmFsKCJ3aWR0aD1kZXZpY2Utd2lkdGgi
KSwgVmlld3BvcnRBcmd1bWVudHM6OkltYWdlRG9jdW1lbnQpOwogI2Vsc2UKLSAgICAgICAgUmVm
UHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gSW1hZ2VFdmVudExpc3RlbmVyOjpjcmVhdGUo
KnRoaXMpOworICAgICAgICBhdXRvIGxpc3RlbmVyID0gSW1hZ2VFdmVudExpc3RlbmVyOjpjcmVh
dGUoKnRoaXMpOwogICAgICAgICBpZiAoRE9NV2luZG93KiB3aW5kb3cgPSB0aGlzLT5kb21XaW5k
b3coKSkKICAgICAgICAgICAgIHdpbmRvdy0+YWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgbGlz
dGVuZXIuY29weVJlZigpLCBmYWxzZSk7CiAgICAgICAgIGltYWdlRWxlbWVudC0+YWRkRXZlbnRM
aXN0ZW5lcigiY2xpY2siLCBXVEZNb3ZlKGxpc3RlbmVyKSwgZmFsc2UpOwpAQCAtNDA3LDcgKzQw
Nyw3IEBAIHZvaWQgSW1hZ2VFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgRXZlbnQqIGV2ZW50KQogICAgIH0KIH0KIAotYm9vbCBJbWFnZUV2ZW50TGlz
dGVuZXI6Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3RoZXIpCitib29sIEltYWdl
RXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgY29u
c3QKIHsKICAgICAvLyBBbGwgSW1hZ2VFdmVudExpc3RlbmVyIG9iamVjdHMgY29tcGFyZSBhcyBl
cXVhbDsgT0sgc2luY2UgdGhlcmUgaXMgb25seSBvbmUgcGVyIGRvY3VtZW50LgogICAgIHJldHVy
biBvdGhlci50eXBlKCkgPT0gSW1hZ2VFdmVudExpc3RlbmVyVHlwZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwCmluZGV4IGNmN2FjNGJj
ZmY3MzI0ZTllMDAyYTljNzA0ZjMwMjJmOTMxOGY2MDIuLmQ5N2RhNzhlNTYxMTM3MWFjYjRkMjlk
YjAwZTBlZTBiY2M3NDdmZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbHNBcHBsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sc0FwcGxlLmNwcApAQCAtNTA5LDE1ICs1MDksMTUgQEAgdm9pZCBNZWRpYUNv
bnRyb2xzQXBwbGU6OnNob3dDbG9zZWRDYXB0aW9uVHJhY2tMaXN0KCkKICAgICBtX3BhbmVsLT5z
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5UG9pbnRlckV2ZW50cywgQ1NTVmFsdWVO
b25lKTsKIAogICAgIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyID0gZXZlbnRMaXN0ZW5lcigpOwot
ICAgIG1fY2xvc2VkQ2FwdGlvbnNDb250YWluZXItPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1l
cygpLndoZWVsRXZlbnQsICZsaXN0ZW5lciwgdHJ1ZSk7CisgICAgbV9jbG9zZWRDYXB0aW9uc0Nv
bnRhaW5lci0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkud2hlZWxFdmVudCwgbGlzdGVu
ZXIsIHRydWUpOwogCiAgICAgLy8gVHJhY2sgY2xpY2sgZXZlbnRzIGluIHRoZSBjYXB0dXJlIHBo
YXNlIGF0IHR3byBsZXZlbHMsIGZpcnN0IGF0IHRoZSBkb2N1bWVudCBsZXZlbAogICAgIC8vIHN1
Y2ggdGhhdCBhIGNsaWNrIG91dHNpZGUgb2YgdGhlIDx2aWRlbz4gbWF5IGRpc21pc3MgdGhlIHRy
YWNrIGxpc3QsIHNlY29uZCBhdCB0aGUKICAgICAvLyBtZWRpYSBjb250cm9scyBsZXZlbCBzdWNo
IHRoYXQgYSBjbGljayBhbnl3aGVyZSBvdXRzaWRlIG9mIHRoZSB0cmFjayBsaXN0IGhpZGVzIHRo
ZQogICAgIC8vIHRyYWNrIGxpc3QuIFRoZXNlIHR3byBsZXZlbHMgYXJlIG5lY2Vzc2FyeSBzaW5j
ZSBpdCB3b3VsZCBub3QgYmUgcG9zc2libGUgdG8gZ2V0IGEKICAgICAvLyByZWZlcmVuY2UgdG8g
dGhlIHRyYWNrIGxpc3Qgd2hlbiBoYW5kbGluZyB0aGUgZXZlbnQgb3V0c2lkZSBvZiB0aGUgc2hh
ZG93IHRyZWUuCi0gICAgZG9jdW1lbnQoKS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5j
bGlja0V2ZW50LCAmbGlzdGVuZXIsIHRydWUpOwotICAgIGFkZEV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLmNsaWNrRXZlbnQsICZsaXN0ZW5lciwgdHJ1ZSk7CisgICAgZG9jdW1lbnQoKS5hZGRF
dmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBsaXN0ZW5lciwgdHJ1ZSk7Cisg
ICAgYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgbGlzdGVuZXIsIHRy
dWUpOwogfQogCiB2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6aGlkZUNsb3NlZENhcHRpb25UcmFj
a0xpc3QoKQpAQCAtNTMxLDkgKzUzMSw5IEBAIHZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjpoaWRl
Q2xvc2VkQ2FwdGlvblRyYWNrTGlzdCgpCiAgICAgbV9wYW5lbC0+cmVtb3ZlSW5saW5lU3R5bGVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHMpOwogCiAgICAgRXZlbnRMaXN0ZW5lciYg
bGlzdGVuZXIgPSBldmVudExpc3RlbmVyKCk7Ci0gICAgbV9jbG9zZWRDYXB0aW9uc0NvbnRhaW5l
ci0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkud2hlZWxFdmVudCwgJmxpc3RlbmVy
LCB0cnVlKTsKLSAgICBkb2N1bWVudCgpLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygp
LmNsaWNrRXZlbnQsICZsaXN0ZW5lciwgdHJ1ZSk7Ci0gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkuY2xpY2tFdmVudCwgJmxpc3RlbmVyLCB0cnVlKTsKKyAgICBtX2Nsb3NlZENh
cHRpb25zQ29udGFpbmVyLT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS53aGVlbEV2
ZW50LCBsaXN0ZW5lciwgdHJ1ZSk7CisgICAgZG9jdW1lbnQoKS5yZW1vdmVFdmVudExpc3RlbmVy
KGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBsaXN0ZW5lciwgdHJ1ZSk7CisgICAgcmVtb3ZlRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgbGlzdGVuZXIsIHRydWUpOwogfQog
CiB2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6c2V0RnVsbHNjcmVlblNsaWRlclZvbHVtZSgpCkBA
IC01OTUsNyArNTk1LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQXBwbGVFdmVudExpc3RlbmVyOjpo
YW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQKICAgICB9CiB9CiAKLWJv
b2wgTWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBFdmVu
dExpc3RlbmVyJiBsaXN0ZW5lcikKK2Jvb2wgTWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0ZW5l
cjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikgY29uc3QKIHsKICAg
ICBpZiAoY29uc3QgTWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0ZW5lciogbWVkaWFDb250cm9s
c0FwcGxlRXZlbnRMaXN0ZW5lciA9IE1lZGlhQ29udHJvbHNBcHBsZUV2ZW50TGlzdGVuZXI6OmNh
c3QoJmxpc3RlbmVyKSkKICAgICAgICAgcmV0dXJuIG1fbWVkaWFDb250cm9scyA9PSBtZWRpYUNv
bnRyb2xzQXBwbGVFdmVudExpc3RlbmVyLT5tX21lZGlhQ29udHJvbHM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5oCmluZGV4IDY5OGNjMzg5ZDlm
MmQ3MjAyYmYyNDFkY2MxYmFmNzNmMDNiZjA0MjkuLmYyOGRkNmI3ZjUxNDEwYjFjZGVlZDQyYzgz
M2UwY2ZmOTNkMWNjMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHNBcHBsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbHNBcHBsZS5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIDog
MDsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3Ro
ZXIpIG92ZXJyaWRlOworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBv
dGhlcikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgTWVkaWFDb250cm9sc0FwcGxl
RXZlbnRMaXN0ZW5lcihNZWRpYUNvbnRyb2xzQXBwbGUqIG1lZGlhQ29udHJvbHMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApp
bmRleCA0NDE1NDMyMTQ0OGQxMTU0NWYyMTE0MjJjMWRmZDgwMzlmOGU2NDcwLi5hYzBlZGQ0ODZh
ZGY0YzJkZTA3YzgyYWFhYWM2YjMxMzEwMDJjYmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTExMiw3ICsxMTIs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5PcGVuRGF0YWJhc2VDYWxsYmFjaygpIHsgfQog
Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKSBvdmVycmlk
ZQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgY29uc3Qg
b3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzID09ICZvdGhlcjsKICAgICB9CkBA
IC0zNzEsNyArMzcxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+T3BlbkN1cnNvckNhbGxi
YWNrKCkgeyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3Ro
ZXIpIG92ZXJyaWRlCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90
aGVyKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMgPT0gJm90aGVy
OwogICAgIH0KQEAgLTY2MCw3ICs2NjAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5DbGVh
ck9iamVjdFN0b3JlTGlzdGVuZXIoKSB7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBF
dmVudExpc3RlbmVyJiBvdGhlcikgb3ZlcnJpZGUKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
RXZlbnRMaXN0ZW5lciYgb3RoZXIpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcyA9PSAmb3RoZXI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4
IGU3ODFiN2NjNGI5MWJhYmRmMzFmZDc4NjJiOTg4NTE3M2JhZmJlODAuLmI3NTQxZWQzODQxYzg1
OGJmNDA3M2JiNDliZjNiOWMzZGJlYjkxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
QEAgLTE3MjQsNyArMTcyNCw3IEBAIGJvb2wgRE9NV2luZG93Ojppc1NhbWVTZWN1cml0eU9yaWdp
bkFzTWFpbkZyYW1lKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgRE9NV2lu
ZG93OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBET01X
aW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJl
ZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgaWYg
KCFFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdURk1vdmUobGlzdGVu
ZXIpLCB1c2VDYXB0dXJlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTgyNyw3ICsxODI3
LDcgQEAgdm9pZCBET01XaW5kb3c6OnJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9uKCkKICNl
bmRpZgogfQogCi1ib29sIERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIsIGJvb2wgdXNlQ2Fw
dHVyZSkKK2Jvb2wgRE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJl
KQogewogICAgIGlmICghRXZlbnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBl
LCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5oCmluZGV4IDRiMjRiOTk4MTM3NzMyNzYzOGI2NGU2ODdkNzVmZTJmZDhkODcy
ZWUuLjAxNThlMTQwNjYyNzQ4ZmM4OTRmOTI1ODE0ZDQ2MjQ4MWJmYWY0MWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuaApAQCAtMjc5LDggKzI3OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICAvLyBFdmVudHMKICAgICAgICAgLy8gRXZlbnRUYXJnZXQgQVBJCi0gICAgICAgIGJv
b2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRy
PEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7Ci0gICAgICAgIGJv
b2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZl
bnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CisgICAgICAgIGJvb2wgYWRk
RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlz
dGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CisgICAgICAgIGJvb2wgcmVtb3Zl
RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5l
ciYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgcmVtb3ZlQWxsRXZl
bnRMaXN0ZW5lcnMoKSBvdmVycmlkZTsKIAogICAgICAgICB1c2luZyBFdmVudFRhcmdldDo6ZGlz
cGF0Y2hFdmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oCmluZGV4IDli
NTczOWNiYTgxNjlhMDRmZmExMmUxNDkzMjhiN2MzNDUzMDAyZTkuLjBiZjQxNDY0ODExYTA0OWE1
NGVmOWYyNDVlY2JjZmMzMzA0ZTYwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVs
ZW1lbnQuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGhhbmRsZUV2ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJDb3Jl
OjpFdmVudCopIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlRm9yRXZlbnROYW1lKGNvbnN0IFdURjo6
QXRvbWljU3RyaW5nJik7Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXIm
IHJocykgZmluYWwgeyByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RXZlbnRMaXN0ZW5lcio+
KHRoaXMpID09ICZyaHM7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5l
ciYgcmhzKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBXZWJDb3JlOjpF
dmVudExpc3RlbmVyKj4odGhpcykgPT0gJnJoczsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBwbGF5KCkgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYXVzZSgpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxNZWRpYUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9X
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQppbmRleCBhNGM2ZmEzY2RlMDZm
ZWNmMTk0YzVhMjI5MmZiZWQ1YzQ0N2MyZDkzLi5mNWJjYjEyYjM5OWYwZWM5NmYxYTA3ZGZmOGNi
ZjMyZjQwNGRmYTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9X
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQpA
QCAtODksNyArODksNyBAQCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50
OjpzZXRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaQogCiAgICAgaWYgKG1fbWVk
aWFFbGVtZW50ICYmIG1faXNMaXN0ZW5pbmcpIHsKICAgICAgICAgZm9yIChhdXRvJiBldmVudE5h
bWUgOiBvYnNlcnZlZEV2ZW50TmFtZXMoKSkKLSAgICAgICAgICAgIG1fbWVkaWFFbGVtZW50LT5y
ZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdGhpcywgZmFsc2UpOworICAgICAgICAgICAg
bV9tZWRpYUVsZW1lbnQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCAqdGhpcywgZmFs
c2UpOwogICAgIH0KICAgICBtX2lzTGlzdGVuaW5nID0gZmFsc2U7CiAKQEAgLTk5LDcgKzk5LDcg
QEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6c2V0TWVkaWFFbGVt
ZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChh
dXRvJiBldmVudE5hbWUgOiBvYnNlcnZlZEV2ZW50TmFtZXMoKSkKLSAgICAgICAgbV9tZWRpYUVs
ZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLCBmYWxzZSk7CisgICAgICAg
IG1fbWVkaWFFbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgKnRoaXMsIGZhbHNl
KTsKICAgICBtX2lzTGlzdGVuaW5nID0gdHJ1ZTsKIAogICAgIHVwZGF0ZUZvckV2ZW50TmFtZShl
dmVudE5hbWVBbGwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaAppbmRl
eCA3MTlhMjU3MGMwZmRiODI3ZDBlNmQzZmZhMWU2YmUzMzRkODIzZmRhLi5lZDg4OTFhYTJkNzhi
Y2Q5Mzg3YjU3ODBjMGExMGJlYjVmZTJmMDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50LmgKQEAgLTU5LDggKzU5LDcgQEAgcHVibGljOgogICAgIAogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgaGFuZGxlRXZlbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFdlYkNvcmU6OkV2ZW50Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVGb3JFdmVudE5hbWUo
Y29uc3QgV1RGOjpBdG9taWNTdHJpbmcmKTsKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZl
bnRMaXN0ZW5lciYgcmhzKSBvdmVycmlkZQotICAgICAgICB7cmV0dXJuIHN0YXRpY19jYXN0PFdl
YkNvcmU6OkV2ZW50TGlzdGVuZXIqPih0aGlzKSA9PSAmcmhzO30KKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgcmhzKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBXZWJDb3JlOjpFdmVudExpc3RlbmVyKj4odGhpcykgPT0gJnJoczsgfQog
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlh
RWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBvdmVycmlkZTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWxWaWRlb0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQppbmRleCBkOWNiNWZmOWViZWU1NjE0
NTMxYTliMjFjODJmZDc0MzNkY2YwMzQzLi5hOTkwOGY3ZjM2MjgzY2U4ZTgwYzlkY2E3ODc2NDVh
NmFmODg5YzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQpAQCAt
ODIsNyArODIsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Ojpz
ZXRWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVudCogdmlkZQogCiAgICAgaWYgKG1fdmlkZW9F
bGVtZW50ICYmIG1faXNMaXN0ZW5pbmcpIHsKICAgICAgICAgZm9yIChhdXRvJiBldmVudE5hbWUg
OiBvYnNlcnZlZEV2ZW50TmFtZXMoKSkKLSAgICAgICAgICAgIG1fdmlkZW9FbGVtZW50LT5yZW1v
dmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdGhpcywgZmFsc2UpOworICAgICAgICAgICAgbV92
aWRlb0VsZW1lbnQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCAqdGhpcywgZmFsc2Up
OwogICAgIH0KICAgICBtX2lzTGlzdGVuaW5nID0gZmFsc2U7CiAKQEAgLTkyLDcgKzkyLDcgQEAg
dm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0VmlkZW9FbGVtZW50
KEhUTUxWaWRlb0VsZW1lbnQqIHZpZGUKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChhdXRv
JiBldmVudE5hbWUgOiBvYnNlcnZlZEV2ZW50TmFtZXMoKSkKLSAgICAgICAgbV92aWRlb0VsZW1l
bnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLCBmYWxzZSk7CisgICAgICAgIG1f
dmlkZW9FbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgKnRoaXMsIGZhbHNlKTsK
ICAgICBtX2lzTGlzdGVuaW5nID0gdHJ1ZTsKIAogICAgIHVwZGF0ZUZvckV2ZW50TmFtZShldmVu
dE5hbWVBbGwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggZmM4MzFlNjc2NThi
YTA5Yjg5YTgzYjFlNzU4OWEwMDFjYmI1OTU1MS4uYWIyNDVkNTdmNTg5YmRiZDA1NDE0YTc4ODQy
OTdiODIyZDBjZDY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtNTI4LDcgKzUy
OCw3IEBAIGJvb2wgU1ZHRWxlbWVudDo6aGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCkKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBTVkdFbGVtZW50OjphZGRFdmVudExpc3RlbmVyKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0
ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBTVkdFbGVtZW50OjphZGRFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0
ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogeyAgIAogICAgIC8vIEFkZCBldmVudCBsaXN0ZW5lciB0
byByZWd1bGFyIERPTSBlbGVtZW50CiAgICAgaWYgKCFOb2RlOjphZGRFdmVudExpc3RlbmVyKGV2
ZW50VHlwZSwgbGlzdGVuZXIuY29weVJlZigpLCB1c2VDYXB0dXJlKSkKQEAgLTU0OCw3ICs1NDgs
NyBAQCBib29sIFNWR0VsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpcwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFNWR0VsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIFNW
R0VsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgaWYg
KGNvbnRhaW5pbmdTaGFkb3dSb290KCkpCiAgICAgICAgIHJldHVybiBOb2RlOjpyZW1vdmVFdmVu
dExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOwpAQCAtNTU4LDcgKzU1
OCw3IEBAIGJvb2wgU1ZHRWxlbWVudDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lCiAgICAgLy8gZXZlbnQgbGlzdGVuZXIgaW4g
YSBjYWNoZS4gSWYgd2Ugd2FudCB0byBiZSBhYmxlIHRvIGNhbGwgcmVtb3ZlRXZlbnRMaXN0ZW5l
cigpIG11bHRpcGxlCiAgICAgLy8gdGltZXMgb24gZGlmZmVyZW50IG5vZGVzLCB3ZSBoYXZlIHRv
IGRlbGF5IGl0cyBpbW1lZGlhdGUgZGVzdHJ1Y3Rpb24sIHdoaWNoIHdvdWxkIGhhcHBlbgogICAg
IC8vIGFmdGVyIHRoZSBmaXJzdCBjYWxsIGJlbG93LgotICAgIFJlZlB0cjxFdmVudExpc3RlbmVy
PiBwcm90ZWN0b3IobGlzdGVuZXIpOworICAgIFJlZjxFdmVudExpc3RlbmVyPiBwcm90ZWN0b3Io
bGlzdGVuZXIpOwogCiAgICAgLy8gUmVtb3ZlIGV2ZW50IGxpc3RlbmVyIGZyb20gcmVndWxhciBE
T00gZWxlbWVudAogICAgIGlmICghTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUs
IGxpc3RlbmVyLCB1c2VDYXB0dXJlKSkKQEAgLTU3Myw3ICs1NzMsNyBAQCBib29sIFNWR0VsZW1l
bnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2
ZW50TGlzdGVuZQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgLy8gVGhpcyBjYXNl
IGNhbiBvbmx5IGJlIGhpdCBmb3IgZXZlbnQgbGlzdGVuZXJzIGNyZWF0ZWQgZnJvbSBtYXJrdXAK
LSAgICAgICAgQVNTRVJUKGxpc3RlbmVyLT53YXNDcmVhdGVkRnJvbU1hcmt1cCgpKTsKKyAgICAg
ICAgQVNTRVJUKGxpc3RlbmVyLndhc0NyZWF0ZWRGcm9tTWFya3VwKCkpOwogCiAgICAgICAgIC8v
IElmIHRoZSBldmVudCBsaXN0ZW5lciAnbGlzdGVuZXInIGhhcyBiZWVuIGNyZWF0ZWQgZnJvbSBt
YXJrdXAgYW5kIGhhcyBiZWVuIGZpcmVkIGJlZm9yZQogICAgICAgICAvLyB0aGVuIEpTTGF6eUV2
ZW50TGlzdGVuZXI6OnBhcnNlQ29kZSgpIGhhcyBiZWVuIGNhbGxlZCBhbmQgbV9qc0Z1bmN0aW9u
IG9mIHRoYXQgbGlzdGVuZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCmluZGV4IDM4MTY4MTAyYWY1
ZWU3NWFmNzg3Y2IwZmUxNWE4ZTdhMmJhNzFjZmIuLjk2ZDZjOTA0NjMxYWIwOTQ4OGZiNWI2YWFi
YWVlMjBmYzYyYzM3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApAQCAtMTMzLDggKzEzMyw4
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJj
ZXMoKTsKIAotICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJp
ZGU7Ci0gICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKKyAgICBi
b29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZjxF
dmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgIGJvb2wgcmVt
b3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0
ZW5lciYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCBoYXNGb2N1c0V2ZW50
TGlzdGVuZXJzKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RSZWZFbGVtZW50LmNwcAppbmRleCBjN2Q4NDZlYTIzMWFlMTUwZGE4MTJkZmE3ODU5
NzM4MTFlZWMzNmFhLi42ZGRiYjc2MjdkYTRmNzljNDFlZmNlNDY2YWE2NTY4ZWQ3ZDNmY2NiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKQEAgLTczLDcgKzczLDcgQEAgcHJp
dmF0ZToKICAgICBleHBsaWNpdCBTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcihTVkdUUmVmRWxl
bWVudCYgdHJlZkVsZW1lbnQpOwogCiAgICAgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgRXZlbnQqKSBvdmVycmlkZTsKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
RXZlbnRMaXN0ZW5lciYpIG92ZXJyaWRlOworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVu
dExpc3RlbmVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBTVkdUUmVmRWxlbWVudCYgbV90cmVm
RWxlbWVudDsKICAgICBSZWZQdHI8RWxlbWVudD4gbV90YXJnZXQ7CkBAIC05Miw4ICs5Miw4IEBA
IHZvaWQgU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI6OmF0dGFjaChSZWZQdHI8RWxlbWVudD4m
JiB0YXJnZXQpCiAgICAgQVNTRVJUKHRhcmdldC5nZXQoKSk7CiAgICAgQVNTRVJUKHRhcmdldC0+
aW5Eb2N1bWVudCgpKTsKIAotICAgIHRhcmdldC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVz
KCkuRE9NU3VidHJlZU1vZGlmaWVkRXZlbnQsIHRoaXMsIGZhbHNlKTsKLSAgICB0YXJnZXQtPmFk
ZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLkRPTU5vZGVSZW1vdmVkRnJvbURvY3VtZW50RXZl
bnQsIHRoaXMsIGZhbHNlKTsKKyAgICB0YXJnZXQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1l
cygpLkRPTVN1YnRyZWVNb2RpZmllZEV2ZW50LCAqdGhpcywgZmFsc2UpOworICAgIHRhcmdldC0+
YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuRE9NTm9kZVJlbW92ZWRGcm9tRG9jdW1lbnRF
dmVudCwgKnRoaXMsIGZhbHNlKTsKICAgICBtX3RhcmdldCA9IFdURk1vdmUodGFyZ2V0KTsKIH0K
IApAQCAtMTAyLDEyICsxMDIsMTIgQEAgdm9pZCBTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcjo6
ZGV0YWNoKCkKICAgICBpZiAoIWlzQXR0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV90YXJnZXQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLkRPTVN1YnRyZWVNb2Rp
ZmllZEV2ZW50LCB0aGlzLCBmYWxzZSk7Ci0gICAgbV90YXJnZXQtPnJlbW92ZUV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLkRPTU5vZGVSZW1vdmVkRnJvbURvY3VtZW50RXZlbnQsIHRoaXMsIGZh
bHNlKTsKKyAgICBtX3RhcmdldC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuRE9N
U3VidHJlZU1vZGlmaWVkRXZlbnQsICp0aGlzLCBmYWxzZSk7CisgICAgbV90YXJnZXQtPnJlbW92
ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLkRPTU5vZGVSZW1vdmVkRnJvbURvY3VtZW50RXZl
bnQsICp0aGlzLCBmYWxzZSk7CiAgICAgbV90YXJnZXQgPSBudWxscHRyOwogfQogCi1ib29sIFNW
R1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXIm
IGxpc3RlbmVyKQorYm9vbCBTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShj
b25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikgY29uc3QKIHsKICAgICBpZiAoY29uc3QgU1ZH
VFJlZlRhcmdldEV2ZW50TGlzdGVuZXIqIHRhcmdldExpc3RlbmVyID0gU1ZHVFJlZlRhcmdldEV2
ZW50TGlzdGVuZXI6OmNhc3QoJmxpc3RlbmVyKSkKICAgICAgICAgcmV0dXJuICZtX3RyZWZFbGVt
ZW50ID09ICZ0YXJnZXRMaXN0ZW5lci0+bV90cmVmRWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKaW5kZXggN2IyOTg3MGYzZTJkNGNm
YzUwYjBkMTI0Y2IxMjM5ZjRjM2U3NTRlNi4uMGQyNGE2MTc0ZmJmMWE5NGJmMmFkN2Q5OTBkZTMw
NDI1ODg4MjBjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdT
TUlMRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlM
RWxlbWVudC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgOiBudWxs
cHRyOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBv
dGhlcikgb3ZlcnJpZGU7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXIm
IG90aGVyKSBjb25zdCBvdmVycmlkZTsKICAgICAKICAgICB2b2lkIGRpc2Nvbm5lY3RBbmltYXRp
b24oKQogICAgIHsKQEAgLTk3LDcgKzk3LDcgQEAgcHJpdmF0ZToKICAgICBTVkdTTUlMRWxlbWVu
dDo6Q29uZGl0aW9uKiBtX2NvbmRpdGlvbjsKIH07CiAKLWJvb2wgQ29uZGl0aW9uRXZlbnRMaXN0
ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikKK2Jvb2wgQ29u
ZGl0aW9uRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0
ZW5lcikgY29uc3QKIHsKICAgICBpZiAoY29uc3QgQ29uZGl0aW9uRXZlbnRMaXN0ZW5lciogY29u
ZGl0aW9uRXZlbnRMaXN0ZW5lciA9IENvbmRpdGlvbkV2ZW50TGlzdGVuZXI6OmNhc3QoJmxpc3Rl
bmVyKSkKICAgICAgICAgcmV0dXJuIG1fYW5pbWF0aW9uID09IGNvbmRpdGlvbkV2ZW50TGlzdGVu
ZXItPm1fYW5pbWF0aW9uICYmIG1fY29uZGl0aW9uID09IGNvbmRpdGlvbkV2ZW50TGlzdGVuZXIt
Pm1fY29uZGl0aW9uOwpAQCAtNTQ1LDcgKzU0NSw3IEBAIHZvaWQgU1ZHU01JTEVsZW1lbnQ6OmNv
bm5lY3RDb25kaXRpb25zKCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IEFTU0VSVCghY29uZGl0aW9uLm1fZXZlbnRMaXN0ZW5lcik7CiAgICAgICAgICAgICBjb25kaXRp
b24ubV9ldmVudExpc3RlbmVyID0gQ29uZGl0aW9uRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKHRoaXMs
ICZjb25kaXRpb24pOwotICAgICAgICAgICAgZXZlbnRCYXNlLT5hZGRFdmVudExpc3RlbmVyKGNv
bmRpdGlvbi5tX25hbWUsIGNvbmRpdGlvbi5tX2V2ZW50TGlzdGVuZXIsIGZhbHNlKTsKKyAgICAg
ICAgICAgIGV2ZW50QmFzZS0+YWRkRXZlbnRMaXN0ZW5lcihjb25kaXRpb24ubV9uYW1lLCAqY29u
ZGl0aW9uLm1fZXZlbnRMaXN0ZW5lciwgZmFsc2UpOwogICAgICAgICB9IGVsc2UgaWYgKGNvbmRp
dGlvbi5tX3R5cGUgPT0gQ29uZGl0aW9uOjpTeW5jYmFzZSkgewogICAgICAgICAgICAgQVNTRVJU
KCFjb25kaXRpb24ubV9iYXNlSUQuaXNFbXB0eSgpKTsKICAgICAgICAgICAgIGNvbmRpdGlvbi5t
X3N5bmNiYXNlID0gdHJlZVNjb3BlKCkuZ2V0RWxlbWVudEJ5SWQoY29uZGl0aW9uLm1fYmFzZUlE
KTsKQEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lkIFNWR1NNSUxFbGVtZW50OjpkaXNjb25uZWN0Q29u
ZGl0aW9ucygpCiAgICAgICAgICAgICAvLyBvdXIgY29uZGl0aW9uIGV2ZW50IGxpc3RlbmVyLCBp
biBjYXNlIGl0IGxhdGVyIGZpcmVzLgogICAgICAgICAgICAgRWxlbWVudCogZXZlbnRCYXNlID0g
ZXZlbnRCYXNlRm9yKGNvbmRpdGlvbik7CiAgICAgICAgICAgICBpZiAoZXZlbnRCYXNlKQotICAg
ICAgICAgICAgICAgIGV2ZW50QmFzZS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25kaXRpb24ubV9u
YW1lLCBjb25kaXRpb24ubV9ldmVudExpc3RlbmVyLmdldCgpLCBmYWxzZSk7CisgICAgICAgICAg
ICAgICAgZXZlbnRCYXNlLT5yZW1vdmVFdmVudExpc3RlbmVyKGNvbmRpdGlvbi5tX25hbWUsICpj
b25kaXRpb24ubV9ldmVudExpc3RlbmVyLCBmYWxzZSk7CiAgICAgICAgICAgICBjb25kaXRpb24u
bV9ldmVudExpc3RlbmVyLT5kaXNjb25uZWN0QW5pbWF0aW9uKCk7CiAgICAgICAgICAgICBjb25k
aXRpb24ubV9ldmVudExpc3RlbmVyID0gbnVsbHB0cjsKICAgICAgICAgfSBlbHNlIGlmIChjb25k
aXRpb24ubV90eXBlID09IENvbmRpdGlvbjo6U3luY2Jhc2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL0RPTUNv
cmVDbGFzc2VzLmNwcAppbmRleCA1ZGY3ODM4NjJjYzkxYzg1YTNiNWE2YjNmNTQyNjY5NjEzMWE4
M2IzLi4yYTEwYWRlZDhkY2Y0NzIyOTFkZDI2OTQxMjIzYzhhYTkyZGVmZWY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCkBAIC00MTIsOCArNDEyLDggQEAgSFJFU1VMVCBET01O
b2RlOjpzZXRUZXh0Q29udGVudChfSW5fIEJTVFIgLyp0ZXh0Ki8pCiAKIEhSRVNVTFQgRE9NTm9k
ZTo6YWRkRXZlbnRMaXN0ZW5lcihfSW5fIEJTVFIgdHlwZSwgX0luX29wdF8gSURPTUV2ZW50TGlz
dGVuZXIqIGxpc3RlbmVyLCBCT09MIHVzZUNhcHR1cmUpCiB7Ci0gICAgUmVmUHRyPFdlYkV2ZW50
TGlzdGVuZXI+IHdlYkxpc3RlbmVyID0gV2ViRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGxpc3RlbmVy
KTsKLSAgICBtX25vZGUtPmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgd2ViTGlzdGVuZXIsIHVzZUNh
cHR1cmUpOworICAgIGF1dG8gd2ViTGlzdGVuZXIgPSBXZWJFdmVudExpc3RlbmVyOjpjcmVhdGUo
bGlzdGVuZXIpOworICAgIG1fbm9kZS0+YWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBXVEZNb3ZlKHdl
Ykxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTQyNCw4
ICs0MjQsOCBAQCBIUkVTVUxUIERPTU5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIoX0luXyBCU1RS
IHR5cGUsIF9Jbl9vcHRfIElET01FdmVudExpc3RlbmVyKgogICAgICAgICByZXR1cm4gRV9QT0lO
VEVSOwogICAgIGlmICghbV9ub2RlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwotICAgIFJlZlB0
cjxXZWJFdmVudExpc3RlbmVyPiB3ZWJMaXN0ZW5lciA9IFdlYkV2ZW50TGlzdGVuZXI6OmNyZWF0
ZShsaXN0ZW5lcik7Ci0gICAgbV9ub2RlLT5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIHdlYkxp
c3RlbmVyLmdldCgpLCB1c2VDYXB0dXJlKTsKKyAgICBhdXRvIHdlYkxpc3RlbmVyID0gV2ViRXZl
bnRMaXN0ZW5lcjo6Y3JlYXRlKGxpc3RlbmVyKTsKKyAgICBtX25vZGUtPnJlbW92ZUV2ZW50TGlz
dGVuZXIodHlwZSwgd2ViTGlzdGVuZXIsIHVzZUNhcHR1cmUpOwogICAgIHJldHVybiBTX09LOwog
fQogCkBAIC05MTAsOCArOTEwLDggQEAgSFJFU1VMVCBET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVu
ZXIoX0luXyBCU1RSIHR5cGUsIF9Jbl9vcHRfIElET01FdmVudExpc3RlbmVyKgogICAgICAgICBy
ZXR1cm4gRV9QT0lOVEVSOwogICAgIGlmICghbV93aW5kb3cpCiAgICAgICAgIHJldHVybiBFX0ZB
SUw7Ci0gICAgUmVmUHRyPFdlYkV2ZW50TGlzdGVuZXI+IHdlYkxpc3RlbmVyID0gV2ViRXZlbnRM
aXN0ZW5lcjo6Y3JlYXRlKGxpc3RlbmVyKTsKLSAgICBtX3dpbmRvdy0+YWRkRXZlbnRMaXN0ZW5l
cih0eXBlLCB3ZWJMaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CisgICAgYXV0byB3ZWJMaXN0ZW5lciA9
IFdlYkV2ZW50TGlzdGVuZXI6OmNyZWF0ZShsaXN0ZW5lcik7CisgICAgbV93aW5kb3ctPmFkZEV2
ZW50TGlzdGVuZXIodHlwZSwgV1RGTW92ZSh3ZWJMaXN0ZW5lciksIHVzZUNhcHR1cmUpOwogICAg
IHJldHVybiBTX09LOwogfQogCkBAIC05MjEsOCArOTIxLDggQEAgSFJFU1VMVCBET01XaW5kb3c6
OnJlbW92ZUV2ZW50TGlzdGVuZXIoX0luXyBCU1RSIHR5cGUsIF9Jbl9vcHRfIElET01FdmVudExp
c3RlbmUKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICBpZiAoIW1fd2luZG93KQogICAg
ICAgICByZXR1cm4gRV9GQUlMOwotICAgIFJlZlB0cjxXZWJFdmVudExpc3RlbmVyPiB3ZWJMaXN0
ZW5lciA9IFdlYkV2ZW50TGlzdGVuZXI6OmNyZWF0ZShsaXN0ZW5lcik7Ci0gICAgbV93aW5kb3ct
PnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgd2ViTGlzdGVuZXIuZ2V0KCksIHVzZUNhcHR1cmUp
OworICAgIGF1dG8gd2ViTGlzdGVuZXIgPSBXZWJFdmVudExpc3RlbmVyOjpjcmVhdGUobGlzdGVu
ZXIpOworICAgIG1fd2luZG93LT5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIHdlYkxpc3RlbmVy
LCB1c2VDYXB0dXJlKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93aW4vRE9NRXZlbnRzQ2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01F
dmVudHNDbGFzc2VzLmNwcAppbmRleCA4MGI0ZDJlYWNiYjVjZmQ3YzNlNWVmYzcxZWE5YTFlYTE0
ZmNhM2JlLi5hZDg3NjZiMzFiNTY4M2E2OWNlNTQ3NWJmNzcwNGJjYTNkYzgzNmQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9ET01FdmVudHNDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9ET01FdmVudHNDbGFzc2VzLmNwcApAQCAtNjgsNyArNjgsNyBAQCBXZWJFdmVu
dExpc3RlbmVyOjp+V2ViRXZlbnRMaXN0ZW5lcigpCiAgICAgbV9pRE9NRXZlbnRMaXN0ZW5lci0+
UmVsZWFzZSgpOwogfQogCi1ib29sIFdlYkV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0oY29uc3Qg
V2ViQ29yZTo6RXZlbnRMaXN0ZW5lciYgb3RoZXIpCitib29sIFdlYkV2ZW50TGlzdGVuZXI6Om9w
ZXJhdG9yPT0oY29uc3QgV2ViQ29yZTo6RXZlbnRMaXN0ZW5lciYgb3RoZXIpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIChvdGhlci50eXBlKCkgPT0gQ1BQRXZlbnRMaXN0ZW5lclR5cGUgCiAgICAgICAg
ICYmIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgV2ViRXZlbnRMaXN0ZW5lcio+KCZvdGhlciktPm1f
aURPTUV2ZW50TGlzdGVuZXIgPT0gbV9pRE9NRXZlbnRMaXN0ZW5lcik7CkBAIC04MSw5ICs4MSw5
IEBAIHZvaWQgV2ViRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoV2ViQ29yZTo6U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogcywgV2ViQ29yZTo6CiAgICAgbV9pRE9NRXZlbnRMaXN0ZW5lci0+aGFu
ZGxlRXZlbnQoZG9tRXZlbnQuZ2V0KCkpOwogfQogCi1QYXNzUmVmUHRyPFdlYkV2ZW50TGlzdGVu
ZXI+IFdlYkV2ZW50TGlzdGVuZXI6OmNyZWF0ZShJRE9NRXZlbnRMaXN0ZW5lciogZCkKK1JlZjxX
ZWJFdmVudExpc3RlbmVyPiBXZWJFdmVudExpc3RlbmVyOjpjcmVhdGUoSURPTUV2ZW50TGlzdGVu
ZXIqIGQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJFdmVudExpc3RlbmVyKGQpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJFdmVudExpc3RlbmVyKGQpKTsKIH0KIAogLy8g
RE9NRXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRE9NRXZl
bnRzQ2xhc3Nlcy5oIGIvU291cmNlL1dlYktpdC93aW4vRE9NRXZlbnRzQ2xhc3Nlcy5oCmluZGV4
IDRhYjJjZWUxYzFmMzJhOTliNzA5Y2NmNDgyNzg3MjA1OGUxNmRjNWUuLjdkZjgxM2I4MDMwNzQx
MGNkZmE1Yzg3YjVmYmI0NjUwNzVhNDkxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
L0RPTUV2ZW50c0NsYXNzZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01FdmVudHNDbGFz
c2VzLmgKQEAgLTQ2LDkgKzQ2LDkgQEAgY2xhc3MgV2ViRXZlbnRMaXN0ZW5lciA6IHB1YmxpYyBX
ZWJDb3JlOjpFdmVudExpc3RlbmVyIHsKIHB1YmxpYzoKICAgICBXZWJFdmVudExpc3RlbmVyKElE
T01FdmVudExpc3RlbmVyKik7CiAgICAgfldlYkV2ZW50TGlzdGVuZXIoKTsKLSAgICB2aXJ0dWFs
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJik7CisgICAgdmlydHVhbCBib29s
IG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9p
ZCBoYW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViQ29yZTo6
RXZlbnQqKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJFdmVudExpc3RlbmVyPiBjcmVhdGUo
SURPTUV2ZW50TGlzdGVuZXIqKTsKKyAgICBzdGF0aWMgUmVmPFdlYkV2ZW50TGlzdGVuZXI+IGNy
ZWF0ZShJRE9NRXZlbnRMaXN0ZW5lciopOwogcHJpdmF0ZToKICAgICBJRE9NRXZlbnRMaXN0ZW5l
ciogbV9pRE9NRXZlbnRMaXN0ZW5lcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24uaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5oCmluZGV4IDYz
YTQ4YWM1NjA2Yjc0NGE5NTExYTI3ZTY2MmM4MTgwNTJmZWIxM2UuLmY2MzM5NzAxZTY2MDEwOWUy
OTFhOGZjMGM1YjkxYTQ5ODlhMzRlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5oCkBAIC04NCw3
ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQREZQ
bHVnaW5Bbm5vdGF0aW9uRXZlbnRMaXN0ZW5lcihhbm5vdGF0aW9uKSk7CiAgICAgICAgIH0KIAot
ICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpIG92
ZXJyaWRlIHsgcmV0dXJuIHRoaXMgPT0gJmxpc3RlbmVyOyB9CisgICAgICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdGhpcyA9PSAmbGlzdGVuZXI7IH0KIAogICAgICAgICB2b2lkIHNldEFubm90YXRpb24oUERG
UGx1Z2luQW5ub3RhdGlvbiogYW5ub3RhdGlvbikgeyBtX2Fubm90YXRpb24gPSBhbm5vdGF0aW9u
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luQW5ub3RhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbQppbmRleCA0N2JhOWMyOTM1MTg0YTU1ODBkOWU2
NzVjNzI1ZWMyN2FjYmYzYTNjLi4zY2E3ZTQ4OTg4N2NmZTU4YzQzYzhlYTc0MzQ2ZTFjNDc4N2Nl
YTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbkFubm90YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tCkBAIC02OSw4ICs2OSw4IEBAIHZvaWQgUERG
UGx1Z2luQW5ub3RhdGlvbjo6YXR0YWNoKEVsZW1lbnQqIHBhcmVudCkKICAgICBtX2VsZW1lbnQg
PSBjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpOwogCiAgICAgbV9lbGVtZW50LT5zZXRBdHRyaWJ1
dGUoY2xhc3NBdHRyLCAiYW5ub3RhdGlvbiIpOwotICAgIG1fZWxlbWVudC0+YWRkRXZlbnRMaXN0
ZW5lcihldmVudE5hbWVzKCkuY2hhbmdlRXZlbnQsIG1fZXZlbnRMaXN0ZW5lciwgZmFsc2UpOwot
ICAgIG1fZWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYmx1ckV2ZW50LCBt
X2V2ZW50TGlzdGVuZXIsIGZhbHNlKTsKKyAgICBtX2VsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIo
ZXZlbnROYW1lcygpLmNoYW5nZUV2ZW50LCAqbV9ldmVudExpc3RlbmVyLCBmYWxzZSk7CisgICAg
bV9lbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQsICptX2V2
ZW50TGlzdGVuZXIsIGZhbHNlKTsKIAogICAgIHVwZGF0ZUdlb21ldHJ5KCk7CiAKQEAgLTg3LDgg
Kzg3LDggQEAgdm9pZCBQREZQbHVnaW5Bbm5vdGF0aW9uOjpjb21taXQoKQogCiBQREZQbHVnaW5B
bm5vdGF0aW9uOjp+UERGUGx1Z2luQW5ub3RhdGlvbigpCiB7Ci0gICAgbV9lbGVtZW50LT5yZW1v
dmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jaGFuZ2VFdmVudCwgbV9ldmVudExpc3RlbmVy
LmdldCgpLCBmYWxzZSk7Ci0gICAgbV9lbGVtZW50LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50
TmFtZXMoKS5ibHVyRXZlbnQsIG1fZXZlbnRMaXN0ZW5lci5nZXQoKSwgZmFsc2UpOworICAgIG1f
ZWxlbWVudC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2hhbmdlRXZlbnQsICpt
X2V2ZW50TGlzdGVuZXIsIGZhbHNlKTsKKyAgICBtX2VsZW1lbnQtPnJlbW92ZUV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLmJsdXJFdmVudCwgKm1fZXZlbnRMaXN0ZW5lciwgZmFsc2UpOwogCiAg
ICAgbV9ldmVudExpc3RlbmVyLT5zZXRBbm5vdGF0aW9uKDApOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3
b3JkRmllbGQubW0KaW5kZXggYjJhM2M3ZjBmZWZhNWJiMGY1N2YxMzVkM2IzNmFjNzAyMTdlZGQ3
Yi4uNjc3NjQ3NTcyZDZmYTIwMWRjMzI5MzNkYjMxYjA2ZGZjOTFiMDgxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZp
ZWxkLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luUGFzc3dvcmRGaWVsZC5tbQpAQCAtNDksMTQgKzQ5LDE0IEBAIFJlZjxQREZQbHVnaW5QYXNz
d29yZEZpZWxkPiBQREZQbHVnaW5QYXNzd29yZEZpZWxkOjpjcmVhdGUoUERGTGF5ZXJDb250cm9s
bGVyICpwCiAKIFBERlBsdWdpblBhc3N3b3JkRmllbGQ6On5QREZQbHVnaW5QYXNzd29yZEZpZWxk
KCkKIHsKLSAgICBlbGVtZW50KCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtl
eXVwRXZlbnQsIGV2ZW50TGlzdGVuZXIoKSwgZmFsc2UpOworICAgIGVsZW1lbnQoKS0+cmVtb3Zl
RXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkua2V5dXBFdmVudCwgKmV2ZW50TGlzdGVuZXIoKSwg
ZmFsc2UpOwogfQogCiBQYXNzUmVmUHRyPEVsZW1lbnQ+IFBERlBsdWdpblBhc3N3b3JkRmllbGQ6
OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkKIHsKICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVu
dCA9IFBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpOwog
ICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZSh0eXBlQXR0ciwgInBhc3N3b3JkIik7Ci0gICAgZWxl
bWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkua2V5dXBFdmVudCwgZXZlbnRMaXN0
ZW5lcigpLCBmYWxzZSk7CisgICAgZWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVz
KCkua2V5dXBFdmVudCwgKmV2ZW50TGlzdGVuZXIoKSwgZmFsc2UpOwogICAgIHJldHVybiBlbGVt
ZW50OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbQppbmRleCBmYmVkM2E2ZmRh
Njg5M2Q4ZDJlNTUzNWRiNDMzZGQyOTQ3MTZmYjE3Li44YzA3NDY5YzZkNThhYjE3NjI4MTgwODhk
YmUxOTU2MmMzNzhmY2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0KQEAgLTc4
LDcgKzc4LDcgQEAgUmVmPFBERlBsdWdpblRleHRBbm5vdGF0aW9uPiBQREZQbHVnaW5UZXh0QW5u
b3RhdGlvbjo6Y3JlYXRlKFBERkFubm90YXRpb24gKmFubm8KIAogUERGUGx1Z2luVGV4dEFubm90
YXRpb246On5QREZQbHVnaW5UZXh0QW5ub3RhdGlvbigpCiB7Ci0gICAgZWxlbWVudCgpLT5yZW1v
dmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQsIGV2ZW50TGlzdGVuZXIo
KSwgZmFsc2UpOworICAgIGVsZW1lbnQoKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVz
KCkua2V5ZG93bkV2ZW50LCAqZXZlbnRMaXN0ZW5lcigpLCBmYWxzZSk7CiB9CiAKIFBhc3NSZWZQ
dHI8RWxlbWVudD4gUERGUGx1Z2luVGV4dEFubm90YXRpb246OmNyZWF0ZUFubm90YXRpb25FbGVt
ZW50KCkKQEAgLTk3LDcgKzk3LDcgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBQREZQbHVnaW5UZXh0
QW5ub3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKQogICAgIGVsc2UKICAgICAgICAg
ZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaW5wdXRUYWcsIGZhbHNlKTsKIAotICAg
IGVsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleWRvd25FdmVudCwgZXZl
bnRMaXN0ZW5lcigpLCBmYWxzZSk7CisgICAgZWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkua2V5ZG93bkV2ZW50LCAqZXZlbnRMaXN0ZW5lcigpLCBmYWxzZSk7CiAKICAgICBT
dHlsZWRFbGVtZW50KiBzdHlsZWRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+
KGVsZW1lbnQuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjkxZTgzYzIyMWZlMTc3ZmFlMTc4YWU4OWVkZGEw
NGNjZjI2NTZmYi4uZDA3MmVlYjgxNTVjNjBkNTc1ZDM0MTczOTg4NzNkZDcyYThjMjhhMiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDE2LTA1LTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgR2VuZXJhdGUgYmluZGluZ3MgY29kZSBmb3IgRXZlbnRUYXJnZXQu
YWRkRXZlbnRMaXN0ZW5lcigpIC8gcmVtb3ZlRXZlbnRMaXN0ZW5lcigpCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTc4ODIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWJhc2VsaW5lIGV4aXN0aW5nIHRl
c3Qgbm93IHRoYXQgdGhlICdsZW5ndGgnIHByb3BlcnR5IG9mIHRob3NlIGZ1bmN0aW9ucworICAg
ICAgICBoYXZlIGNoYW5nZWQuIFRoaXMgaXMgYmVjYXVzZSB0aGUgSURMIGhhcyBiZWVuIHVwZGF0
ZWQgdG8gbWF0Y2ggb3VyCisgICAgICAgIGltcGxlbWVudGF0aW9uIChhbGwgcGFyYW1ldGVycyBh
cmUgb3B0aW9uYWwpLiBXaGlsZSB0aGlzIGRvZXMgbm90IG1hdGNoCisgICAgICAgIHRoZSBzcGVj
aWZpY2F0aW9uLCB0aGUgbmV3IGxlbmd0aCBub3cgbWF0Y2hlcyBvdXIgYWN0dWFsIGJlaGF2aW9y
LgorCisgICAgICAgICoganMvZG9tL2Z1bmN0aW9uLWxlbmd0aC1leHBlY3RlZC50eHQ6CisKIDIw
MTYtMDUtMTggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KIAog
ICAgICAgICBTeW5jIERPTSBleGNlcHRpb24gdHlwZXMgd2l0aCBXZWJJREwgYW5kIHVwZGF0ZSBw
cm9taXNlIHJlamVjdGlvbnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2ludGVyZmFjZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vaW50ZXJmYWNlcy1leHBlY3Rl
ZC50eHQKaW5kZXggNzE5NzYyYmY4NjI3ODE5ZTQ1OWM1YzZmOWM1NWEyNTA4MmI4NTdiOC4uMzI1
MmQ4NzUxNjBlZDhhOTU0OTVkYWE3ODFmYzBjOTI5ZTIyMjRhOCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vaW50ZXJmYWNlcy1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9kb20vaW50ZXJmYWNlcy1leHBlY3RlZC50eHQKQEAgLTExMCw4ICsxMTAsOCBAQCBQQVNTIEV2
ZW50VGFyZ2V0IGludGVyZmFjZSBvYmplY3QgbGVuZ3RoCiBQQVNTIEV2ZW50VGFyZ2V0IGludGVy
ZmFjZSBvYmplY3QgbmFtZSAKIFBBU1MgRXZlbnRUYXJnZXQgaW50ZXJmYWNlOiBleGlzdGVuY2Ug
YW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgCiBQQVNTIEV2ZW50
VGFyZ2V0IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBw
cm90b3R5cGUgb2JqZWN0J3MgImNvbnN0cnVjdG9yIiBwcm9wZXJ0eSAKLVBBU1MgRXZlbnRUYXJn
ZXQgaW50ZXJmYWNlOiBvcGVyYXRpb24gYWRkRXZlbnRMaXN0ZW5lcihET01TdHJpbmcsRXZlbnRM
aXN0ZW5lcixbb2JqZWN0IE9iamVjdF0sW29iamVjdCBPYmplY3RdKSAKLVBBU1MgRXZlbnRUYXJn
ZXQgaW50ZXJmYWNlOiBvcGVyYXRpb24gcmVtb3ZlRXZlbnRMaXN0ZW5lcihET01TdHJpbmcsRXZl
bnRMaXN0ZW5lcixbb2JqZWN0IE9iamVjdF0sW29iamVjdCBPYmplY3RdKSAKK0ZBSUwgRXZlbnRU
YXJnZXQgaW50ZXJmYWNlOiBvcGVyYXRpb24gYWRkRXZlbnRMaXN0ZW5lcihET01TdHJpbmcsRXZl
bnRMaXN0ZW5lcixbb2JqZWN0IE9iamVjdF0sW29iamVjdCBPYmplY3RdKSBhc3NlcnRfZXF1YWxz
OiBwcm9wZXJ0eSBoYXMgd3JvbmcgLmxlbmd0aCBleHBlY3RlZCAyIGJ1dCBnb3QgMAorRkFJTCBF
dmVudFRhcmdldCBpbnRlcmZhY2U6IG9wZXJhdGlvbiByZW1vdmVFdmVudExpc3RlbmVyKERPTVN0
cmluZyxFdmVudExpc3RlbmVyLFtvYmplY3QgT2JqZWN0XSxbb2JqZWN0IE9iamVjdF0pIGFzc2Vy
dF9lcXVhbHM6IHByb3BlcnR5IGhhcyB3cm9uZyAubGVuZ3RoIGV4cGVjdGVkIDIgYnV0IGdvdCAw
CiBQQVNTIEV2ZW50VGFyZ2V0IGludGVyZmFjZTogb3BlcmF0aW9uIGRpc3BhdGNoRXZlbnQoRXZl
bnQpIAogUEFTUyBFdmVudExpc3RlbmVyIGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0
aWVzIG9mIGludGVyZmFjZSBvYmplY3QgCiBQQVNTIEV2ZW50TGlzdGVuZXIgaW50ZXJmYWNlOiBl
eGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZnVuY3Rpb24tbGVuZ3RoLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2pzL2RvbS9mdW5jdGlvbi1sZW5ndGgtZXhwZWN0ZWQudHh0CmluZGV4
IDRhMzZiOThmNmI4YzIyMDgyNGJiOTJlYTA4NWFjMTNhNjA0YjQ3ZWEuLmU5NWJlNTBlNTA2NWFk
NzcxNmNiNTg5MzBmNDhlMjMxNzRhNGE5NTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2Rv
bS9mdW5jdGlvbi1sZW5ndGgtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9m
dW5jdGlvbi1sZW5ndGgtZXhwZWN0ZWQudHh0CkBAIC04LDcgKzgsNyBAQCBQQVNTIHdpbmRvdy5v
cGVuLmxlbmd0aCBpcyAyCiBQQVNTIHdpbmRvdy5zaG93TW9kYWxEaWFsb2cubGVuZ3RoIGlzIDEK
IFBBU1Mgd2luZG93LnNldFRpbWVvdXQubGVuZ3RoIGlzIDEKIFBBU1Mgd2luZG93LmNsZWFyVGlt
ZW91dC5sZW5ndGggaXMgMAotUEFTUyB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lci5sZW5ndGggaXMg
MgorRkFJTCB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lci5sZW5ndGggc2hvdWxkIGJlIDIuIFdhcyAw
LgogUEFTUyBBcnJheS5wcm90b3R5cGUuY29uY2F0Lmxlbmd0aCBpcyAxCiBQQVNTIEFycmF5LnBy
b3RvdHlwZS5qb2luLmxlbmd0aCBpcyAxCiBQQVNTIEFycmF5LnByb3RvdHlwZS5wdXNoLmxlbmd0
aCBpcyAxCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279453</attachid>
            <date>2016-05-19 16:58:44 -0700</date>
            <delta_ts>2016-05-23 16:29:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157882-20160519165944.patch</filename>
            <type>text/plain</type>
            <size>77400</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxMTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTA1ZDg5ZTM1ODM5NjUy
NjQxYjczOWM4OGMxZjUyZTU2YzJiNTM2Mi4uNmRlZmNjNDdiY2JhYjIzYzNiNGU5MjAwMjJhMDVi
ZjJmZWE5ZDZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxNi0wNS0xOSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEdlbmVyYXRlIGJpbmRpbmdz
IGNvZGUgZm9yIEV2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoKSAvIHJlbW92ZUV2ZW50TGlz
dGVuZXIoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU3ODgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgR2Vu
ZXJhdGUgYmluZGluZ3MgY29kZSBmb3IgRXZlbnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigpIC8g
cmVtb3ZlRXZlbnRMaXN0ZW5lcigpCisgICAgICAgIGluc3RlYWQgb2YgaGFyZGNvZGluZyB0aGVt
IGluIHRoZSBiaW5kaW5ncyBnZW5lcmF0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWJh
c2VsaW5lZCBleGlzdGluZyB0ZXN0LiBUaGUgb25seSBXZWItRXhwb3NlZCBiZWhhdmlvciBjaGFu
Z2UKKyAgICAgICAgaXMgdGhhdCAnbGVuZ3RoJyBwcm9wZXJ0eSBvZiB0aG9zZSBmdW5jdGlvbnMg
aGF2ZSBjaGFuZ2VkLiBUaGlzIGlzIGJlY2F1c2UgdGhlCisgICAgICAgIElETCBoYXMgYmVlbiB1
cGRhdGVkIHRvIG1hdGNoIG91ciBpbXBsZW1lbnRhdGlvbiAoYWxsIHBhcmFtZXRlcnMgYXJlIG9w
dGlvbmFsKS4KKyAgICAgICAgV2hpbGUgdGhpcyBkb2VzIG5vdCBtYXRjaCB0aGUgc3BlY2lmaWNh
dGlvbiwgdGhlIG5ldyBsZW5ndGggbm93IG1hdGNoZXMgb3VyCisgICAgICAgIGFjdHVhbCBiZWhh
dmlvci4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VO
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6YWRk
RXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NjaGVkdWxlZFNvdXJjZU5v
ZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVk
aW9TY2hlZHVsZWRTb3VyY2VOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9TY3Jp
cHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5v
ZGU6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvY2Vzc29y
Tm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9T
Y3JpcHRQcm9jZXNzb3JOb2RlLmg6CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0
RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHT2JqZWN0RXZlbnRMaXN0ZW5l
cjo6b3BlcmF0b3I9PSk6CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZlbnRM
aXN0ZW5lci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAo
V2ViQ29yZTo6ZXZlbnRIYW5kbGVyQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRMaXN0
ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6Y2FzdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OmpzRnVuY3Rpb24p
OiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL29iamMvT2JqQ0V2ZW50TGlzdGVuZXIuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL09iakNFdmVudExpc3RlbmVyLm1tOgorICAgICAgICAo
V2ViQ29yZTo6T2JqQ0V2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbik6CisgICAgICAgIChKU1ZhbHVlVG9OYXRpdmUpOgorICAgICAgICAoR2V0UGFyZW50
Q2xhc3NOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEdldENhbGxiYWNrQ2xhc3NOYW1lKTogRGVs
ZXRlZC4KKyAgICAgICAgKEdldEpTQ2FsbGJhY2tEYXRhVHlwZSk6IERlbGV0ZWQuCisgICAgICAg
ICogZG9tL0V2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lck1hcC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjphZGRMaXN0ZW5lclRvVmVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50TGlzdGVuZXJNYXA6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVM
aXN0ZW5lckZyb21WZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRMaXN0ZW5lck1hcDo6
cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlMaXN0ZW5lcnNOb3RDcmVhdGVkRnJvbU1h
cmt1cFRvVGFyZ2V0KToKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lck1hcC5oOgorICAgICAg
ICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6
YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6YWRkRXZl
bnRMaXN0ZW5lckZvckJpbmRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0Ojpy
ZW1vdmVFdmVudExpc3RlbmVyRm9yQmluZGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRU
YXJnZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJn
ZXQ6OnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRU
YXJnZXQ6OmNsZWFyQXR0cmlidXRlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogZG9tL0V2ZW50
VGFyZ2V0Lmg6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0LmlkbDoKKyAgICAgICAgKiBkb20v
TWVzc2FnZVBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmFkZEV2ZW50
TGlzdGVuZXIpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5oOgorICAgICAgICAqIGRvbS9O
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyeUFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjp0
cnlSZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlbW92ZUV2
ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogZG9tL1JlZ2lz
dGVyZWRFdmVudExpc3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RlcmVkRXZlbnRM
aXN0ZW5lcjo6UmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRF
dmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92
ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAg
ICAgICAqIGh0bWwvSW1hZ2VEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURv
Y3VtZW50OjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlh
Q29udHJvbHNBcHBsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQXBwbGU6
OnNob3dDbG9zZWRDYXB0aW9uVHJhY2tMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbHNBcHBsZTo6aGlkZUNsb3NlZENhcHRpb25UcmFja0xpc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PSk6CisgICAgICAg
ICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmg6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAg
KiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvV2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjphZGRFdmVudExpc3RlbmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgor
ICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjphdHRh
Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI6OmRldGFj
aCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcjo6b3BlcmF0
b3I9PSk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb25kaXRpb25FdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50Ojpjb25uZWN0Q29uZGl0aW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6ZGlzY29ubmVjdENvbmRpdGlvbnMpOgorCiAyMDE2
LTA1LTE5ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBGaW5p
c2hpbmcgb2ZmOiBNb2Rlcm4gSURCOiBXZWJzaXRlIGRhdGEgc3RvcmUgbWFuYWdlbWVudC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZwppbmRleCAzYTQwZDM1MDdiYzY3NmMyZjc4YTk5NTFlNjU1NmFlYTU2OWRjMDVh
Li42OWYzODc3ZTY1NGI1MmY2ZjBiMTY3NWNhM2FmODQxYzNkOTljMTg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMDUtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KKworICAgICAgICBHZW5lcmF0ZSBiaW5kaW5ncyBjb2RlIGZvciBFdmVudFRhcmdl
dC5hZGRFdmVudExpc3RlbmVyKCkgLyByZW1vdmVFdmVudExpc3RlbmVyKCkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Nzg4MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEdlbmVyYXRlIGJpbmRpbmdzIGNvZGUg
Zm9yIEV2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoKSAvIHJlbW92ZUV2ZW50TGlzdGVuZXIo
KQorICAgICAgICBpbnN0ZWFkIG9mIGhhcmRjb2RpbmcgdGhlbSBpbiB0aGUgYmluZGluZ3MgZ2Vu
ZXJhdG9yLgorCisgICAgICAgICogRE9NRXZlbnRzQ2xhc3Nlcy5jcHA6CisgICAgICAgIChXZWJF
dmVudExpc3RlbmVyOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBET01FdmVudHNDbGFzc2VzLmg6
CisKIDIwMTYtMDUtMTYgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkIHJvbGxvdXQgcjIwMDkyNC4gQ2F1c2VkIGpzL3JlZ3Jlc3Mvc3Ry
aW5nLXJlcGxhY2UtZ2VuZXJpYy5odG1sIHRvIGZhaWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjhlNjA4MTli
NmMyZDRhOWI4Mjg3YTk0M2RhY2UzZDBmNmU3ZDMzMi4uMjI0Y2YwYTc2NWIwMzc1Yzk1ZTk1NWJl
ZGQ3YjMzNzNjNzVhZTg3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE2LTA1LTE5
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgR2VuZXJhdGUgYmlu
ZGluZ3MgY29kZSBmb3IgRXZlbnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigpIC8gcmVtb3ZlRXZl
bnRMaXN0ZW5lcigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTc4ODIKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAg
ICBHZW5lcmF0ZSBiaW5kaW5ncyBjb2RlIGZvciBFdmVudFRhcmdldC5hZGRFdmVudExpc3RlbmVy
KCkgLyByZW1vdmVFdmVudExpc3RlbmVyKCkKKyAgICAgICAgaW5zdGVhZCBvZiBoYXJkY29kaW5n
IHRoZW0gaW4gdGhlIGJpbmRpbmdzIGdlbmVyYXRvci4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERG
UGx1Z2luQW5ub3RhdGlvbjo6YXR0YWNoKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luQW5u
b3RhdGlvbjo6flBERlBsdWdpbkFubm90YXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5tbToKKyAgICAgICAgKFdlYktpdDo6UERG
UGx1Z2luUGFzc3dvcmRGaWVsZDo6flBERlBsdWdpblBhc3N3b3JkRmllbGQpOgorICAgICAgICAo
V2ViS2l0OjpQREZQbHVnaW5QYXNzd29yZEZpZWxkOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlv
bi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luVGV4dEFubm90YXRpb246On5QREZQbHVn
aW5UZXh0QW5ub3RhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpblRleHRBbm5vdGF0
aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCk6CisKIDIwMTYtMDUtMTkgIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEZpbmlzaGluZyBvZmY6IE1vZGVybiBJ
REI6IFdlYnNpdGUgZGF0YSBzdG9yZSBtYW5hZ2VtZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3Bw
CmluZGV4IGJjNGVmYjRiNzJjZTZkN2ViY2NjZTM4ZWI2MDk5OTUzOTQwZTliNTAuLjRjYTZhMDQ0
MmZkM2E5MzE1N2M3MjUxNGYzNDdhMWZhYzc4MzY0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5j
cHAKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6Zmlu
aXNoKCkKICAgICB9CiB9CiAKLWJvb2wgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjphZGRFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBBdWRpb1NjaGVkdWxlZFNv
dXJjZU5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IFJlZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAg
Ym9vbCBzdWNjZXNzID0gQXVkaW9Ob2RlOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgV1RG
TW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOwogICAgIGlmIChzdWNjZXNzICYmIGV2ZW50VHlw
ZSA9PSBldmVudE5hbWVzKCkuZW5kZWRFdmVudCkKQEAgLTIwOSw3ICsyMDksNyBAQCBib29sIEF1
ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgUgogICAgIHJldHVybiBzdWNjZXNzOwogfQogCi1ib29sIEF1ZGlvU2No
ZWR1bGVkU291cmNlTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jv
b2wgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCB1c2VD
YXB0dXJlKQogewogICAgIGJvb2wgc3VjY2VzcyA9IEF1ZGlvTm9kZTo6cmVtb3ZlRXZlbnRMaXN0
ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKICAgICBpZiAoc3VjY2VzcyAm
JiBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmVuZGVkRXZlbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUu
aAppbmRleCBlY2VkZTM4YTA4OTQyNmQwOWNkZTYxZDQwY2I3Zjc0M2I5YzYxMDU1Li5jYjRkZDNj
ZGU4MjE3NWNkMTY1NjNkMGQ4OGZmY2MxMTdjYTFkMDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgK
QEAgLTEwMSw4ICsxMDEsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBV
bmtub3duVGltZTsKIAogcHJpdmF0ZToKLSAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVz
ZUNhcHR1cmUpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSkg
b3ZlcnJpZGU7CisgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlk
ZTsKKyAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIEV2ZW50TGlzdGVuZXImLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogICAgIHZv
aWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSBvdmVycmlkZTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3Bw
CmluZGV4IDY4NWM2NzMwODRjOGMxZjE4MzMwZmY5ZmYzNjc2NTMwOWNkMzkzZTUuLjBjYzQxYjc1
NjhiYjA1MTBlMTU1ZWU5Y2VjMTAwNTYxZWI3NGJhNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcApAQCAtMjcz
LDcgKzI3Myw3IEBAIGRvdWJsZSBTY3JpcHRQcm9jZXNzb3JOb2RlOjpsYXRlbmN5VGltZSgpIGNv
bnN0CiAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsK
IH0KIAotYm9vbCBTY3JpcHRQcm9jZXNzb3JOb2RlOjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwg
Ym9vbCB1c2VDYXB0dXJlKQorYm9vbCBTY3JpcHRQcm9jZXNzb3JOb2RlOjphZGRFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBs
aXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIGJvb2wgc3VjY2VzcyA9IEF1ZGlvTm9k
ZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdURk1vdmUobGlzdGVuZXIpLCB1c2VDYXB0
dXJlKTsKICAgICBpZiAoc3VjY2VzcyAmJiBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmF1ZGlv
cHJvY2Vzc0V2ZW50KQpAQCAtMjgxLDcgKzI4MSw3IEBAIGJvb2wgU2NyaXB0UHJvY2Vzc29yTm9k
ZTo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRy
CiAgICAgcmV0dXJuIHN1Y2Nlc3M7CiB9CiAKLWJvb2wgU2NyaXB0UHJvY2Vzc29yTm9kZTo6cmVt
b3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0
ZW5lciogbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgU2NyaXB0UHJvY2Vzc29yTm9k
ZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZl
bnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICBib29sIHN1Y2Nl
c3MgPSBBdWRpb05vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwg
dXNlQ2FwdHVyZSk7CiAgICAgaWYgKHN1Y2Nlc3MgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMo
KS5hdWRpb3Byb2Nlc3NFdmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmgKaW5kZXggNmI2NWQwMThlYmZhZjY5NmEwNWRk
OGQzZGY4MDRhNjNjNGJhZDQyNC4uMTMwNjI1OTA5MGFkNDNiMmFmNWQ2MzcyMmQ1NWUyNDMzZDgz
YmIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQ
cm9jZXNzb3JOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3Jp
cHRQcm9jZXNzb3JOb2RlLmgKQEAgLTczLDggKzczLDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
ZmlyZVByb2Nlc3NFdmVudCgpOwogCi0gICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VD
YXB0dXJlKSBvdmVycmlkZTsKLSAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpIG92
ZXJyaWRlOworICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7
CisgICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBFdmVudExpc3RlbmVyJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKICAgICB2b2lk
IHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCkgb3ZlcnJpZGU7CiAKICAgICAvLyBEb3VibGUgYnVm
ZmVyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmpl
Y3RFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09i
amVjdEV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IGQ0YTFkMTgzNTFjZjFhZDQxMzMyZGUxNTdkMDZi
MjkxNDE3OGJhYWMuLmYyZWQ5MzI1MWM1MmM0NjgxOWRlZDEzYjVjMGFlNjIzZTYxMTAxNTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVjdEV2ZW50TGlz
dGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVjdEV2
ZW50TGlzdGVuZXIuY3BwCkBAIC01Nyw5ICs1Nyw5IEBAIHZvaWQgR09iamVjdEV2ZW50TGlzdGVu
ZXI6OmdvYmplY3REZXN0cm95ZWQoKQogICAgIC8vIGFuZCBsYXRlciB1c2UtYWZ0ZXItZnJlZSB3
aXRoIHRoZSBtX2hhbmRsZXIgPSAwOyBhc3NpZ25tZW50LgogICAgIFJlZlB0cjxHT2JqZWN0RXZl
bnRMaXN0ZW5lcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKIAotICAgIG1fY29yZVRhcmdldC0+cmVt
b3ZlRXZlbnRMaXN0ZW5lcihtX2RvbUV2ZW50TmFtZS5kYXRhKCksIHRoaXMsIG1fY2FwdHVyZSk7
Ci0gICAgbV9jb3JlVGFyZ2V0ID0gMDsKLSAgICBtX2hhbmRsZXIgPSAwOworICAgIG1fY29yZVRh
cmdldC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihtX2RvbUV2ZW50TmFtZS5kYXRhKCksICp0aGlzLCBt
X2NhcHR1cmUpOworICAgIG1fY29yZVRhcmdldCA9IG51bGxwdHI7CisgICAgbV9oYW5kbGVyID0g
bnVsbHB0cjsKIH0KIAogdm9pZCBHT2JqZWN0RXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50KiBldmVudCkKQEAgLTc3LDcgKzc3LDcgQEAgdm9p
ZCBHT2JqZWN0RXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIEV2ZW50KiBldmVudCkKICAgICBnX3ZhbHVlX3Vuc2V0KHBhcmFtZXRlcnMgKyAxKTsKIH0K
IAotYm9vbCBHT2JqZWN0RXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3Rl
bmVyJiBsaXN0ZW5lcikKK2Jvb2wgR09iamVjdEV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0oY29u
c3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpIGNvbnN0CiB7CiAgICAgaWYgKGNvbnN0IEdPYmpl
Y3RFdmVudExpc3RlbmVyKiBnb2JqZWN0RXZlbnRMaXN0ZW5lciA9IEdPYmplY3RFdmVudExpc3Rl
bmVyOjpjYXN0KCZsaXN0ZW5lcikpCiAgICAgICAgIHJldHVybiBtX3RhcmdldCA9PSBnb2JqZWN0
RXZlbnRMaXN0ZW5lci0+bV90YXJnZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2dvYmplY3QvR09iamVjdEV2ZW50TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2dvYmplY3QvR09iamVjdEV2ZW50TGlzdGVuZXIuaAppbmRleCBlMTE3ZjQwZDZlY2U1ZDRm
NjY4YzA5OWI4MDk1NmE3M2IwZmM2Yzg2Li4yMDZiYmQ3ODllMzEwOTcwZWZkZDJjYTdkODJmYzcx
YmFjOTZmYmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dP
YmplY3RFdmVudExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVj
dC9HT2JqZWN0RXZlbnRMaXN0ZW5lci5oCkBAIC0zNSwxNCArMzUsMTQgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihHT2JqZWN0KiB0YXJnZXQsIEV2ZW50VGFy
Z2V0KiBjb3JlVGFyZ2V0LCBjb25zdCBjaGFyKiBkb21FdmVudE5hbWUsIEdDbG9zdXJlKiBoYW5k
bGVyLCBib29sIHVzZUNhcHR1cmUpCiAgICAgewotICAgICAgICBSZWZQdHI8R09iamVjdEV2ZW50
TGlzdGVuZXI+IGxpc3RlbmVyKGFkb3B0UmVmKG5ldyBHT2JqZWN0RXZlbnRMaXN0ZW5lcih0YXJn
ZXQsIGNvcmVUYXJnZXQsIGRvbUV2ZW50TmFtZSwgaGFuZGxlciwgdXNlQ2FwdHVyZSkpKTsKLSAg
ICAgICAgcmV0dXJuIGNvcmVUYXJnZXQtPmFkZEV2ZW50TGlzdGVuZXIoZG9tRXZlbnROYW1lLCBs
aXN0ZW5lci5yZWxlYXNlKCksIHVzZUNhcHR1cmUpOworICAgICAgICBSZWY8R09iamVjdEV2ZW50
TGlzdGVuZXI+IGxpc3RlbmVyKGFkb3B0UmVmKCpuZXcgR09iamVjdEV2ZW50TGlzdGVuZXIodGFy
Z2V0LCBjb3JlVGFyZ2V0LCBkb21FdmVudE5hbWUsIGhhbmRsZXIsIHVzZUNhcHR1cmUpKSk7Cisg
ICAgICAgIHJldHVybiBjb3JlVGFyZ2V0LT5hZGRFdmVudExpc3RlbmVyKGRvbUV2ZW50TmFtZSwg
V1RGTW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOwogICAgIH0KIAogICAgIHN0YXRpYyBib29s
IHJlbW92ZUV2ZW50TGlzdGVuZXIoR09iamVjdCogdGFyZ2V0LCBFdmVudFRhcmdldCogY29yZVRh
cmdldCwgY29uc3QgY2hhciogZG9tRXZlbnROYW1lLCBHQ2xvc3VyZSogaGFuZGxlciwgYm9vbCB1
c2VDYXB0dXJlKQogICAgIHsKICAgICAgICAgR09iamVjdEV2ZW50TGlzdGVuZXIga2V5KHRhcmdl
dCwgY29yZVRhcmdldCwgZG9tRXZlbnROYW1lLCBoYW5kbGVyLCB1c2VDYXB0dXJlKTsKLSAgICAg
ICAgcmV0dXJuIGNvcmVUYXJnZXQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZG9tRXZlbnROYW1lLCAm
a2V5LCB1c2VDYXB0dXJlKTsKKyAgICAgICAgcmV0dXJuIGNvcmVUYXJnZXQtPnJlbW92ZUV2ZW50
TGlzdGVuZXIoZG9tRXZlbnROYW1lLCBrZXksIHVzZUNhcHR1cmUpOwogICAgIH0KIAogICAgIHN0
YXRpYyB2b2lkIGdvYmplY3REZXN0cm95ZWRDYWxsYmFjayhHT2JqZWN0RXZlbnRMaXN0ZW5lciog
bGlzdGVuZXIsIEdPYmplY3QqKQpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICA6IDA7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRM
aXN0ZW5lciYgb3RoZXIpOworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVy
JiBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgR09iamVjdEV2ZW50TGlz
dGVuZXIoR09iamVjdCosIEV2ZW50VGFyZ2V0KiwgY29uc3QgY2hhciogZG9tRXZlbnROYW1lLCBH
Q2xvc3VyZSosIGJvb2wgY2FwdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudExpc3RlbmVyLmNwcAppbmRleCBjYzU0ZmQ0YTgxODQ5NzdhNjA0YjVmOTRhNTg1MjEz
MmExZDg2ODdlLi5iZmQ3OGE4Mjk1ZTgzODEyMTliM2IyZGJhNWY0NGFiMDkwZTE3NjY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKQEAgLTE2
MywyMCArMTYzLDEzIEBAIGJvb2wgSlNFdmVudExpc3RlbmVyOjp2aXJ0dWFsaXNBdHRyaWJ1dGUo
KSBjb25zdAogICAgIHJldHVybiBtX2lzQXR0cmlidXRlOwogfQogCi1ib29sIEpTRXZlbnRMaXN0
ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikKK2Jvb2wgSlNF
dmVudExpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyKSBj
b25zdAogewogICAgIGlmIChjb25zdCBKU0V2ZW50TGlzdGVuZXIqIGpzRXZlbnRMaXN0ZW5lciA9
IEpTRXZlbnRMaXN0ZW5lcjo6Y2FzdCgmbGlzdGVuZXIpKQogICAgICAgICByZXR1cm4gbV9qc0Z1
bmN0aW9uID09IGpzRXZlbnRMaXN0ZW5lci0+bV9qc0Z1bmN0aW9uICYmIG1faXNBdHRyaWJ1dGUg
PT0ganNFdmVudExpc3RlbmVyLT5tX2lzQXR0cmlidXRlOwogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotUmVmPEpTRXZlbnRMaXN0ZW5lcj4gY3JlYXRlSlNFdmVudExpc3RlbmVyRm9yQWRkKEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU09iamVjdCYgbGlzdGVuZXIsIEpTQzo6SlNPYmplY3Qm
IHdyYXBwZXIpCi17Ci0gICAgLy8gRklYTUU6IFRoaXMgYWJzdHJhY3Rpb24gaXMgbm8gbG9uZ2Vy
IG5lZWRlZC4gSXQgd2FzIHBhcnQgb2Ygc3VwcG9ydCBmb3IgU1ZHRWxlbWVudEluc3RhbmNlLgot
ICAgIC8vIFdlIHNob3VsZCByZW1vdmUgaXQgYW5kIHNpbXBsaWZ5IHRoZSBiaW5kaW5ncyBnZW5l
cmF0aW9uIHNjcmlwdHMuCi0gICAgcmV0dXJuIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKCZsaXN0
ZW5lciwgJndyYXBwZXIsIGZhbHNlLCBjdXJyZW50V29ybGQoJnN0YXRlKSk7Ci19Ci0KIHN0YXRp
YyBpbmxpbmUgSlNDOjpKU1ZhbHVlIGV2ZW50SGFuZGxlckF0dHJpYnV0ZShFdmVudExpc3RlbmVy
KiBhYnN0cmFjdExpc3RlbmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogewog
ICAgIGlmICghYWJzdHJhY3RMaXN0ZW5lcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudExpc3RlbmVyLmgKaW5kZXggYTAzOTU1MzcxYmYxY2YzY2NhODAwMGEyNDZiNGI2NjZh
ODllMmE5NS4uZTU1YTI1YjBmNjk0M2UyMmIyODM5ZjE4OTE4M2U5Njc4YmI5MTczMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmgKQEAgLTQzLDYgKzQz
LDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSlNFdmVudExpc3Rl
bmVyKGxpc3RlbmVyLCB3cmFwcGVyLCBpc0F0dHJpYnV0ZSwgd29ybGQpKTsKICAgICB9CiAKKyAg
ICBzdGF0aWMgUmVmUHRyPEpTRXZlbnRMaXN0ZW5lcj4gY3JlYXRlKEpTQzo6SlNWYWx1ZSBsaXN0
ZW5lciwgSlNDOjpKU09iamVjdCYgd3JhcHBlciwgYm9vbCBpc0F0dHJpYnV0ZSwgRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCkKKyAgICB7CisgICAgICAgIGlmIChVTkxJS0VMWSghbGlzdGVuZXIuaXNP
YmplY3QoKSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEpTRXZlbnRMaXN0ZW5lcihKU0M6OmFzT2JqZWN0KGxpc3RlbmVyKSwgJndy
YXBwZXIsIGlzQXR0cmlidXRlLCB3b3JsZCkpOworICAgIH0KKwogICAgIHN0YXRpYyBjb25zdCBK
U0V2ZW50TGlzdGVuZXIqIGNhc3QoY29uc3QgRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIpCiAgICAg
ewogICAgICAgICByZXR1cm4gbGlzdGVuZXItPnR5cGUoKSA9PSBKU0V2ZW50TGlzdGVuZXJUeXBl
CkBAIC01Miw3ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkpTRXZlbnRMaXN0ZW5l
cigpOwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKSBv
dmVycmlkZTsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3RoZXIp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgZXZlbnQgbGlz
dGVuZXIgd2FzIGNyZWF0ZWQgZm9yIGFuIGV2ZW50IGhhbmRsZXIgYXR0cmlidXRlLCBsaWtlICJv
bmxvYWQiIG9yICJvbmNsaWNrIi4KICAgICBib29sIGlzQXR0cmlidXRlKCkgY29uc3QgeyByZXR1
cm4gbV9pc0F0dHJpYnV0ZTsgfQpAQCAtOTksOSArMTA3LDYgQEAgdm9pZCBzZXREb2N1bWVudEV2
ZW50SGFuZGxlckF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNPYmplY3QmLCBIVE1M
RWxlbWUKIEpTQzo6SlNWYWx1ZSBkb2N1bWVudEV2ZW50SGFuZGxlckF0dHJpYnV0ZShEb2N1bWVu
dCYsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKTsKIHZvaWQgc2V0RG9jdW1lbnRFdmVu
dEhhbmRsZXJBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTT2JqZWN0JiwgRG9jdW1l
bnQmLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgSlNDOjpKU1ZhbHVlKTsKIAotUmVm
PEpTRXZlbnRMaXN0ZW5lcj4gY3JlYXRlSlNFdmVudExpc3RlbmVyRm9yQWRkKEpTQzo6RXhlY1N0
YXRlJiwgSlNDOjpKU09iamVjdCYgbGlzdGVuZXIsIEpTQzo6SlNPYmplY3QmIHdyYXBwZXIpOwot
UmVmPEpTRXZlbnRMaXN0ZW5lcj4gY3JlYXRlSlNFdmVudExpc3RlbmVyRm9yUmVtb3ZlKEpTQzo6
RXhlY1N0YXRlJiwgSlNDOjpKU09iamVjdCYgbGlzdGVuZXIsIEpTQzo6SlNPYmplY3QmIHdyYXBw
ZXIpOwotCiBpbmxpbmUgSlNDOjpKU09iamVjdCogSlNFdmVudExpc3RlbmVyOjpqc0Z1bmN0aW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIGNvbnN0CiB7
CiAgICAgLy8gaW5pdGlhbGl6ZUpTRnVuY3Rpb24gY2FuIHRyaWdnZXIgY29kZSB0aGF0IGRlbGV0
ZXMgdGhpcyBldmVudCBsaXN0ZW5lcgpAQCAtMTMzLDExICsxMzgsNiBAQCBpbmxpbmUgSlNDOjpK
U09iamVjdCogSlNFdmVudExpc3RlbmVyOjpqc0Z1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdAogICAgIHJldHVybiBtX2pzRnVuY3Rpb24uZ2V0KCk7CiB9CiAKLWlubGluZSBS
ZWY8SlNFdmVudExpc3RlbmVyPiBjcmVhdGVKU0V2ZW50TGlzdGVuZXJGb3JSZW1vdmUoSlNDOjpF
eGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTT2JqZWN0JiBsaXN0ZW5lciwgSlNDOjpKU09iamVjdCYg
d3JhcHBlcikKLXsKLSAgICByZXR1cm4gY3JlYXRlSlNFdmVudExpc3RlbmVyRm9yQWRkKHN0YXRl
LCBsaXN0ZW5lciwgd3JhcHBlcik7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEpTRXZlbnRMaXN0ZW5lcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9vYmpjL09iakNFdmVudExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL09iakNFdmVudExpc3RlbmVyLmgKaW5kZXggZjNlOTg0MzdmYmFhZDc5YTJjYjUzM2RiYjgz
ODE0MzM2MWYzYTUzYS4uMjNjOTg0NTU1NGZlOThlNzA3MGY5ZjlhMWRiY2Y4N2Q1NzQzNDU2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9PYmpDRXZlbnRMaXN0ZW5l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ0V2ZW50TGlzdGVuZXIu
aApAQCAtNTIsNyArNTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgT2JqQ0V2
ZW50TGlzdGVuZXIoT2JqQ0xpc3RlbmVyKTsKICAgICAgICAgdmlydHVhbCB+T2JqQ0V2ZW50TGlz
dGVuZXIoKTsKLSAgICAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0
ZW5lciYpOworICAgICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3Rl
bmVyJikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgRXZlbnQqKTsKIAogICAgICAgICBSZXRhaW5QdHI8T2JqQ0xpc3RlbmVy
PiBtX2xpc3RlbmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9P
YmpDRXZlbnRMaXN0ZW5lci5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ0V2
ZW50TGlzdGVuZXIubW0KaW5kZXggMDk5ZDQ1NWMwY2E1YjQ3NTg3NDQ5N2VkZjI5ZTI3MTZiMWY0
MDZjMy4uMzJmZTZlNjUxYjE1MDUxYzIxMzIzYzc5YzYwMzk0OGIyNTQwYTQwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9PYmpDRXZlbnRMaXN0ZW5lci5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL09iakNFdmVudExpc3RlbmVyLm1tCkBAIC03
OSw3ICs3OSw3IEBAIHZvaWQgT2JqQ0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBFdmVudCogZXZlbnQpCiAgICAgW2xpc3RlbmVyIGhhbmRsZUV2ZW50
OmtpdChldmVudCldOwogfQogCi1ib29sIE9iakNFdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KGNv
bnN0IEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyKQorYm9vbCBPYmpDRXZlbnRMaXN0ZW5lcjo6b3Bl
cmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikgY29uc3QKIHsKICAgICBpZiAo
Y29uc3QgT2JqQ0V2ZW50TGlzdGVuZXIqIG9iakNFdmVudExpc3RlbmVyID0gT2JqQ0V2ZW50TGlz
dGVuZXI6OmNhc3QoJmxpc3RlbmVyKSkKICAgICAgICAgcmV0dXJuIG1fbGlzdGVuZXIgPT0gb2Jq
Q0V2ZW50TGlzdGVuZXItPm1fbGlzdGVuZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDkyMTJiNzE5YzVhNjlhZGRlMDJl
ZTQ0NWI1MjJkMjBhMTU0ZmFiNTQuLjBkOTE4N2M3MTA1ZWJmMzdkZDRjMWUzNjAyNTQ4YTRlZWU4
YzE5ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCkBAIC0xNDMsMjYgKzE0Myw2IEBAIHN1YiBFdmVudEhhbmRsZXJBdHRyaWJ1
dGVFdmVudE5hbWUKICAgICByZXR1cm4gImV2ZW50TmFtZXMoKS4ke2V2ZW50VHlwZX1FdmVudCI7
CiB9CiAKLXN1YiBHZW5lcmF0ZUV2ZW50TGlzdGVuZXJDYWxsCi17Ci0gICAgbXkgJGZ1bmN0aW9u
TmFtZSA9IHNoaWZ0OwotICAgIG15ICRzdWZmaXggPSB1Y2ZpcnN0ICRmdW5jdGlvbk5hbWU7Ci0g
ICAgbXkgJHBhc3NSZWZQdHJIYW5kbGluZyA9ICgkZnVuY3Rpb25OYW1lIGVxICJhZGQiKSA/ICIi
IDogIi5wdHIoKSI7Ci0KLSAgICAkaW1wbEluY2x1ZGVzeyJKU0V2ZW50TGlzdGVuZXIuaCJ9ID0g
MTsKLQotICAgIG15IEBHZW5lcmF0ZUV2ZW50TGlzdGVuZXJJbXBsID0gKCk7Ci0KLSAgICBwdXNo
KEBHZW5lcmF0ZUV2ZW50TGlzdGVuZXJJbXBsLCA8PEVORCk7Ci0gICAgSlNWYWx1ZSBsaXN0ZW5l
ciA9IHN0YXRlLT5hcmd1bWVudCgxKTsKLSAgICBpZiAoVU5MSUtFTFkoIWxpc3RlbmVyLmlzT2Jq
ZWN0KCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwot
ICAgIGltcGwuJHtmdW5jdGlvbk5hbWV9RXZlbnRMaXN0ZW5lcihzdGF0ZS0+YXJndW1lbnQoMCku
dG9TdHJpbmcoc3RhdGUpLT50b0F0b21pY1N0cmluZyhzdGF0ZSksIGNyZWF0ZUpTRXZlbnRMaXN0
ZW5lckZvciRzdWZmaXgoKnN0YXRlLCAqYXNPYmplY3QobGlzdGVuZXIpLCAqY2FzdGVkVGhpcykk
cGFzc1JlZlB0ckhhbmRsaW5nLCBzdGF0ZS0+YXJndW1lbnQoMikudG9Cb29sZWFuKHN0YXRlKSk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLUVORAotICAgIHJl
dHVybiBAR2VuZXJhdGVFdmVudExpc3RlbmVySW1wbDsKLX0KLQogc3ViIEdldFBhcmVudENsYXNz
TmFtZQogewogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKQEAgLTMyMjAsMzAgKzMyMDAsMjQg
QEAgRU5ECiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG4iKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICMgRm9yIGNvbXBhdGliaWxpdHkg
d2l0aCBsZWdhY3kgY29udGVudCwgdGhlIEV2ZW50TGlzdGVuZXIgY2FsbHMgYXJlIGdlbmVyYXRl
ZCB3aXRob3V0IEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjay4KLSAgICAgICAgICAgICAgICAg
ICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lIGVxICJhZGRFdmVudExpc3RlbmVyIikg
ewotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRlRXZl
bnRMaXN0ZW5lckNhbGwoImFkZCIpKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUgZXEgInJlbW92ZUV2ZW50TGlzdGVuZXIiKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgR2VuZXJhdGVFdmVudExpc3Rl
bmVyQ2FsbCgicmVtb3ZlIikpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgICAgICAgICAgR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKFxAaW1wbENvbnRl
bnQsICRmdW5jdGlvbiwgJGludGVyZmFjZSk7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICgkcmFpc2VzRXhjZXB0aW9uV2l0aE1lc3NhZ2UpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UgZWM7
XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRyYWlzZXNFeGNlcHRpb24p
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2soXEBpbXBsQ29udGVu
dCwgJGZ1bmN0aW9uLCAkaW50ZXJmYWNlKTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tTZWN1cml0
eUZvck5vZGUifSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIGlmICghc2hvdWxkQWxsb3dBY2Nlc3NUb05vZGUoc3RhdGUsIGltcGwuIiAuICRm
dW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lIC4gIigiIC4gKCRyYWlzZXNFeGNlcHRpb24gPyAiZWMi
IDogIiIpIC4iKSkpXG4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7XG4iKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU0RPTUJpbmRpbmcu
aCJ9ID0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
aWYgKCRyYWlzZXNFeGNlcHRpb25XaXRoTWVzc2FnZSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlIGVjO1xu
Iik7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRyYWlzZXNFeGNlcHRpb24pIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwO1xuIik7CisgICAgICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAg
ICAgICAgICAgbXkgJG51bVBhcmFtZXRlcnMgPSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc307Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBteSAoJGZ1bmN0aW9uU3RyaW5nLCAkZHVtbXkpID0gR2Vu
ZXJhdGVQYXJhbWV0ZXJzQ2hlY2soXEBpbXBsQ29udGVudCwgJGZ1bmN0aW9uLCAkaW50ZXJmYWNl
LCAkbnVtUGFyYW1ldGVycywgJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lLCAkc3ZnUHJvcGVy
dHlUeXBlLCAkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUsICRzdmdMaXN0UHJvcGVydHlU
eXBlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlSW1wbGVtZW50YXRpb25GdW5j
dGlvbkNhbGwoJGZ1bmN0aW9uLCAkZnVuY3Rpb25TdHJpbmcsICIgICAgIiwgJHN2Z1Byb3BlcnR5
VHlwZSwgJGludGVyZmFjZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrU2VjdXJpdHlGb3JOb2RlIn0pIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghc2hv
dWxkQWxsb3dBY2Nlc3NUb05vZGUoc3RhdGUsIGltcGwuIiAuICRmdW5jdGlvbi0+c2lnbmF0dXJl
LT5uYW1lIC4gIigiIC4gKCRyYWlzZXNFeGNlcHRpb24gPyAiZWMiIDogIiIpIC4iKSkpXG4iKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgJGltcGxJbmNsdWRlc3siSlNET01CaW5kaW5nLmgifSA9IDE7CiAgICAgICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgICAgICBteSAkbnVtUGFyYW1ldGVycyA9IEB7JGZ1bmN0
aW9uLT5wYXJhbWV0ZXJzfTsKKyAgICAgICAgICAgICAgICAgICAgbXkgKCRmdW5jdGlvblN0cmlu
ZywgJGR1bW15KSA9IEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKFxAaW1wbENvbnRlbnQsICRmdW5j
dGlvbiwgJGludGVyZmFjZSwgJG51bVBhcmFtZXRlcnMsICRmdW5jdGlvbkltcGxlbWVudGF0aW9u
TmFtZSwgJHN2Z1Byb3BlcnR5VHlwZSwgJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlLCAk
c3ZnTGlzdFByb3BlcnR5VHlwZSk7CisgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb25GdW5jdGlvbkNhbGwoJGZ1bmN0aW9uLCAkZnVuY3Rpb25TdHJpbmcsICIgICAgIiwg
JHN2Z1Byb3BlcnR5VHlwZSwgJGludGVyZmFjZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQogCkBAIC00NDQyLDYgKzQ0MTYsOSBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZlCiAKICAg
ICBBZGRUb0ltcGxJbmNsdWRlcygiSlMkdHlwZS5oIiwgJGNvbmRpdGlvbmFsKTsKIAorICAgICMg
RklYTUU6IEV2ZW50TGlzdGVuZXIgc2hvdWxkIGJlIGEgY2FsbGJhY2sgaW50ZXJmYWNlLgorICAg
IHJldHVybiAiSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoJHZhbHVlLCAqY2FzdGVkVGhpcywgZmFs
c2UsIGN1cnJlbnRXb3JsZChzdGF0ZSkpIiBpZiAkdHlwZSBlcSAiRXZlbnRMaXN0ZW5lciI7CisK
ICAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVzID0gJGNvZGVHZW5lcmF0b3ItPmdldEludGVyZmFj
ZUV4dGVuZGVkQXR0cmlidXRlc0Zyb21OYW1lKCR0eXBlKTsKICAgICByZXR1cm4gKCJKUyR7dHlw
ZX06OnRvV3JhcHBlZCgqc3RhdGUsICR2YWx1ZSkiLCAxKSBpZiAkZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkpTQ3VzdG9tVG9OYXRpdmVPYmplY3QifTsKICAgICByZXR1cm4gKCJKUyR7dHlwZX06OnRv
V3JhcHBlZCgkdmFsdWUpIiwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IDI5N2Y5ZGZjZTFkNzE5YjUyMmFk
NzVhMDM4NWQ5M2MxZDNjNmM5YzguLjAxZmJhZmFiN2Q0ZWMyYmY5Y2Q4NDhhYjIxMzNmNjcyOGFl
NTljMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwCkBAIC00NDMwLDEwICs0NDMwLDE4IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BZGRFdmVudExpc3RlbmVy
KEV4ZWNTdGF0CiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iaiIsICJhZGRFdmVudExpc3RlbmVyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIGxpc3RlbmVyID0gc3RhdGUtPmFyZ3VtZW50
KDEpOwotICAgIGlmIChVTkxJS0VMWSghbGlzdGVuZXIuaXNPYmplY3QoKSkpCisgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAg
ICBhdXRvIHR5cGUgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoc3RhdGUpOworICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIGF1dG8gbGlzdGVuZXIgPSBKU0V2ZW50
TGlzdGVuZXI6OmNyZWF0ZShzdGF0ZS0+YXJndW1lbnQoMSksICpjYXN0ZWRUaGlzLCBmYWxzZSwg
Y3VycmVudFdvcmxkKHN0YXRlKSk7CisgICAgaWYgKFVOTElLRUxZKCFsaXN0ZW5lcikpCisgICAg
ICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgMSwgImxpc3RlbmVyIiwg
IlRlc3RPYmoiLCAiYWRkRXZlbnRMaXN0ZW5lciIsICJFdmVudExpc3RlbmVyIik7CisgICAgYXV0
byB1c2VDYXB0dXJlID0gc3RhdGUtPmFyZ3VtZW50KDIpLnRvQm9vbGVhbihzdGF0ZSk7CisgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgaW1wbC5hZGRFdmVudExpc3RlbmVyKHN0
YXRlLT5hcmd1bWVudCgwKS50b1N0cmluZyhzdGF0ZSktPnRvQXRvbWljU3RyaW5nKHN0YXRlKSwg
Y3JlYXRlSlNFdmVudExpc3RlbmVyRm9yQWRkKCpzdGF0ZSwgKmFzT2JqZWN0KGxpc3RlbmVyKSwg
KmNhc3RlZFRoaXMpLCBzdGF0ZS0+YXJndW1lbnQoMikudG9Cb29sZWFuKHN0YXRlKSk7CisgICAg
aW1wbC5hZGRFdmVudExpc3RlbmVyKFdURk1vdmUodHlwZSksICpsaXN0ZW5lciwgV1RGTW92ZSh1
c2VDYXB0dXJlKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIApAQCAtNDQ0NSwxMCArNDQ1MywxOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZlbnRMaXN0ZW5lcihFeGVjUwogICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAicmVtb3Zl
RXZlbnRMaXN0ZW5lciIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7Ci0gICAgSlNWYWx1ZSBsaXN0ZW5lciA9IHN0YXRlLT5hcmd1bWVudCgxKTsKLSAgICBp
ZiAoVU5MSUtFTFkoIWxpc3RlbmVyLmlzT2JqZWN0KCkpKQorICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgYXV0byB0eXBl
ID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKHN0YXRlKTsKKyAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKKyAgICBhdXRvIGxpc3RlbmVyID0gSlNFdmVudExpc3RlbmVyOjpj
cmVhdGUoc3RhdGUtPmFyZ3VtZW50KDEpLCAqY2FzdGVkVGhpcywgZmFsc2UsIGN1cnJlbnRXb3Js
ZChzdGF0ZSkpOworICAgIGlmIChVTkxJS0VMWSghbGlzdGVuZXIpKQorICAgICAgICByZXR1cm4g
dGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDEsICJsaXN0ZW5lciIsICJUZXN0T2JqIiwg
InJlbW92ZUV2ZW50TGlzdGVuZXIiLCAiRXZlbnRMaXN0ZW5lciIpOworICAgIGF1dG8gdXNlQ2Fw
dHVyZSA9IHN0YXRlLT5hcmd1bWVudCgyKS50b0Jvb2xlYW4oc3RhdGUpOworICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGltcGwucmVtb3ZlRXZlbnRMaXN0ZW5lcihzdGF0ZS0+
YXJndW1lbnQoMCkudG9TdHJpbmcoc3RhdGUpLT50b0F0b21pY1N0cmluZyhzdGF0ZSksIGNyZWF0
ZUpTRXZlbnRMaXN0ZW5lckZvclJlbW92ZSgqc3RhdGUsICphc09iamVjdChsaXN0ZW5lciksICpj
YXN0ZWRUaGlzKS5wdHIoKSwgc3RhdGUtPmFyZ3VtZW50KDIpLnRvQm9vbGVhbihzdGF0ZSkpOwor
ICAgIGltcGwucmVtb3ZlRXZlbnRMaXN0ZW5lcihXVEZNb3ZlKHR5cGUpLCAqbGlzdGVuZXIsIFdU
Rk1vdmUodXNlQ2FwdHVyZSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5oCmluZGV4IGJiNGY5ZjAyZGVh
ZDVlZDMxM2NlNzY0MDZhNmQxOWVkOGM4NmY2ZDEuLjIyNDM1Mjk1NTlkODMwMzM3NTRmYjBlNzJi
ZGRjNjRjOGM5NTNhNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3Rl
bmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaApAQCAtNDgsNyAr
NDgsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHZpcnR1YWwgfkV2ZW50TGlzdGVuZXIoKSB7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJikgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBFdmVudCopID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgd2FzQ3JlYXRlZEZyb21NYXJrdXAo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRMaXN0ZW5lck1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5l
ck1hcC5jcHAKaW5kZXggZjE5N2MyMDYwMTFjOGJhYTQ4ZDMwODFkZGZiYzIwMWEwNWUzODkwOC4u
YjA0ZTEyMTNhNTVjYjY1YzJmMmU1MjM4OWVlNDY0ZDdmODQ1ZWVkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcApAQCAtOTUsOSArOTUsOSBAQCBWZWN0b3I8QXRvbWlj
U3RyaW5nPiBFdmVudExpc3RlbmVyTWFwOjpldmVudFR5cGVzKCkgY29uc3QKICAgICByZXR1cm4g
dHlwZXM7CiB9CiAKLXN0YXRpYyBib29sIGFkZExpc3RlbmVyVG9WZWN0b3IoRXZlbnRMaXN0ZW5l
clZlY3RvciogdmVjdG9yLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBib29s
IHVzZUNhcHR1cmUpCitzdGF0aWMgYm9vbCBhZGRMaXN0ZW5lclRvVmVjdG9yKEV2ZW50TGlzdGVu
ZXJWZWN0b3IqIHZlY3RvciwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNl
Q2FwdHVyZSkKIHsKLSAgICBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciByZWdpc3RlcmVkTGlzdGVu
ZXIobGlzdGVuZXIsIHVzZUNhcHR1cmUpOworICAgIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyIHJl
Z2lzdGVyZWRMaXN0ZW5lcihXVEZNb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiAKICAgICBp
ZiAodmVjdG9yLT5maW5kKHJlZ2lzdGVyZWRMaXN0ZW5lcikgIT0gbm90Rm91bmQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsgLy8gRHVwbGljYXRlIGxpc3RlbmVyLgpAQCAtMTA2LDIwICsxMDYsMjAg
QEAgc3RhdGljIGJvb2wgYWRkTGlzdGVuZXJUb1ZlY3RvcihFdmVudExpc3RlbmVyVmVjdG9yKiB2
ZWN0b3IsIFBhc3NSZWZQdHI8RXZlbnRMaXMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBF
dmVudExpc3RlbmVyTWFwOjphZGQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NS
ZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgRXZl
bnRMaXN0ZW5lck1hcDo6YWRkKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZl
bnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIGFzc2VydE5v
QWN0aXZlSXRlcmF0b3JzKCk7CiAKICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9lbnRyaWVzKSB7
CiAgICAgICAgIGlmIChlbnRyeS5maXJzdCA9PSBldmVudFR5cGUpCi0gICAgICAgICAgICByZXR1
cm4gYWRkTGlzdGVuZXJUb1ZlY3RvcihlbnRyeS5zZWNvbmQuZ2V0KCksIGxpc3RlbmVyLCB1c2VD
YXB0dXJlKTsKKyAgICAgICAgICAgIHJldHVybiBhZGRMaXN0ZW5lclRvVmVjdG9yKGVudHJ5LnNl
Y29uZC5nZXQoKSwgV1RGTW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOwogICAgIH0KIAogICAg
IG1fZW50cmllcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoZXZlbnRUeXBlLCBzdGQ6Om1ha2VfdW5p
cXVlPEV2ZW50TGlzdGVuZXJWZWN0b3I+KCkpKTsKLSAgICByZXR1cm4gYWRkTGlzdGVuZXJUb1Zl
Y3RvcihtX2VudHJpZXMubGFzdCgpLnNlY29uZC5nZXQoKSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUp
OworICAgIHJldHVybiBhZGRMaXN0ZW5lclRvVmVjdG9yKG1fZW50cmllcy5sYXN0KCkuc2Vjb25k
LmdldCgpLCBXVEZNb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiB9CiAKLXN0YXRpYyBib29s
IHJlbW92ZUxpc3RlbmVyRnJvbVZlY3RvcihFdmVudExpc3RlbmVyVmVjdG9yKiBsaXN0ZW5lclZl
Y3RvciwgRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSwgc2l6ZV90JiBp
bmRleE9mUmVtb3ZlZExpc3RlbmVyKQorc3RhdGljIGJvb2wgcmVtb3ZlTGlzdGVuZXJGcm9tVmVj
dG9yKEV2ZW50TGlzdGVuZXJWZWN0b3IqIGxpc3RlbmVyVmVjdG9yLCBFdmVudExpc3RlbmVyJiBs
aXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlLCBzaXplX3QmIGluZGV4T2ZSZW1vdmVkTGlzdGVuZXIp
CiB7CiAgICAgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIgcmVnaXN0ZXJlZExpc3RlbmVyKGxpc3Rl
bmVyLCB1c2VDYXB0dXJlKTsKICAgICBpbmRleE9mUmVtb3ZlZExpc3RlbmVyID0gbGlzdGVuZXJW
ZWN0b3ItPmZpbmQocmVnaXN0ZXJlZExpc3RlbmVyKTsKQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0
aWMgYm9vbCByZW1vdmVMaXN0ZW5lckZyb21WZWN0b3IoRXZlbnRMaXN0ZW5lclZlY3RvciogbGlz
dGVuZXJWZWN0b3IsIEV2ZW50TAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEV2ZW50TGlz
dGVuZXJNYXA6OnJlbW92ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0
ZW5lciogbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSwgc2l6ZV90JiBpbmRleE9mUmVtb3ZlZExp
c3RlbmVyKQorYm9vbCBFdmVudExpc3RlbmVyTWFwOjpyZW1vdmUoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUsIHNp
emVfdCYgaW5kZXhPZlJlbW92ZWRMaXN0ZW5lcikKIHsKICAgICBhc3NlcnROb0FjdGl2ZUl0ZXJh
dG9ycygpOwogCkBAIC0xODUsNyArMTg1LDcgQEAgc3RhdGljIHZvaWQgY29weUxpc3RlbmVyc05v
dENyZWF0ZWRGcm9tTWFya3VwVG9UYXJnZXQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFQKICAg
ICAgICAgLy8gRXZlbnQgbGlzdGVuZXJzIGNyZWF0ZWQgZnJvbSBtYXJrdXAgaGF2ZSBhbHJlYWR5
IGJlZW4gdHJhbnNmZXJlZCB0byB0aGUgc2hhZG93IHRyZWUgZHVyaW5nIGNsb25pbmcuCiAgICAg
ICAgIGlmIChsaXN0ZW5lci5saXN0ZW5lci0+d2FzQ3JlYXRlZEZyb21NYXJrdXAoKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICB0YXJnZXQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRU
eXBlLCBsaXN0ZW5lci5saXN0ZW5lci5jb3B5UmVmKCksIGxpc3RlbmVyLnVzZUNhcHR1cmUpOwor
ICAgICAgICB0YXJnZXQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCAqbGlzdGVuZXIubGlz
dGVuZXIsIGxpc3RlbmVyLnVzZUNhcHR1cmUpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudExpc3RlbmVyTWFwLmgKaW5kZXggODlmZjY2NjhkNzJmZjkwMWQ2ODdkM2I3N2ZiMzQxYjNj
NmI4MTdmMC4uMWVmZTZhYmY4Y2VlZDJkOTYzYWM3NjMxOTFjMGEyYThmZjliNjMzMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5oCkBAIC01NCw4ICs1NCw4IEBAIHB1YmxpYzoK
ICAgICBib29sIGNvbnRhaW5zQ2FwdHVyaW5nKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
KSBjb25zdDsKIAogICAgIHZvaWQgY2xlYXIoKTsKLSAgICBib29sIGFkZChjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0
dXJlKTsKLSAgICBib29sIHJlbW92ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZl
bnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSwgc2l6ZV90JiBpbmRleE9mUmVtb3ZlZExpc3Rl
bmVyKTsKKyAgICBib29sIGFkZChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2
ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSk7CisgICAgYm9vbCByZW1vdmUoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBib29sIHVzZUNhcHR1cmUs
IHNpemVfdCYgaW5kZXhPZlJlbW92ZWRMaXN0ZW5lcik7CiAgICAgRXZlbnRMaXN0ZW5lclZlY3Rv
ciogZmluZChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7CiAgICAgVmVjdG9yPEF0b21p
Y1N0cmluZz4gZXZlbnRUeXBlcygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNw
cAppbmRleCBlYzIxMDk4NjdhYzMwZDBjMzFiZTY5MjYxNjMxYzMyNTE2ZmVhM2NlLi5kMjQ4Mzg1
OTNkMTdmNmFiNTZkNmQ5MDk5NTg1OTI5MDU2YjBlMDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRh
cmdldC5jcHAKQEAgLTc1LDEyICs3NSwyOCBAQCBib29sIEV2ZW50VGFyZ2V0Ojppc01lc3NhZ2VQ
b3J0KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgRXZlbnRUYXJnZXQ6OmFk
ZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVu
dExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIEV2ZW50VGFyZ2V0
OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZl
bnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIHJldHVybiBl
bnN1cmVFdmVudFRhcmdldERhdGEoKS5ldmVudExpc3RlbmVyTWFwLmFkZChldmVudFR5cGUsIFdU
Rk1vdmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKIH0KIAotYm9vbCBFdmVudFRhcmdldDo6cmVt
b3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0
ZW5lciogbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK3ZvaWQgRXZlbnRUYXJnZXQ6OmFkZEV2
ZW50TGlzdGVuZXJGb3JCaW5kaW5ncyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVm
UHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK3sKKyAgICAv
LyBGSVhNRTogbGlzdGVuZXIgaXMgbm90IHN1cHBvc2VkIHRvIGJlIG51bGxhYmxlLgorICAgIGlm
ICghbGlzdGVuZXIpCisgICAgICAgIHJldHVybjsKKyAgICBhZGRFdmVudExpc3RlbmVyKGV2ZW50
VHlwZSwgbGlzdGVuZXIucmVsZWFzZU5vbk51bGwoKSwgdXNlQ2FwdHVyZSk7Cit9CisKK3ZvaWQg
RXZlbnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXJGb3JCaW5kaW5ncyhjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wg
dXNlQ2FwdHVyZSkKK3sKKyAgICAvLyBGSVhNRTogbGlzdGVuZXIgaXMgbm90IHN1cHBvc2VkIHRv
IGJlIG51bGxhYmxlLgorICAgIGlmICghbGlzdGVuZXIpCisgICAgICAgIHJldHVybjsKKyAgICBy
ZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgKmxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKK30K
KworYm9vbCBFdmVudFRhcmdldDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkK
IHsKICAgICBFdmVudFRhcmdldERhdGEqIGQgPSBldmVudFRhcmdldERhdGEoKTsKICAgICBpZiAo
IWQpCkBAIC0xMTAsMTIgKzEyNiwxMiBAQCBib29sIEV2ZW50VGFyZ2V0OjpyZW1vdmVFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbgogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIEV2ZW50VGFyZ2V0OjpzZXRBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVu
ZXI+IGxpc3RlbmVyKQorYm9vbCBFdmVudFRhcmdldDo6c2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYg
bGlzdGVuZXIpCiB7CiAgICAgY2xlYXJBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSk7
CiAgICAgaWYgKCFsaXN0ZW5lcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBh
ZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIGZhbHNlKTsKKyAgICByZXR1cm4g
YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLnJlbGVhc2VOb25OdWxsKCksIGZh
bHNlKTsKIH0KIAogRXZlbnRMaXN0ZW5lciogRXZlbnRUYXJnZXQ6OmdldEF0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpCkBAIC0xMzIsNyArMTQ4LDcg
QEAgYm9vbCBFdmVudFRhcmdldDo6Y2xlYXJBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlKQogICAgIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gZ2V0
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUpOwogICAgIGlmICghbGlzdGVuZXIpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gcmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVu
dFR5cGUsIGxpc3RlbmVyLCBmYWxzZSk7CisgICAgcmV0dXJuIHJlbW92ZUV2ZW50TGlzdGVuZXIo
ZXZlbnRUeXBlLCAqbGlzdGVuZXIsIGZhbHNlKTsKIH0KIAogYm9vbCBFdmVudFRhcmdldDo6ZGlz
cGF0Y2hFdmVudEZvckJpbmRpbmdzKEV2ZW50KiBldmVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldC5oCmluZGV4IGY5YjBmMjExNzRmNTQxOGQ1MWY3ZDU0MzgxYjAx
Yzg3ODIxMmVhYWYuLjFiMWRlZDE5YTVkOWNhNTY2NGU1MGE5OTlkNmMzZWZiOTJhN2VlOTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCkBAIC0xMjEsMTUgKzEyMSwxOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBET01XaW5kb3cqIHRvRE9NV2luZG93KCk7CiAgICAgdmlydHVhbCBib29sIGlz
TWVzc2FnZVBvcnQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwg
Ym9vbCB1c2VDYXB0dXJlKTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2Fw
dHVyZSk7CisgICAgdm9pZCBhZGRFdmVudExpc3RlbmVyRm9yQmluZGluZ3MoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1
cmUpOworICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lckZvckJpbmRpbmdzKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0
dXJlKTsKKyAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSk7Cisg
ICAgdmlydHVhbCBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBib29sIHVzZUNhcHR1cmUpOworCiAgICAgdmlydHVh
bCB2b2lkIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCk7CiAgICAgdmlydHVhbCBib29sIGRpc3Bh
dGNoRXZlbnQoRXZlbnQmKTsKICAgICBib29sIGRpc3BhdGNoRXZlbnRGb3JCaW5kaW5ncyhFdmVu
dCosIEV4Y2VwdGlvbkNvZGUmKTsgLy8gRE9NIEFQSQogICAgIHZpcnR1YWwgdm9pZCB1bmNhdWdo
dEV4Y2VwdGlvbkluRXZlbnRIYW5kbGVyKCk7CiAKICAgICAvLyBVc2VkIGZvciBsZWdhY3kgIm9u
RXZlbnQiIGF0dHJpYnV0ZSBBUElzLgotICAgIGJvb2wgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVy
Pik7CisgICAgYm9vbCBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJik7CiAgICAgYm9vbCBjbGVhckF0
dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpOwogICAg
IEV2ZW50TGlzdGVuZXIqIGdldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRU
YXJnZXQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmlkbAppbmRleCA1OTNl
NGMwNjg2YTA4YjkwYzEzZWJlYmY2Y2VjMjgyZjRiNzZlODVkLi5jNTk0NTg5NmUwMGE2Njc1NjM5
MDM5YTA4NjFmZjY2NTc1ZWRiZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5pZGwKQEAg
LTI1LDggKzI1LDEwIEBACiAgICAgSlNDdXN0b21Ub05hdGl2ZU9iamVjdCwKICAgICBPYmpDUHJv
dG9jb2wsCiBdIGludGVyZmFjZSBFdmVudFRhcmdldCB7Ci0gICAgW09iakNMZWdhY3lVbm5hbWVk
UGFyYW1ldGVyc10gdm9pZCBhZGRFdmVudExpc3RlbmVyKERPTVN0cmluZyB0eXBlLCBFdmVudExp
c3RlbmVyPyBsaXN0ZW5lciwgb3B0aW9uYWwgYm9vbGVhbiB1c2VDYXB0dXJlID0gZmFsc2UpOwot
ICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRlcnNdIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5l
cihET01TdHJpbmcgdHlwZSwgRXZlbnRMaXN0ZW5lcj8gbGlzdGVuZXIsIG9wdGlvbmFsIGJvb2xl
YW4gdXNlQ2FwdHVyZSA9IGZhbHNlKTsKKyAgICAvLyBGSVhNRTogVGhlICd0eXBlJyBhbmQgJ2xp
c3RlbmVyJyBwYXJhbWV0ZXJzIHNob3VsZCBub3QgYmUgb3B0aW9uYWwuCisgICAgW09iakNMZWdh
Y3lVbm5hbWVkUGFyYW1ldGVycywgSW1wbGVtZW50ZWRBcz1hZGRFdmVudExpc3RlbmVyRm9yQmlu
ZGluZ3NdIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihbQXRvbWljU3RyaW5nXSBvcHRpb25hbCBET01T
dHJpbmcgdHlwZSA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCBFdmVudExpc3RlbmVyPyBsaXN0ZW5l
ciwgb3B0aW9uYWwgYm9vbGVhbiB1c2VDYXB0dXJlID0gZmFsc2UpOworICAgIFtPYmpDTGVnYWN5
VW5uYW1lZFBhcmFtZXRlcnMsIEltcGxlbWVudGVkQXM9cmVtb3ZlRXZlbnRMaXN0ZW5lckZvckJp
bmRpbmdzXSB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoW0F0b21pY1N0cmluZ10gb3B0aW9uYWwg
RE9NU3RyaW5nIHR5cGUgPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgRXZlbnRMaXN0ZW5lcj8gbGlz
dGVuZXIsIG9wdGlvbmFsIGJvb2xlYW4gdXNlQ2FwdHVyZSA9IGZhbHNlKTsKKwogICAgIC8vIEZJ
WE1FOiBldmVudCBzaG91bGQgbm90IGJlIG51bGxhYmxlLgogICAgIFtJbXBsZW1lbnRlZEFzPWRp
c3BhdGNoRXZlbnRGb3JCaW5kaW5ncywgUmFpc2VzRXhjZXB0aW9uXSBib29sZWFuIGRpc3BhdGNo
RXZlbnQoRXZlbnQ/IGV2ZW50KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZVBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAppbmRl
eCA1YTg0YTQ0YTIwOGFiZWJlNDEzYjk5ZjExZTZmNTAxMTlkYTQwMmI4Li4zZDc4NDdjYWVkYjI5
MjBlM2IyNjRiNjUyYmM1NGNiYzM0NzhhM2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZVBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5j
cHAKQEAgLTIyMSw5ICsyMjEsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRBcnJheT4g
TWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoU2NyaXB0RXhlY3V0aW9uQ29udAogICAgIHJldHVy
biBwb3J0QXJyYXk7CiB9CiAKLWJvb2wgTWVzc2FnZVBvcnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3Rl
bmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIE1lc3NhZ2VQb3J0OjphZGRFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0
ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewotICAgIGlmIChsaXN0ZW5lciAmJiBsaXN0ZW5lci0+
aXNBdHRyaWJ1dGUoKSAmJiBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLm1lc3NhZ2VFdmVudCkK
KyAgICBpZiAobGlzdGVuZXItPmlzQXR0cmlidXRlKCkgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFt
ZXMoKS5tZXNzYWdlRXZlbnQpCiAgICAgICAgIHN0YXJ0KCk7CiAgICAgcmV0dXJuIEV2ZW50VGFy
Z2V0V2l0aElubGluZURhdGE6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEZNb3ZlKGxp
c3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZVBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCmluZGV4IGJh
ZTAxZDViOTUxZGQ3ODIzN2FmZGY4NzIzMTRmODI0ZDE1N2IxNmUuLjljYTEyNGY0YTJlZmM5ODFk
ZjU1NjNiYmJiNzUwNDZmNzljZmNkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9N
ZXNzYWdlUG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCkBAIC05
Miw3ICs5Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gQSBwb3J0IGdldHMg
bmV1dGVyZWQgd2hlbiBpdCBpcyB0cmFuc2ZlcnJlZCB0byBhIG5ldyBvd25lciB2aWEgcG9zdE1l
c3NhZ2UoKS4KICAgICAgICAgYm9vbCBpc05ldXRlcmVkKCkgeyByZXR1cm4gIW1fZW50YW5nbGVk
Q2hhbm5lbDsgfQogCi0gICAgICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVy
ZSkgb3ZlcnJpZGU7CisgICAgICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkg
b3ZlcnJpZGU7CiAKICAgICBwcml2YXRlOgogICAgICAgICBleHBsaWNpdCBNZXNzYWdlUG9ydChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggNGM0NzUxMDRiNzIy
NjAyYTM5Mzg4YmUxMjM5YThlNDYzN2Y1YmI1ZC4uZDBjNWQ0YzQyZWFjM2UzNmJmYmY4MDU5Mzc5
MTZjZTg3MmEzZjc3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMTk2MCw3ICsxOTYwLDcgQEAgdm9p
ZCBOb2RlOjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpCiAgICAg
fQogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgdHJ5QWRkRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJn
ZXROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVu
ZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCB0cnlB
ZGRFdmVudExpc3RlbmVyKE5vZGUqIHRhcmdldE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQog
ewogICAgIGlmICghdGFyZ2V0Tm9kZS0+RXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIoZXZl
bnRUeXBlLCBsaXN0ZW5lci5jb3B5UmVmKCksIHVzZUNhcHR1cmUpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0xOTk2LDEyICsxOTk2LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB0cnlBZGRF
dmVudExpc3RlbmVyKE5vZGUqIHRhcmdldE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIs
IGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wg
dXNlQ2FwdHVyZSkKIHsKICAgICByZXR1cm4gdHJ5QWRkRXZlbnRMaXN0ZW5lcih0aGlzLCBldmVu
dFR5cGUsIFdURk1vdmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKIH0KIAotc3RhdGljIGlubGlu
ZSBib29sIHRyeVJlbW92ZUV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIHVzZUNh
cHR1cmUpCitzdGF0aWMgaW5saW5lIGJvb2wgdHJ5UmVtb3ZlRXZlbnRMaXN0ZW5lcihOb2RlKiB0
YXJnZXROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYg
bGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICBpZiAoIXRhcmdldE5vZGUtPkV2ZW50
VGFyZ2V0OjpyZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1
cmUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMDM3LDcgKzIwMzcsNyBAQCBzdGF0aWMg
aW5saW5lIGJvb2wgdHJ5UmVtb3ZlRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJnZXROb2RlLCBjb25z
dCBBdG9taWNTdHJpbmcmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgTm9kZTo6cmVtb3Zl
RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5l
ciogbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgTm9kZTo6cmVtb3ZlRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVu
ZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICByZXR1cm4gdHJ5UmVtb3ZlRXZlbnRMaXN0ZW5l
cih0aGlzLCBldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmlu
ZGV4IDU1N2RkY2MxMTczMTk0YThmMGRkMTk0Y2IzNmIxNzY3MGUwNGUzNDkuLjIwOGUyODhmMTc5
NzcyZGM5ZjkyMDA3NWM0MjY3YTJiNGVkZTQ1NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNTA2LDggKzUw
Niw4IEBAIHB1YmxpYzoKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVy
ZmFjZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbDsgLy8gSW1wbGVtZW50ZWQgaW4gRG9jdW1l
bnQuaAogCi0gICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlk
ZTsKLSAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgIGJv
b2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2
ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CisgICAgYm9vbCByZW1v
dmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3Rl
bmVyJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKIAogICAgIHVzaW5nIEV2ZW50VGFyZ2V0
OjpkaXNwYXRjaEV2ZW50OwogICAgIGJvb2wgZGlzcGF0Y2hFdmVudChFdmVudCYpIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaAppbmRleCAx
MjQ4M2ZhNjExODllMmVlM2Y0NDgyNjRhNjVmNTkzZTI0YzA4OWRiLi4zZjIyMjY0NDc4MjMxYjFk
YWQ1MmVhZjVjYjFmODgwMTgyMGY0ZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmVnaXN0
ZXJlZEV2ZW50TGlzdGVuZXIuaApAQCAtMzEsOCArMzEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICBjbGFzcyBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciB7CiAgICAgcHVibGljOgotICAg
ICAgICBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lcihQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxp
c3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCi0gICAgICAgICAgICA6IGxpc3RlbmVyKGxpc3RlbmVy
KQorICAgICAgICBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lcihSZWY8RXZlbnRMaXN0ZW5lcj4mJiBs
aXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorICAgICAgICAgICAgOiBsaXN0ZW5lcihXVEZNb3Zl
KGxpc3RlbmVyKSkKICAgICAgICAgICAgICwgdXNlQ2FwdHVyZSh1c2VDYXB0dXJlKQogICAgICAg
ICB7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmlu
ZGV4IDBlNDEwZmQ1NGM1M2MxMzQzOWQzMGE0ZjI2NmI4NzI1MWE1M2U3YTIuLmVmNmM5OGEzZWNk
NjM2Mzk1NDRiYTk0NDhkOTUyMDE5NzUwZGM1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcApAQCAtNTIxNiw3ICs1MjE2LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVt
ZW50OjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBldmVudCkKICAgICByZXR1cm4gSFRNTEVsZW1lbnQ6
OmRpc3BhdGNoRXZlbnQoZXZlbnQpOwogfQogCi1ib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExp
c3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIEhUTUxNZWRpYUVsZW1l
bnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZjxF
dmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgaWYgKGV2
ZW50VHlwZSAhPSBldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHlj
aGFuZ2VkRXZlbnQpCiAgICAgICAgIHJldHVybiBOb2RlOjphZGRFdmVudExpc3RlbmVyKGV2ZW50
VHlwZSwgV1RGTW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOwpAQCAtNTIzNiw3ICs1MjM2LDcg
QEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBI
VE1MTWVkaWFFbGVtZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9v
bCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQog
ewogICAgIGlmIChldmVudFR5cGUgIT0gZXZlbnROYW1lcygpLndlYmtpdHBsYXliYWNrdGFyZ2V0
YXZhaWxhYmlsaXR5Y2hhbmdlZEV2ZW50KQogICAgICAgICByZXR1cm4gTm9kZTo6cmVtb3ZlRXZl
bnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggMzcyZTBmZjExOTNkZjgzMTE3MmJjYTE3MTcy
YThjYWFiZWY2YTA1YS4uMDRkMGRiZDZkYzFjZWI4M2NmMmU1MGMyZDJjODFhMDkxYzExODQzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTM0NCw4ICszNDQsOCBA
QCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHZv
aWQgd2Via2l0U2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKCk7Ci0gICAgYm9vbCBhZGRFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5l
cj4mJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKLSAgICBib29sIHJlbW92ZUV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29s
IHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2Fw
dHVyZSkgb3ZlcnJpZGU7CisgICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVy
cmlkZTsKIAogICAgIHZvaWQgd2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2UoKSBvdmVy
cmlkZTsKICAgICBib29sIGNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKSBjb25zdCBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IDJmMzViMjli
MzliNjcyOGRlMGJhODU3NWVkNzU2ODg4M2U1NzdjZTYuLjdmZDJjN2M5ZTU3NmE5NWFiMTRmOWNk
N2JlOWJjN2EwODBlM2ZhZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VE
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcApA
QCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYpIG92ZXJyaWRlOworICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBFdmVudExpc3RlbmVyJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBoYW5kbGVF
dmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqKSBvdmVycmlkZTsKIAogICAgIElt
YWdlRG9jdW1lbnQmIG1fZG9jdW1lbnQ7CkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBJbWFnZURv
Y3VtZW50OjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpCiAgICAgICAgIC8vIFNldCB0aGUgdmll
d3BvcnQgdG8gYmUgaW4gZGV2aWNlIHBpeGVscyAocmF0aGVyIHRoYW4gdGhlIGRlZmF1bHQgb2Yg
OTgwKS4KICAgICAgICAgcHJvY2Vzc1ZpZXdwb3J0KEFTQ0lJTGl0ZXJhbCgid2lkdGg9ZGV2aWNl
LXdpZHRoIiksIFZpZXdwb3J0QXJndW1lbnRzOjpJbWFnZURvY3VtZW50KTsKICNlbHNlCi0gICAg
ICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9IEltYWdlRXZlbnRMaXN0ZW5lcjo6
Y3JlYXRlKCp0aGlzKTsKKyAgICAgICAgYXV0byBsaXN0ZW5lciA9IEltYWdlRXZlbnRMaXN0ZW5l
cjo6Y3JlYXRlKCp0aGlzKTsKICAgICAgICAgaWYgKERPTVdpbmRvdyogd2luZG93ID0gdGhpcy0+
ZG9tV2luZG93KCkpCiAgICAgICAgICAgICB3aW5kb3ctPmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6
ZSIsIGxpc3RlbmVyLmNvcHlSZWYoKSwgZmFsc2UpOwogICAgICAgICBpbWFnZUVsZW1lbnQtPmFk
ZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgV1RGTW92ZShsaXN0ZW5lciksIGZhbHNlKTsKQEAgLTQw
Nyw3ICs0MDcsNyBAQCB2b2lkIEltYWdlRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50KiBldmVudCkKICAgICB9CiB9CiAKLWJvb2wgSW1hZ2VF
dmVudExpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKQorYm9v
bCBJbWFnZUV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3Ro
ZXIpIGNvbnN0CiB7CiAgICAgLy8gQWxsIEltYWdlRXZlbnRMaXN0ZW5lciBvYmplY3RzIGNvbXBh
cmUgYXMgZXF1YWw7IE9LIHNpbmNlIHRoZXJlIGlzIG9ubHkgb25lIHBlciBkb2N1bWVudC4KICAg
ICByZXR1cm4gb3RoZXIudHlwZSgpID09IEltYWdlRXZlbnRMaXN0ZW5lclR5cGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcAppbmRleCBj
ZjdhYzRiY2ZmNzMyNGU5ZTAwMmE5YzcwNGYzMDIyZjkzMThmNjAyLi5kOTdkYTc4ZTU2MTEzNzFh
Y2I0ZDI5ZGIwMGUwZWUwYmNjNzQ3ZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAKQEAgLTUwOSwxNSArNTA5LDE1IEBAIHZvaWQg
TWVkaWFDb250cm9sc0FwcGxlOjpzaG93Q2xvc2VkQ2FwdGlvblRyYWNrTGlzdCgpCiAgICAgbV9w
YW5lbC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHMsIENT
U1ZhbHVlTm9uZSk7CiAKICAgICBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciA9IGV2ZW50TGlzdGVu
ZXIoKTsKLSAgICBtX2Nsb3NlZENhcHRpb25zQ29udGFpbmVyLT5hZGRFdmVudExpc3RlbmVyKGV2
ZW50TmFtZXMoKS53aGVlbEV2ZW50LCAmbGlzdGVuZXIsIHRydWUpOworICAgIG1fY2xvc2VkQ2Fw
dGlvbnNDb250YWluZXItPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLndoZWVsRXZlbnQs
IGxpc3RlbmVyLCB0cnVlKTsKIAogICAgIC8vIFRyYWNrIGNsaWNrIGV2ZW50cyBpbiB0aGUgY2Fw
dHVyZSBwaGFzZSBhdCB0d28gbGV2ZWxzLCBmaXJzdCBhdCB0aGUgZG9jdW1lbnQgbGV2ZWwKICAg
ICAvLyBzdWNoIHRoYXQgYSBjbGljayBvdXRzaWRlIG9mIHRoZSA8dmlkZW8+IG1heSBkaXNtaXNz
IHRoZSB0cmFjayBsaXN0LCBzZWNvbmQgYXQgdGhlCiAgICAgLy8gbWVkaWEgY29udHJvbHMgbGV2
ZWwgc3VjaCB0aGF0IGEgY2xpY2sgYW55d2hlcmUgb3V0c2lkZSBvZiB0aGUgdHJhY2sgbGlzdCBo
aWRlcyB0aGUKICAgICAvLyB0cmFjayBsaXN0LiBUaGVzZSB0d28gbGV2ZWxzIGFyZSBuZWNlc3Nh
cnkgc2luY2UgaXQgd291bGQgbm90IGJlIHBvc3NpYmxlIHRvIGdldCBhCiAgICAgLy8gcmVmZXJl
bmNlIHRvIHRoZSB0cmFjayBsaXN0IHdoZW4gaGFuZGxpbmcgdGhlIGV2ZW50IG91dHNpZGUgb2Yg
dGhlIHNoYWRvdyB0cmVlLgotICAgIGRvY3VtZW50KCkuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5h
bWVzKCkuY2xpY2tFdmVudCwgJmxpc3RlbmVyLCB0cnVlKTsKLSAgICBhZGRFdmVudExpc3RlbmVy
KGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCAmbGlzdGVuZXIsIHRydWUpOworICAgIGRvY3VtZW50
KCkuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgbGlzdGVuZXIsIHRy
dWUpOworICAgIGFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIGxpc3Rl
bmVyLCB0cnVlKTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xzQXBwbGU6OmhpZGVDbG9zZWRDYXB0
aW9uVHJhY2tMaXN0KCkKQEAgLTUzMSw5ICs1MzEsOSBAQCB2b2lkIE1lZGlhQ29udHJvbHNBcHBs
ZTo6aGlkZUNsb3NlZENhcHRpb25UcmFja0xpc3QoKQogICAgIG1fcGFuZWwtPnJlbW92ZUlubGlu
ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzKTsKIAogICAgIEV2ZW50TGlz
dGVuZXImIGxpc3RlbmVyID0gZXZlbnRMaXN0ZW5lcigpOwotICAgIG1fY2xvc2VkQ2FwdGlvbnND
b250YWluZXItPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLndoZWVsRXZlbnQsICZs
aXN0ZW5lciwgdHJ1ZSk7Ci0gICAgZG9jdW1lbnQoKS5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50
TmFtZXMoKS5jbGlja0V2ZW50LCAmbGlzdGVuZXIsIHRydWUpOwotICAgIHJlbW92ZUV2ZW50TGlz
dGVuZXIoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsICZsaXN0ZW5lciwgdHJ1ZSk7CisgICAgbV9j
bG9zZWRDYXB0aW9uc0NvbnRhaW5lci0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCku
d2hlZWxFdmVudCwgbGlzdGVuZXIsIHRydWUpOworICAgIGRvY3VtZW50KCkucmVtb3ZlRXZlbnRM
aXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgbGlzdGVuZXIsIHRydWUpOworICAgIHJl
bW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIGxpc3RlbmVyLCB0cnVl
KTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xzQXBwbGU6OnNldEZ1bGxzY3JlZW5TbGlkZXJWb2x1
bWUoKQpAQCAtNTk1LDcgKzU5NSw3IEBAIHZvaWQgTWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0
ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50CiAgICAgfQog
fQogCi1ib29sIE1lZGlhQ29udHJvbHNBcHBsZUV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0oY29u
c3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpCitib29sIE1lZGlhQ29udHJvbHNBcHBsZUV2ZW50
TGlzdGVuZXI6Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpIGNvbnN0
CiB7CiAgICAgaWYgKGNvbnN0IE1lZGlhQ29udHJvbHNBcHBsZUV2ZW50TGlzdGVuZXIqIG1lZGlh
Q29udHJvbHNBcHBsZUV2ZW50TGlzdGVuZXIgPSBNZWRpYUNvbnRyb2xzQXBwbGVFdmVudExpc3Rl
bmVyOjpjYXN0KCZsaXN0ZW5lcikpCiAgICAgICAgIHJldHVybiBtX21lZGlhQ29udHJvbHMgPT0g
bWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0ZW5lci0+bV9tZWRpYUNvbnRyb2xzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuaAppbmRleCA2OThj
YzM4OWQ5ZjJkNzIwMmJmMjQxZGNjMWJhZjczZjAzYmYwNDI5Li5mMjhkZDZiN2Y1MTQxMGIxY2Rl
ZWQ0MmM4MzNlMGNmZjkzZDFjYzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xzQXBwbGUuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICA6IDA7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVu
ZXImIG90aGVyKSBvdmVycmlkZTsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0
ZW5lciYgb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIE1lZGlhQ29udHJv
bHNBcHBsZUV2ZW50TGlzdGVuZXIoTWVkaWFDb250cm9sc0FwcGxlKiBtZWRpYUNvbnRyb2xzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dC5jcHAKaW5kZXggNDQxNTQzMjE0NDhkMTE1NDVmMjExNDIyYzFkZmQ4MDM5ZjhlNjQ3MC4uYWMw
ZWRkNDg2YWRmNGMyZGUwN2M4MmFhYWFjNmIzMTMxMDAyY2JlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC0xMTIs
NyArMTEyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+T3BlbkRhdGFiYXNlQ2FsbGJhY2so
KSB7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikg
b3ZlcnJpZGUKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3RoZXIp
IGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcyA9PSAmb3RoZXI7CiAg
ICAgfQpAQCAtMzcxLDcgKzM3MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfk9wZW5DdXJz
b3JDYWxsYmFjaygpIHsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVu
ZXImIG90aGVyKSBvdmVycmlkZQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3Rl
bmVyJiBvdGhlcikgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzID09
ICZvdGhlcjsKICAgICB9CkBAIC02NjAsNyArNjYwLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB+Q2xlYXJPYmplY3RTdG9yZUxpc3RlbmVyKCkgeyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgRXZlbnRMaXN0ZW5lciYgb3RoZXIpIG92ZXJyaWRlCisgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMgPT0gJm90aGVyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cAppbmRleCBlNzgxYjdjYzRiOTFiYWJkZjMxZmQ3ODYyYjk4ODUxNzNiYWZiZTgwLi5iNzU0MWVk
Mzg0MWM4NThiZjQwNzNiYjQ5YmYzYjljM2RiZWI5MTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwCkBAIC0xNzI0LDcgKzE3MjQsNyBAQCBib29sIERPTVdpbmRvdzo6aXNTYW1lU2VjdXJp
dHlPcmlnaW5Bc01haW5GcmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29s
IERPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jv
b2wgRE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewog
ICAgIGlmICghRXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEZNb3Zl
KGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE4Mjcs
NyArMTgyNyw3IEBAIHZvaWQgRE9NV2luZG93OjpyZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lv
bigpCiAjZW5kaWYKIH0KIAotYm9vbCBET01XaW5kb3c6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29s
IHVzZUNhcHR1cmUpCitib29sIERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wgdXNl
Q2FwdHVyZSkKIHsKICAgICBpZiAoIUV2ZW50VGFyZ2V0OjpyZW1vdmVFdmVudExpc3RlbmVyKGV2
ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCA0YjI0Yjk5ODEzNzczMjc2MzhiNjRlNjg3ZDc1ZmUy
ZmQ4ZDg3MmVlLi4wMTU4ZTE0MDY2Mjc0OGZjODk0ZjkyNTgxNGQ0NjI0ODFiZmFmNDFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmgKQEAgLTI3OSw4ICsyNzksOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICAgICAgLy8gRXZlbnRzCiAgICAgICAgIC8vIEV2ZW50VGFyZ2V0IEFQSQotICAg
ICAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwotICAg
ICAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgICAgICBi
b29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZjxF
dmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgICAgICBib29s
IHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50
TGlzdGVuZXImLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIHJlbW92
ZUFsbEV2ZW50TGlzdGVuZXJzKCkgb3ZlcnJpZGU7CiAKICAgICAgICAgdXNpbmcgRXZlbnRUYXJn
ZXQ6OmRpc3BhdGNoRXZlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaApp
bmRleCA5YjU3MzljYmE4MTY5YTA0ZmZhMTJlMTQ5MzI4YjdjMzQ1MzAwMmU5Li4wYmY0MTQ2NDgx
MWEwNDlhNTRlZjlmMjQ1ZWNiY2ZjMzMwNGU2MGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
TWVkaWFFbGVtZW50LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBoYW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
V2ViQ29yZTo6RXZlbnQqKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUZvckV2ZW50TmFtZShjb25z
dCBXVEY6OkF0b21pY1N0cmluZyYpOwotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExp
c3RlbmVyJiByaHMpIGZpbmFsIHsgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6OkV2ZW50TGlz
dGVuZXIqPih0aGlzKSA9PSAmcmhzOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50
TGlzdGVuZXImIHJocykgY29uc3QgZmluYWwgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV2Vi
Q29yZTo6RXZlbnRMaXN0ZW5lcio+KHRoaXMpID09ICZyaHM7IH0KIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcGxheSgpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGF1c2UoKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KaW5kZXggMTM2ZGRj
ZTVlZWUwOTU2NTQzYmE5M2I5OGY3YTEzOGFhOTllYjgxNS4uOGY0MDVkYmU4NTZmNGU3MWE1MDI1
YTIyYTEzMzc0ZGJmZWQzNjliNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1l
bnQubW0KQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlh
RWxlbWVudDo6c2V0TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGkKIAogICAgIGlm
IChtX21lZGlhRWxlbWVudCAmJiBtX2lzTGlzdGVuaW5nKSB7CiAgICAgICAgIGZvciAoYXV0byYg
ZXZlbnROYW1lIDogb2JzZXJ2ZWRFdmVudE5hbWVzKCkpCi0gICAgICAgICAgICBtX21lZGlhRWxl
bWVudC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIHRoaXMsIGZhbHNlKTsKKyAgICAg
ICAgICAgIG1fbWVkaWFFbGVtZW50LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgKnRo
aXMsIGZhbHNlKTsKICAgICB9CiAgICAgbV9pc0xpc3RlbmluZyA9IGZhbHNlOwogCkBAIC0xMDAs
NyArMTAwLDcgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6c2V0
TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgZm9yIChhdXRvJiBldmVudE5hbWUgOiBvYnNlcnZlZEV2ZW50TmFtZXMoKSkKLSAgICAgICAg
bV9tZWRpYUVsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLCBmYWxzZSk7
CisgICAgICAgIG1fbWVkaWFFbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgKnRo
aXMsIGZhbHNlKTsKICAgICBtX2lzTGlzdGVuaW5nID0gdHJ1ZTsKIAogICAgIHVwZGF0ZUZvckV2
ZW50TmFtZShldmVudE5hbWVBbGwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQuaAppbmRleCA1YWNjZjcyNGFkZmIwODY1ZmQwNzkzNmNiZWRjN2Y1ZjM0NTc5YWE2Li5mNzc4
MjIxZDU0NDIyZTE0OTFjY2FjODE2OTI3YzE0NGI2MGQ4YWI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50LmgKQEAgLTYwLDggKzYwLDcgQEAgcHVibGljOgogICAgIAogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlRXZlbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFdlYkNvcmU6OkV2ZW50Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVGb3JF
dmVudE5hbWUoY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmKTsKLSAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgRXZlbnRMaXN0ZW5lciYgcmhzKSBvdmVycmlkZQotICAgICAgICB7cmV0dXJuIHN0YXRp
Y19jYXN0PFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIqPih0aGlzKSA9PSAmcmhzO30KKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgcmhzKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBzdGF0aWNfY2FzdDxjb25zdCBXZWJDb3JlOjpFdmVudExpc3RlbmVyKj4odGhpcykgPT0g
JnJoczsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXF1ZXN0RnVsbHNjcmVlbk1vZGUo
SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBvdmVycmlkZTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9G
dWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQppbmRleCAyYzVjMTU4
Y2JmZDI1NDJhNjA5MGNkZGEzZTg2ZGI5M2JlMzAxMjNkLi5kODBkZTEzMGU3NmM2ODI0ODM5Mjc1
OWI2MWJkMjY5ZTZjMjk3ODMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVu
dC5tbQpAQCAtODMsNyArODMsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50OjpzZXRWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVudCogdmlkZQogCiAgICAgaWYg
KG1fdmlkZW9FbGVtZW50ICYmIG1faXNMaXN0ZW5pbmcpIHsKICAgICAgICAgZm9yIChhdXRvJiBl
dmVudE5hbWUgOiBvYnNlcnZlZEV2ZW50TmFtZXMoKSkKLSAgICAgICAgICAgIG1fdmlkZW9FbGVt
ZW50LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdGhpcywgZmFsc2UpOworICAgICAg
ICAgICAgbV92aWRlb0VsZW1lbnQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCAqdGhp
cywgZmFsc2UpOwogICAgIH0KICAgICBtX2lzTGlzdGVuaW5nID0gZmFsc2U7CiAKQEAgLTk0LDcg
Kzk0LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0Vmlk
ZW9FbGVtZW50KEhUTUxWaWRlb0VsZW1lbnQqIHZpZGUKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Zm9yIChhdXRvJiBldmVudE5hbWUgOiBvYnNlcnZlZEV2ZW50TmFtZXMoKSkKLSAgICAgICAgbV92
aWRlb0VsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLCBmYWxzZSk7Cisg
ICAgICAgIG1fdmlkZW9FbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgKnRoaXMs
IGZhbHNlKTsKICAgICBtX2lzTGlzdGVuaW5nID0gdHJ1ZTsKIAogICAgIHVwZGF0ZUZvckV2ZW50
TmFtZShldmVudE5hbWVBbGwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggZmM4
MzFlNjc2NThiYTA5Yjg5YTgzYjFlNzU4OWEwMDFjYmI1OTU1MS4uYWIyNDVkNTdmNTg5YmRiZDA1
NDE0YTc4ODQyOTdiODIyZDBjZDY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAt
NTI4LDcgKzUyOCw3IEBAIGJvb2wgU1ZHRWxlbWVudDo6aGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3Vy
Y2VzKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBTVkdFbGVtZW50OjphZGRFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5l
cj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBTVkdFbGVtZW50OjphZGRFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5l
cj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogeyAgIAogICAgIC8vIEFkZCBldmVudCBs
aXN0ZW5lciB0byByZWd1bGFyIERPTSBlbGVtZW50CiAgICAgaWYgKCFOb2RlOjphZGRFdmVudExp
c3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIuY29weVJlZigpLCB1c2VDYXB0dXJlKSkKQEAgLTU0
OCw3ICs1NDgsNyBAQCBib29sIFNWR0VsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpcwogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFNWR0VsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUp
Citib29sIFNWR0VsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7
CiAgICAgaWYgKGNvbnRhaW5pbmdTaGFkb3dSb290KCkpCiAgICAgICAgIHJldHVybiBOb2RlOjpy
ZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOwpAQCAt
NTU4LDcgKzU1OCw3IEBAIGJvb2wgU1ZHRWxlbWVudDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lCiAgICAgLy8gZXZlbnQgbGlz
dGVuZXIgaW4gYSBjYWNoZS4gSWYgd2Ugd2FudCB0byBiZSBhYmxlIHRvIGNhbGwgcmVtb3ZlRXZl
bnRMaXN0ZW5lcigpIG11bHRpcGxlCiAgICAgLy8gdGltZXMgb24gZGlmZmVyZW50IG5vZGVzLCB3
ZSBoYXZlIHRvIGRlbGF5IGl0cyBpbW1lZGlhdGUgZGVzdHJ1Y3Rpb24sIHdoaWNoIHdvdWxkIGhh
cHBlbgogICAgIC8vIGFmdGVyIHRoZSBmaXJzdCBjYWxsIGJlbG93LgotICAgIFJlZlB0cjxFdmVu
dExpc3RlbmVyPiBwcm90ZWN0b3IobGlzdGVuZXIpOworICAgIFJlZjxFdmVudExpc3RlbmVyPiBw
cm90ZWN0b3IobGlzdGVuZXIpOwogCiAgICAgLy8gUmVtb3ZlIGV2ZW50IGxpc3RlbmVyIGZyb20g
cmVndWxhciBET00gZWxlbWVudAogICAgIGlmICghTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihl
dmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKSkKQEAgLTU3Myw3ICs1NzMsNyBAQCBib29s
IFNWR0VsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIEV2ZW50TGlzdGVuZQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgLy8g
VGhpcyBjYXNlIGNhbiBvbmx5IGJlIGhpdCBmb3IgZXZlbnQgbGlzdGVuZXJzIGNyZWF0ZWQgZnJv
bSBtYXJrdXAKLSAgICAgICAgQVNTRVJUKGxpc3RlbmVyLT53YXNDcmVhdGVkRnJvbU1hcmt1cCgp
KTsKKyAgICAgICAgQVNTRVJUKGxpc3RlbmVyLndhc0NyZWF0ZWRGcm9tTWFya3VwKCkpOwogCiAg
ICAgICAgIC8vIElmIHRoZSBldmVudCBsaXN0ZW5lciAnbGlzdGVuZXInIGhhcyBiZWVuIGNyZWF0
ZWQgZnJvbSBtYXJrdXAgYW5kIGhhcyBiZWVuIGZpcmVkIGJlZm9yZQogICAgICAgICAvLyB0aGVu
IEpTTGF6eUV2ZW50TGlzdGVuZXI6OnBhcnNlQ29kZSgpIGhhcyBiZWVuIGNhbGxlZCBhbmQgbV9q
c0Z1bmN0aW9uIG9mIHRoYXQgbGlzdGVuZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCmluZGV4IDM4
MTY4MTAyYWY1ZWU3NWFmNzg3Y2IwZmUxNWE4ZTdhMmJhNzFjZmIuLjk2ZDZjOTA0NjMxYWIwOTQ4
OGZiNWI2YWFiYWVlMjBmYzYyYzM3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApAQCAtMTMz
LDggKzEzMyw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBoYXZlTG9hZGVkUmVxdWly
ZWRSZXNvdXJjZXMoKTsKIAotICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVy
ZSkgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlk
ZTsKKyAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAg
IGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
RXZlbnRMaXN0ZW5lciYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCBoYXNG
b2N1c0V2ZW50TGlzdGVuZXJzKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAppbmRleCBjN2Q4NDZlYTIzMWFlMTUwZGE4
MTJkZmE3ODU5NzM4MTFlZWMzNmFhLi42ZGRiYjc2MjdkYTRmNzljNDFlZmNlNDY2YWE2NTY4ZWQ3
ZDNmY2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKQEAgLTczLDcgKzcz
LDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcihT
VkdUUmVmRWxlbWVudCYgdHJlZkVsZW1lbnQpOwogCiAgICAgdm9pZCBoYW5kbGVFdmVudChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqKSBvdmVycmlkZTsKLSAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgRXZlbnRMaXN0ZW5lciYpIG92ZXJyaWRlOworICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBFdmVudExpc3RlbmVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBTVkdUUmVmRWxlbWVu
dCYgbV90cmVmRWxlbWVudDsKICAgICBSZWZQdHI8RWxlbWVudD4gbV90YXJnZXQ7CkBAIC05Miw4
ICs5Miw4IEBAIHZvaWQgU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI6OmF0dGFjaChSZWZQdHI8
RWxlbWVudD4mJiB0YXJnZXQpCiAgICAgQVNTRVJUKHRhcmdldC5nZXQoKSk7CiAgICAgQVNTRVJU
KHRhcmdldC0+aW5Eb2N1bWVudCgpKTsKIAotICAgIHRhcmdldC0+YWRkRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkuRE9NU3VidHJlZU1vZGlmaWVkRXZlbnQsIHRoaXMsIGZhbHNlKTsKLSAgICB0
YXJnZXQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLkRPTU5vZGVSZW1vdmVkRnJvbURv
Y3VtZW50RXZlbnQsIHRoaXMsIGZhbHNlKTsKKyAgICB0YXJnZXQtPmFkZEV2ZW50TGlzdGVuZXIo
ZXZlbnROYW1lcygpLkRPTVN1YnRyZWVNb2RpZmllZEV2ZW50LCAqdGhpcywgZmFsc2UpOworICAg
IHRhcmdldC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuRE9NTm9kZVJlbW92ZWRGcm9t
RG9jdW1lbnRFdmVudCwgKnRoaXMsIGZhbHNlKTsKICAgICBtX3RhcmdldCA9IFdURk1vdmUodGFy
Z2V0KTsKIH0KIApAQCAtMTAyLDEyICsxMDIsMTIgQEAgdm9pZCBTVkdUUmVmVGFyZ2V0RXZlbnRM
aXN0ZW5lcjo6ZGV0YWNoKCkKICAgICBpZiAoIWlzQXR0YWNoZWQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV90YXJnZXQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLkRPTVN1
YnRyZWVNb2RpZmllZEV2ZW50LCB0aGlzLCBmYWxzZSk7Ci0gICAgbV90YXJnZXQtPnJlbW92ZUV2
ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLkRPTU5vZGVSZW1vdmVkRnJvbURvY3VtZW50RXZlbnQs
IHRoaXMsIGZhbHNlKTsKKyAgICBtX3RhcmdldC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5h
bWVzKCkuRE9NU3VidHJlZU1vZGlmaWVkRXZlbnQsICp0aGlzLCBmYWxzZSk7CisgICAgbV90YXJn
ZXQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLkRPTU5vZGVSZW1vdmVkRnJvbURv
Y3VtZW50RXZlbnQsICp0aGlzLCBmYWxzZSk7CiAgICAgbV90YXJnZXQgPSBudWxscHRyOwogfQog
Ci1ib29sIFNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IEV2ZW50
TGlzdGVuZXImIGxpc3RlbmVyKQorYm9vbCBTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcjo6b3Bl
cmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikgY29uc3QKIHsKICAgICBpZiAo
Y29uc3QgU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXIqIHRhcmdldExpc3RlbmVyID0gU1ZHVFJl
ZlRhcmdldEV2ZW50TGlzdGVuZXI6OmNhc3QoJmxpc3RlbmVyKSkKICAgICAgICAgcmV0dXJuICZt
X3RyZWZFbGVtZW50ID09ICZ0YXJnZXRMaXN0ZW5lci0+bV90cmVmRWxlbWVudDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKaW5kZXggN2IyOTg3
MGYzZTJkNGNmYzUwYjBkMTI0Y2IxMjM5ZjRjM2U3NTRlNi4uMGQyNGE2MTc0ZmJmMWE5NGJmMmFk
N2Q5OTBkZTMwNDI1ODg4MjBjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1h
dGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlv
bi9TVkdTTUlMRWxlbWVudC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgOiBudWxscHRyOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExp
c3RlbmVyJiBvdGhlcikgb3ZlcnJpZGU7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50
TGlzdGVuZXImIG90aGVyKSBjb25zdCBvdmVycmlkZTsKICAgICAKICAgICB2b2lkIGRpc2Nvbm5l
Y3RBbmltYXRpb24oKQogICAgIHsKQEAgLTk3LDcgKzk3LDcgQEAgcHJpdmF0ZToKICAgICBTVkdT
TUlMRWxlbWVudDo6Q29uZGl0aW9uKiBtX2NvbmRpdGlvbjsKIH07CiAKLWJvb2wgQ29uZGl0aW9u
RXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikK
K2Jvb2wgQ29uZGl0aW9uRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3Rl
bmVyJiBsaXN0ZW5lcikgY29uc3QKIHsKICAgICBpZiAoY29uc3QgQ29uZGl0aW9uRXZlbnRMaXN0
ZW5lciogY29uZGl0aW9uRXZlbnRMaXN0ZW5lciA9IENvbmRpdGlvbkV2ZW50TGlzdGVuZXI6OmNh
c3QoJmxpc3RlbmVyKSkKICAgICAgICAgcmV0dXJuIG1fYW5pbWF0aW9uID09IGNvbmRpdGlvbkV2
ZW50TGlzdGVuZXItPm1fYW5pbWF0aW9uICYmIG1fY29uZGl0aW9uID09IGNvbmRpdGlvbkV2ZW50
TGlzdGVuZXItPm1fY29uZGl0aW9uOwpAQCAtNTQ1LDcgKzU0NSw3IEBAIHZvaWQgU1ZHU01JTEVs
ZW1lbnQ6OmNvbm5lY3RDb25kaXRpb25zKCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIEFTU0VSVCghY29uZGl0aW9uLm1fZXZlbnRMaXN0ZW5lcik7CiAgICAgICAgICAg
ICBjb25kaXRpb24ubV9ldmVudExpc3RlbmVyID0gQ29uZGl0aW9uRXZlbnRMaXN0ZW5lcjo6Y3Jl
YXRlKHRoaXMsICZjb25kaXRpb24pOwotICAgICAgICAgICAgZXZlbnRCYXNlLT5hZGRFdmVudExp
c3RlbmVyKGNvbmRpdGlvbi5tX25hbWUsIGNvbmRpdGlvbi5tX2V2ZW50TGlzdGVuZXIsIGZhbHNl
KTsKKyAgICAgICAgICAgIGV2ZW50QmFzZS0+YWRkRXZlbnRMaXN0ZW5lcihjb25kaXRpb24ubV9u
YW1lLCAqY29uZGl0aW9uLm1fZXZlbnRMaXN0ZW5lciwgZmFsc2UpOwogICAgICAgICB9IGVsc2Ug
aWYgKGNvbmRpdGlvbi5tX3R5cGUgPT0gQ29uZGl0aW9uOjpTeW5jYmFzZSkgewogICAgICAgICAg
ICAgQVNTRVJUKCFjb25kaXRpb24ubV9iYXNlSUQuaXNFbXB0eSgpKTsKICAgICAgICAgICAgIGNv
bmRpdGlvbi5tX3N5bmNiYXNlID0gdHJlZVNjb3BlKCkuZ2V0RWxlbWVudEJ5SWQoY29uZGl0aW9u
Lm1fYmFzZUlEKTsKQEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lkIFNWR1NNSUxFbGVtZW50OjpkaXNj
b25uZWN0Q29uZGl0aW9ucygpCiAgICAgICAgICAgICAvLyBvdXIgY29uZGl0aW9uIGV2ZW50IGxp
c3RlbmVyLCBpbiBjYXNlIGl0IGxhdGVyIGZpcmVzLgogICAgICAgICAgICAgRWxlbWVudCogZXZl
bnRCYXNlID0gZXZlbnRCYXNlRm9yKGNvbmRpdGlvbik7CiAgICAgICAgICAgICBpZiAoZXZlbnRC
YXNlKQotICAgICAgICAgICAgICAgIGV2ZW50QmFzZS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25k
aXRpb24ubV9uYW1lLCBjb25kaXRpb24ubV9ldmVudExpc3RlbmVyLmdldCgpLCBmYWxzZSk7Cisg
ICAgICAgICAgICAgICAgZXZlbnRCYXNlLT5yZW1vdmVFdmVudExpc3RlbmVyKGNvbmRpdGlvbi5t
X25hbWUsICpjb25kaXRpb24ubV9ldmVudExpc3RlbmVyLCBmYWxzZSk7CiAgICAgICAgICAgICBj
b25kaXRpb24ubV9ldmVudExpc3RlbmVyLT5kaXNjb25uZWN0QW5pbWF0aW9uKCk7CiAgICAgICAg
ICAgICBjb25kaXRpb24ubV9ldmVudExpc3RlbmVyID0gbnVsbHB0cjsKICAgICAgICAgfSBlbHNl
IGlmIChjb25kaXRpb24ubV90eXBlID09IENvbmRpdGlvbjo6U3luY2Jhc2UpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
d2luL0RPTUNvcmVDbGFzc2VzLmNwcAppbmRleCA1ZGY3ODM4NjJjYzkxYzg1YTNiNWE2YjNmNTQy
NjY5NjEzMWE4M2IzLi4yYTEwYWRlZDhkY2Y0NzIyOTFkZDI2OTQxMjIzYzhhYTkyZGVmZWY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCkBAIC00MTIsOCArNDEyLDggQEAgSFJF
U1VMVCBET01Ob2RlOjpzZXRUZXh0Q29udGVudChfSW5fIEJTVFIgLyp0ZXh0Ki8pCiAKIEhSRVNV
TFQgRE9NTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihfSW5fIEJTVFIgdHlwZSwgX0luX29wdF8gSURP
TUV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBCT09MIHVzZUNhcHR1cmUpCiB7Ci0gICAgUmVmUHRy
PFdlYkV2ZW50TGlzdGVuZXI+IHdlYkxpc3RlbmVyID0gV2ViRXZlbnRMaXN0ZW5lcjo6Y3JlYXRl
KGxpc3RlbmVyKTsKLSAgICBtX25vZGUtPmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgd2ViTGlzdGVu
ZXIsIHVzZUNhcHR1cmUpOworICAgIGF1dG8gd2ViTGlzdGVuZXIgPSBXZWJFdmVudExpc3RlbmVy
OjpjcmVhdGUobGlzdGVuZXIpOworICAgIG1fbm9kZS0+YWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBX
VEZNb3ZlKHdlYkxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0K
QEAgLTQyNCw4ICs0MjQsOCBAQCBIUkVTVUxUIERPTU5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIo
X0luXyBCU1RSIHR5cGUsIF9Jbl9vcHRfIElET01FdmVudExpc3RlbmVyKgogICAgICAgICByZXR1
cm4gRV9QT0lOVEVSOwogICAgIGlmICghbV9ub2RlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwot
ICAgIFJlZlB0cjxXZWJFdmVudExpc3RlbmVyPiB3ZWJMaXN0ZW5lciA9IFdlYkV2ZW50TGlzdGVu
ZXI6OmNyZWF0ZShsaXN0ZW5lcik7Ci0gICAgbV9ub2RlLT5yZW1vdmVFdmVudExpc3RlbmVyKHR5
cGUsIHdlYkxpc3RlbmVyLmdldCgpLCB1c2VDYXB0dXJlKTsKKyAgICBhdXRvIHdlYkxpc3RlbmVy
ID0gV2ViRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGxpc3RlbmVyKTsKKyAgICBtX25vZGUtPnJlbW92
ZUV2ZW50TGlzdGVuZXIodHlwZSwgd2ViTGlzdGVuZXIsIHVzZUNhcHR1cmUpOwogICAgIHJldHVy
biBTX09LOwogfQogCkBAIC05MTAsOCArOTEwLDggQEAgSFJFU1VMVCBET01XaW5kb3c6OmFkZEV2
ZW50TGlzdGVuZXIoX0luXyBCU1RSIHR5cGUsIF9Jbl9vcHRfIElET01FdmVudExpc3RlbmVyKgog
ICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAgIGlmICghbV93aW5kb3cpCiAgICAgICAgIHJl
dHVybiBFX0ZBSUw7Ci0gICAgUmVmUHRyPFdlYkV2ZW50TGlzdGVuZXI+IHdlYkxpc3RlbmVyID0g
V2ViRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGxpc3RlbmVyKTsKLSAgICBtX3dpbmRvdy0+YWRkRXZl
bnRMaXN0ZW5lcih0eXBlLCB3ZWJMaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CisgICAgYXV0byB3ZWJM
aXN0ZW5lciA9IFdlYkV2ZW50TGlzdGVuZXI6OmNyZWF0ZShsaXN0ZW5lcik7CisgICAgbV93aW5k
b3ctPmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgV1RGTW92ZSh3ZWJMaXN0ZW5lciksIHVzZUNhcHR1
cmUpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC05MjEsOCArOTIxLDggQEAgSFJFU1VMVCBE
T01XaW5kb3c6OnJlbW92ZUV2ZW50TGlzdGVuZXIoX0luXyBCU1RSIHR5cGUsIF9Jbl9vcHRfIElE
T01FdmVudExpc3RlbmUKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICBpZiAoIW1fd2lu
ZG93KQogICAgICAgICByZXR1cm4gRV9GQUlMOwotICAgIFJlZlB0cjxXZWJFdmVudExpc3RlbmVy
PiB3ZWJMaXN0ZW5lciA9IFdlYkV2ZW50TGlzdGVuZXI6OmNyZWF0ZShsaXN0ZW5lcik7Ci0gICAg
bV93aW5kb3ctPnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgd2ViTGlzdGVuZXIuZ2V0KCksIHVz
ZUNhcHR1cmUpOworICAgIGF1dG8gd2ViTGlzdGVuZXIgPSBXZWJFdmVudExpc3RlbmVyOjpjcmVh
dGUobGlzdGVuZXIpOworICAgIG1fd2luZG93LT5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIHdl
Ykxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93aW4vRE9NRXZlbnRzQ2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9ET01FdmVudHNDbGFzc2VzLmNwcAppbmRleCA4MGI0ZDJlYWNiYjVjZmQ3YzNlNWVmYzcx
ZWE5YTFlYTE0ZmNhM2JlLi5hZDg3NjZiMzFiNTY4M2E2OWNlNTQ3NWJmNzcwNGJjYTNkYzgzNmQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9ET01FdmVudHNDbGFzc2VzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01FdmVudHNDbGFzc2VzLmNwcApAQCAtNjgsNyArNjgsNyBA
QCBXZWJFdmVudExpc3RlbmVyOjp+V2ViRXZlbnRMaXN0ZW5lcigpCiAgICAgbV9pRE9NRXZlbnRM
aXN0ZW5lci0+UmVsZWFzZSgpOwogfQogCi1ib29sIFdlYkV2ZW50TGlzdGVuZXI6Om9wZXJhdG9y
PT0oY29uc3QgV2ViQ29yZTo6RXZlbnRMaXN0ZW5lciYgb3RoZXIpCitib29sIFdlYkV2ZW50TGlz
dGVuZXI6Om9wZXJhdG9yPT0oY29uc3QgV2ViQ29yZTo6RXZlbnRMaXN0ZW5lciYgb3RoZXIpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIChvdGhlci50eXBlKCkgPT0gQ1BQRXZlbnRMaXN0ZW5lclR5cGUg
CiAgICAgICAgICYmIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgV2ViRXZlbnRMaXN0ZW5lcio+KCZv
dGhlciktPm1faURPTUV2ZW50TGlzdGVuZXIgPT0gbV9pRE9NRXZlbnRMaXN0ZW5lcik7CkBAIC04
MSw5ICs4MSw5IEBAIHZvaWQgV2ViRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogcywgV2ViQ29yZTo6CiAgICAgbV9pRE9NRXZlbnRMaXN0
ZW5lci0+aGFuZGxlRXZlbnQoZG9tRXZlbnQuZ2V0KCkpOwogfQogCi1QYXNzUmVmUHRyPFdlYkV2
ZW50TGlzdGVuZXI+IFdlYkV2ZW50TGlzdGVuZXI6OmNyZWF0ZShJRE9NRXZlbnRMaXN0ZW5lciog
ZCkKK1JlZjxXZWJFdmVudExpc3RlbmVyPiBXZWJFdmVudExpc3RlbmVyOjpjcmVhdGUoSURPTUV2
ZW50TGlzdGVuZXIqIGQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJFdmVudExpc3Rl
bmVyKGQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJFdmVudExpc3RlbmVyKGQpKTsK
IH0KIAogLy8gRE9NRXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vRE9NRXZlbnRzQ2xhc3Nlcy5oIGIvU291cmNlL1dlYktpdC93aW4vRE9NRXZlbnRzQ2xhc3Nl
cy5oCmluZGV4IDRhYjJjZWUxYzFmMzJhOTliNzA5Y2NmNDgyNzg3MjA1OGUxNmRjNWUuLjdkZjgx
M2I4MDMwNzQxMGNkZmE1Yzg3YjVmYmI0NjUwNzVhNDkxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvd2luL0RPTUV2ZW50c0NsYXNzZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01F
dmVudHNDbGFzc2VzLmgKQEAgLTQ2LDkgKzQ2LDkgQEAgY2xhc3MgV2ViRXZlbnRMaXN0ZW5lciA6
IHB1YmxpYyBXZWJDb3JlOjpFdmVudExpc3RlbmVyIHsKIHB1YmxpYzoKICAgICBXZWJFdmVudExp
c3RlbmVyKElET01FdmVudExpc3RlbmVyKik7CiAgICAgfldlYkV2ZW50TGlzdGVuZXIoKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJik7CisgICAgdmly
dHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYpIGNvbnN0OwogICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
V2ViQ29yZTo6RXZlbnQqKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJFdmVudExpc3RlbmVy
PiBjcmVhdGUoSURPTUV2ZW50TGlzdGVuZXIqKTsKKyAgICBzdGF0aWMgUmVmPFdlYkV2ZW50TGlz
dGVuZXI+IGNyZWF0ZShJRE9NRXZlbnRMaXN0ZW5lciopOwogcHJpdmF0ZToKICAgICBJRE9NRXZl
bnRMaXN0ZW5lciogbV9pRE9NRXZlbnRMaXN0ZW5lcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24uaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5o
CmluZGV4IDYzYTQ4YWM1NjA2Yjc0NGE5NTExYTI3ZTY2MmM4MTgwNTJmZWIxM2UuLmY2MzM5NzAx
ZTY2MDEwOWUyOTFhOGZjMGM1YjkxYTQ5ODlhMzRlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5o
CkBAIC04NCw3ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBQREZQbHVnaW5Bbm5vdGF0aW9uRXZlbnRMaXN0ZW5lcihhbm5vdGF0aW9uKSk7CiAgICAg
ICAgIH0KIAotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgbGlz
dGVuZXIpIG92ZXJyaWRlIHsgcmV0dXJuIHRoaXMgPT0gJmxpc3RlbmVyOyB9CisgICAgICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdGhpcyA9PSAmbGlzdGVuZXI7IH0KIAogICAgICAgICB2b2lkIHNldEFubm90
YXRpb24oUERGUGx1Z2luQW5ub3RhdGlvbiogYW5ub3RhdGlvbikgeyBtX2Fubm90YXRpb24gPSBh
bm5vdGF0aW9uOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbQppbmRleCA0N2JhOWMyOTM1MTg0
YTU1ODBkOWU2NzVjNzI1ZWMyN2FjYmYzYTNjLi4zY2E3ZTQ4OTg4N2NmZTU4YzQzYzhlYTc0MzQ2
ZTFjNDc4N2NlYTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbkFubm90YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tCkBAIC02OSw4ICs2OSw4IEBA
IHZvaWQgUERGUGx1Z2luQW5ub3RhdGlvbjo6YXR0YWNoKEVsZW1lbnQqIHBhcmVudCkKICAgICBt
X2VsZW1lbnQgPSBjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpOwogCiAgICAgbV9lbGVtZW50LT5z
ZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCAiYW5ub3RhdGlvbiIpOwotICAgIG1fZWxlbWVudC0+YWRk
RXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2hhbmdlRXZlbnQsIG1fZXZlbnRMaXN0ZW5lciwg
ZmFsc2UpOwotICAgIG1fZWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYmx1
ckV2ZW50LCBtX2V2ZW50TGlzdGVuZXIsIGZhbHNlKTsKKyAgICBtX2VsZW1lbnQtPmFkZEV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLmNoYW5nZUV2ZW50LCAqbV9ldmVudExpc3RlbmVyLCBmYWxz
ZSk7CisgICAgbV9lbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5ibHVyRXZl
bnQsICptX2V2ZW50TGlzdGVuZXIsIGZhbHNlKTsKIAogICAgIHVwZGF0ZUdlb21ldHJ5KCk7CiAK
QEAgLTg3LDggKzg3LDggQEAgdm9pZCBQREZQbHVnaW5Bbm5vdGF0aW9uOjpjb21taXQoKQogCiBQ
REZQbHVnaW5Bbm5vdGF0aW9uOjp+UERGUGx1Z2luQW5ub3RhdGlvbigpCiB7Ci0gICAgbV9lbGVt
ZW50LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jaGFuZ2VFdmVudCwgbV9ldmVu
dExpc3RlbmVyLmdldCgpLCBmYWxzZSk7Ci0gICAgbV9lbGVtZW50LT5yZW1vdmVFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQsIG1fZXZlbnRMaXN0ZW5lci5nZXQoKSwgZmFsc2Up
OworICAgIG1fZWxlbWVudC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2hhbmdl
RXZlbnQsICptX2V2ZW50TGlzdGVuZXIsIGZhbHNlKTsKKyAgICBtX2VsZW1lbnQtPnJlbW92ZUV2
ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJsdXJFdmVudCwgKm1fZXZlbnRMaXN0ZW5lciwgZmFs
c2UpOwogCiAgICAgbV9ldmVudExpc3RlbmVyLT5zZXRBbm5vdGF0aW9uKDApOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3
b3JkRmllbGQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpblBhc3N3b3JkRmllbGQubW0KaW5kZXggYjJhM2M3ZjBmZWZhNWJiMGY1N2YxMzVkM2IzNmFj
NzAyMTdlZGQ3Yi4uNjc3NjQ3NTcyZDZmYTIwMWRjMzI5MzNkYjMxYjA2ZGZjOTFiMDgxZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Q
YXNzd29yZEZpZWxkLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5tbQpAQCAtNDksMTQgKzQ5LDE0IEBAIFJlZjxQREZQ
bHVnaW5QYXNzd29yZEZpZWxkPiBQREZQbHVnaW5QYXNzd29yZEZpZWxkOjpjcmVhdGUoUERGTGF5
ZXJDb250cm9sbGVyICpwCiAKIFBERlBsdWdpblBhc3N3b3JkRmllbGQ6On5QREZQbHVnaW5QYXNz
d29yZEZpZWxkKCkKIHsKLSAgICBlbGVtZW50KCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLmtleXVwRXZlbnQsIGV2ZW50TGlzdGVuZXIoKSwgZmFsc2UpOworICAgIGVsZW1lbnQo
KS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkua2V5dXBFdmVudCwgKmV2ZW50TGlz
dGVuZXIoKSwgZmFsc2UpOwogfQogCiBQYXNzUmVmUHRyPEVsZW1lbnQ+IFBERlBsdWdpblBhc3N3
b3JkRmllbGQ6OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkKIHsKICAgICBSZWZQdHI8RWxlbWVu
dD4gZWxlbWVudCA9IFBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxl
bWVudCgpOwogICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZSh0eXBlQXR0ciwgInBhc3N3b3JkIik7
Ci0gICAgZWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkua2V5dXBFdmVudCwg
ZXZlbnRMaXN0ZW5lcigpLCBmYWxzZSk7CisgICAgZWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkua2V5dXBFdmVudCwgKmV2ZW50TGlzdGVuZXIoKSwgZmFsc2UpOwogICAgIHJl
dHVybiBlbGVtZW50OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbQppbmRleCBm
YmVkM2E2ZmRhNjg5M2Q4ZDJlNTUzNWRiNDMzZGQyOTQ3MTZmYjE3Li44YzA3NDY5YzZkNThhYjE3
NjI4MTgwODhkYmUxOTU2MmMzNzhmY2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24u
bW0KQEAgLTc4LDcgKzc4LDcgQEAgUmVmPFBERlBsdWdpblRleHRBbm5vdGF0aW9uPiBQREZQbHVn
aW5UZXh0QW5ub3RhdGlvbjo6Y3JlYXRlKFBERkFubm90YXRpb24gKmFubm8KIAogUERGUGx1Z2lu
VGV4dEFubm90YXRpb246On5QREZQbHVnaW5UZXh0QW5ub3RhdGlvbigpCiB7Ci0gICAgZWxlbWVu
dCgpLT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQsIGV2ZW50
TGlzdGVuZXIoKSwgZmFsc2UpOworICAgIGVsZW1lbnQoKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkua2V5ZG93bkV2ZW50LCAqZXZlbnRMaXN0ZW5lcigpLCBmYWxzZSk7CiB9CiAK
IFBhc3NSZWZQdHI8RWxlbWVudD4gUERGUGx1Z2luVGV4dEFubm90YXRpb246OmNyZWF0ZUFubm90
YXRpb25FbGVtZW50KCkKQEAgLTk3LDcgKzk3LDcgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBQREZQ
bHVnaW5UZXh0QW5ub3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKQogICAgIGVsc2UK
ICAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaW5wdXRUYWcsIGZhbHNl
KTsKIAotICAgIGVsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleWRvd25F
dmVudCwgZXZlbnRMaXN0ZW5lcigpLCBmYWxzZSk7CisgICAgZWxlbWVudC0+YWRkRXZlbnRMaXN0
ZW5lcihldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50LCAqZXZlbnRMaXN0ZW5lcigpLCBmYWxzZSk7
CiAKICAgICBTdHlsZWRFbGVtZW50KiBzdHlsZWRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U3R5bGVk
RWxlbWVudCo+KGVsZW1lbnQuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDZhYTAwOGYzMTVlMTFmZjk0NDcz
ZjU3ZmY0MjdiMDY2NGMzZDNjOC4uNmU2MmU3OGM5M2ZjM2EwYzRkNDMyZmY1MzNiODEwODJkOWY5
ZTk0NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE2LTA1LTE5ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgR2VuZXJhdGUgYmluZGluZ3MgY29kZSBmb3IgRXZl
bnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigpIC8gcmVtb3ZlRXZlbnRMaXN0ZW5lcigpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTc4ODIKKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBSZWJhc2VsaW5lIGV4aXN0
aW5nIHRlc3Qgbm93IHRoYXQgdGhlICdsZW5ndGgnIHByb3BlcnR5IG9mIHRob3NlIGZ1bmN0aW9u
cworICAgICAgICBoYXZlIGNoYW5nZWQuIFRoaXMgaXMgYmVjYXVzZSB0aGUgSURMIGhhcyBiZWVu
IHVwZGF0ZWQgdG8gbWF0Y2ggb3VyCisgICAgICAgIGltcGxlbWVudGF0aW9uIChhbGwgcGFyYW1l
dGVycyBhcmUgb3B0aW9uYWwpLiBXaGlsZSB0aGlzIGRvZXMgbm90IG1hdGNoCisgICAgICAgIHRo
ZSBzcGVjaWZpY2F0aW9uLCB0aGUgbmV3IGxlbmd0aCBub3cgbWF0Y2hlcyBvdXIgYWN0dWFsIGJl
aGF2aW9yLgorCisgICAgICAgICoganMvZG9tL2Z1bmN0aW9uLWxlbmd0aC1leHBlY3RlZC50eHQ6
CisKIDIwMTYtMDUtMTkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAg
ICAgIEZpbmlzaGluZyBvZmY6IE1vZGVybiBJREI6IFdlYnNpdGUgZGF0YSBzdG9yZSBtYW5hZ2Vt
ZW50LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9kb20vaW50ZXJmYWNlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9pbnRlcmZhY2VzLWV4cGVjdGVkLnR4dAppbmRleCA3
MTk3NjJiZjg2Mjc4MTllNDU5YzVjNmY5YzU1YTI1MDgyYjg1N2I4Li4zMjUyZDg3NTE2MGVkOGE5
NTQ5NWRhYTc4MWZjMGM5MjllMjIyNGE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9pbnRlcmZhY2VzLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9pbnRlcmZh
Y2VzLWV4cGVjdGVkLnR4dApAQCAtMTEwLDggKzExMCw4IEBAIFBBU1MgRXZlbnRUYXJnZXQgaW50
ZXJmYWNlIG9iamVjdCBsZW5ndGgKIFBBU1MgRXZlbnRUYXJnZXQgaW50ZXJmYWNlIG9iamVjdCBu
YW1lIAogUEFTUyBFdmVudFRhcmdldCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGll
cyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCAKIFBBU1MgRXZlbnRUYXJnZXQgaW50ZXJm
YWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmpl
Y3QncyAiY29uc3RydWN0b3IiIHByb3BlcnR5IAotUEFTUyBFdmVudFRhcmdldCBpbnRlcmZhY2U6
IG9wZXJhdGlvbiBhZGRFdmVudExpc3RlbmVyKERPTVN0cmluZyxFdmVudExpc3RlbmVyLFtvYmpl
Y3QgT2JqZWN0XSxbb2JqZWN0IE9iamVjdF0pIAotUEFTUyBFdmVudFRhcmdldCBpbnRlcmZhY2U6
IG9wZXJhdGlvbiByZW1vdmVFdmVudExpc3RlbmVyKERPTVN0cmluZyxFdmVudExpc3RlbmVyLFtv
YmplY3QgT2JqZWN0XSxbb2JqZWN0IE9iamVjdF0pIAorRkFJTCBFdmVudFRhcmdldCBpbnRlcmZh
Y2U6IG9wZXJhdGlvbiBhZGRFdmVudExpc3RlbmVyKERPTVN0cmluZyxFdmVudExpc3RlbmVyLFtv
YmplY3QgT2JqZWN0XSxbb2JqZWN0IE9iamVjdF0pIGFzc2VydF9lcXVhbHM6IHByb3BlcnR5IGhh
cyB3cm9uZyAubGVuZ3RoIGV4cGVjdGVkIDIgYnV0IGdvdCAwCitGQUlMIEV2ZW50VGFyZ2V0IGlu
dGVyZmFjZTogb3BlcmF0aW9uIHJlbW92ZUV2ZW50TGlzdGVuZXIoRE9NU3RyaW5nLEV2ZW50TGlz
dGVuZXIsW29iamVjdCBPYmplY3RdLFtvYmplY3QgT2JqZWN0XSkgYXNzZXJ0X2VxdWFsczogcHJv
cGVydHkgaGFzIHdyb25nIC5sZW5ndGggZXhwZWN0ZWQgMiBidXQgZ290IDAKIFBBU1MgRXZlbnRU
YXJnZXQgaW50ZXJmYWNlOiBvcGVyYXRpb24gZGlzcGF0Y2hFdmVudChFdmVudCkgCiBQQVNTIEV2
ZW50TGlzdGVuZXIgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJm
YWNlIG9iamVjdCAKIFBBU1MgRXZlbnRMaXN0ZW5lciBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQg
cHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2pzL2RvbS9mdW5jdGlvbi1sZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvanMvZG9tL2Z1bmN0aW9uLWxlbmd0aC1leHBlY3RlZC50eHQKaW5kZXggNGEzNmI5OGY2Yjhj
MjIwODI0YmI5MmVhMDg1YWMxM2E2MDRiNDdlYS4uZTk1YmU1MGU1MDY1YWQ3NzE2Y2I1ODkzMGY0
OGUyMzE3NGE0YTk1OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvZG9tL2Z1bmN0aW9uLWxl
bmd0aC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2Z1bmN0aW9uLWxlbmd0
aC1leHBlY3RlZC50eHQKQEAgLTgsNyArOCw3IEBAIFBBU1Mgd2luZG93Lm9wZW4ubGVuZ3RoIGlz
IDIKIFBBU1Mgd2luZG93LnNob3dNb2RhbERpYWxvZy5sZW5ndGggaXMgMQogUEFTUyB3aW5kb3cu
c2V0VGltZW91dC5sZW5ndGggaXMgMQogUEFTUyB3aW5kb3cuY2xlYXJUaW1lb3V0Lmxlbmd0aCBp
cyAwCi1QQVNTIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyLmxlbmd0aCBpcyAyCitGQUlMIHdpbmRv
dy5hZGRFdmVudExpc3RlbmVyLmxlbmd0aCBzaG91bGQgYmUgMi4gV2FzIDAuCiBQQVNTIEFycmF5
LnByb3RvdHlwZS5jb25jYXQubGVuZ3RoIGlzIDEKIFBBU1MgQXJyYXkucHJvdG90eXBlLmpvaW4u
bGVuZ3RoIGlzIDEKIFBBU1MgQXJyYXkucHJvdG90eXBlLnB1c2gubGVuZ3RoIGlzIDEK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279605</attachid>
            <date>2016-05-23 16:29:50 -0700</date>
            <delta_ts>2016-05-23 17:15:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157882-20160523163056.patch</filename>
            <type>text/plain</type>
            <size>74424</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxMzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM4YzJhZDZiNGE5OTY1
ZTZmZWJiY2Y1NTA0ZTVhMGU3Mzc4NzMxNS4uNTBlMmI5NGYzMDY1ODU4MTExN2RkMzhhMDU4ODdl
MjM3NWI4MDM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwNCBAQAogMjAxNi0wNS0yMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCisgICAgICAgIEdlbmVyYXRlIGJpbmRpbmdz
IGNvZGUgZm9yIEV2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoKSAvIHJlbW92ZUV2ZW50TGlz
dGVuZXIoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU3ODgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgR2Vu
ZXJhdGUgYmluZGluZ3MgY29kZSBmb3IgRXZlbnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigpIC8g
cmVtb3ZlRXZlbnRMaXN0ZW5lcigpCisgICAgICAgIGluc3RlYWQgb2YgaGFyZGNvZGluZyB0aGVt
IGluIHRoZSBiaW5kaW5ncyBnZW5lcmF0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWJh
c2VsaW5lZCBleGlzdGluZyB0ZXN0LCBubyB3ZWItZXhwb3NlZCBiZWhhdmlvciBjaGFuZ2UuCisK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OmFkZEV2ZW50TGlz
dGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpyZW1v
dmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1
bGVkU291cmNlTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vz
c29yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9jZXNzb3JOb2RlOjphZGRF
dmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OnJl
bW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJv
Y2Vzc29yTm9kZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvR09iamVjdEV2ZW50TGlz
dGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R09iamVjdEV2ZW50TGlzdGVuZXI6Om9wZXJh
dG9yPT0pOgorICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvR09iamVjdEV2ZW50TGlzdGVuZXIu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6
OmV2ZW50SGFuZGxlckF0dHJpYnV0ZSk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3MvanMv
SlNFdmVudExpc3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OmNhc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpqc0Z1bmN0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL09iakNFdmVudExpc3RlbmVyLmg6CisgICAgICAg
ICogYmluZGluZ3Mvb2JqYy9PYmpDRXZlbnRMaXN0ZW5lci5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok9iakNFdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24p
OgorICAgICAgICAoSlNWYWx1ZVRvTmF0aXZlKToKKyAgICAgICAgKEdldFBhcmVudENsYXNzTmFt
ZSk6IERlbGV0ZWQuCisgICAgICAgIChHZXRDYWxsYmFja0NsYXNzTmFtZSk6IERlbGV0ZWQuCisg
ICAgICAgIChHZXRKU0NhbGxiYWNrRGF0YVR5cGUpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9F
dmVudExpc3RlbmVyLmg6CisgICAgICAgICogZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6YWRkTGlzdGVuZXJUb1ZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudExpc3RlbmVyTWFwOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlTGlzdGVuZXJG
cm9tVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TGlzdGVuZXJNYXA6OnJlbW92ZSk6
CisgICAgICAgIChXZWJDb3JlOjpjb3B5TGlzdGVuZXJzTm90Q3JlYXRlZEZyb21NYXJrdXBUb1Rh
cmdldCk6CisgICAgICAgICogZG9tL0V2ZW50TGlzdGVuZXJNYXAuaDoKKyAgICAgICAgKiBkb20v
RXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXQ6OmFkZEV2ZW50
TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVu
ZXJGb3JCaW5kaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6cmVtb3ZlRXZl
bnRMaXN0ZW5lckZvckJpbmRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0Ojpy
ZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0OjpzZXRB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0Ojpj
bGVhckF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5o
OgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5pZGw6CisgICAgICAgICogZG9tL01lc3NhZ2VQ
b3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjphZGRFdmVudExpc3RlbmVy
KToKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQuaDoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjp0cnlBZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6dHJ5UmVtb3Zl
RXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZW1vdmVFdmVudExpc3Rl
bmVyKToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAqIGRvbS9SZWdpc3RlcmVkRXZl
bnRMaXN0ZW5lci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXI6
OlJlZ2lzdGVyZWRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0
ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVFdmVudExp
c3RlbmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEb2N1bWVudDo6
Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VFdmVudExp
c3RlbmVyOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xz
QXBwbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0FwcGxlOjpzaG93Q2xv
c2VkQ2FwdGlvblRyYWNrTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQXBw
bGU6OmhpZGVDbG9zZWRDYXB0aW9uVHJhY2tMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbHNBcHBsZUV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGh0bWwv
c2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbmRleGVkREJBZ2VudC5jcHA6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogcGFnZS9E
T01XaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAg
KiBzdmcvU1ZHRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUUmVmRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcjo6YXR0YWNoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjpkZXRhY2gpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgor
ICAgICAgICAqIHN2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29uZGl0aW9uRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdTTUlMRWxlbWVudDo6Y29ubmVjdENvbmRpdGlvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHU01JTEVsZW1lbnQ6OmRpc2Nvbm5lY3RDb25kaXRpb25zKToKKworMjAxNi0wNS0yMyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIEZpeCB1bmRlZmluZWQg
YmVoYXZpb3IgaW50cm9kdWNlZCBpbiByMjAxMjkwLgogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3OTYxCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA2NGVi
NGVkMzdkY2FmMjkxMmJkMzI0OWFmNDhhNzQzYzAyNGFjM2MxLi5kYjhiNjcxOGQxNWVlMWVjMGNj
NTYxODA5YjY2N2IwYjZlNzdiZWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTYtMDUtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBH
ZW5lcmF0ZSBiaW5kaW5ncyBjb2RlIGZvciBFdmVudFRhcmdldC5hZGRFdmVudExpc3RlbmVyKCkg
LyByZW1vdmVFdmVudExpc3RlbmVyKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1Nzg4MgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgorCisgICAgICAgIEdlbmVyYXRlIGJpbmRpbmdzIGNvZGUgZm9yIEV2ZW50VGFyZ2V0LmFkZEV2
ZW50TGlzdGVuZXIoKSAvIHJlbW92ZUV2ZW50TGlzdGVuZXIoKQorICAgICAgICBpbnN0ZWFkIG9m
IGhhcmRjb2RpbmcgdGhlbSBpbiB0aGUgYmluZGluZ3MgZ2VuZXJhdG9yLgorCisgICAgICAgICog
RE9NRXZlbnRzQ2xhc3Nlcy5jcHA6CisgICAgICAgIChXZWJFdmVudExpc3RlbmVyOjpvcGVyYXRv
cj09KToKKyAgICAgICAgKiBET01FdmVudHNDbGFzc2VzLmg6CisKIDIwMTYtMDUtMjAgIEpvc2Vw
aCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgTGVnYWN5
UHJvZmlsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCA2NmM2ZGVlMDUwYTA5ZThlNjgwOTU5ZmY0ZTg1NzUxYzVj
OTE2ODg4Li4yOTA5OGI2MDQwYTI1ZTJiMzIzNzRmOTM4YzkxMThlZTliOGQyMWIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTYtMDUtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KKworICAgICAgICBHZW5lcmF0ZSBiaW5kaW5ncyBjb2RlIGZvciBFdmVudFRhcmdl
dC5hZGRFdmVudExpc3RlbmVyKCkgLyByZW1vdmVFdmVudExpc3RlbmVyKCkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Nzg4MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEdlbmVyYXRlIGJpbmRpbmdzIGNvZGUg
Zm9yIEV2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoKSAvIHJlbW92ZUV2ZW50TGlzdGVuZXIo
KQorICAgICAgICBpbnN0ZWFkIG9mIGhhcmRjb2RpbmcgdGhlbSBpbiB0aGUgYmluZGluZ3MgZ2Vu
ZXJhdG9yLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5v
dGF0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5v
dGF0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5Bbm5vdGF0aW9uOjphdHRhY2gp
OgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5Bbm5vdGF0aW9uOjp+UERGUGx1Z2luQW5ub3Rh
dGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29y
ZEZpZWxkLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5QYXNzd29yZEZpZWxkOjp+UERG
UGx1Z2luUGFzc3dvcmRGaWVsZCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpblBhc3N3b3Jk
RmllbGQ6OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6flBERlBsdWdpblRleHRBbm5vdGF0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6UERGUGx1Z2luVGV4dEFubm90YXRpb246OmNyZWF0ZUFubm90YXRpb25FbGVt
ZW50KToKKwogMjAxNi0wNS0yMyAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgTmVlZCBTUEkgZm9yIGNsaWVudHMgdG8gcmVxdWlyZSBhIHVzZXIgYWN0aW9uIHRvIGdl
dCBhbiBlZGl0aW5nIGNvbnRyb2xzIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwCmluZGV4IGJjNGVm
YjRiNzJjZTZkN2ViY2NjZTM4ZWI2MDk5OTUzOTQwZTliNTAuLjRjYTZhMDQ0MmZkM2E5MzE1N2M3
MjUxNGYzNDdhMWZhYzc4MzY0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAKQEAgLTIwMSw3
ICsyMDEsNyBAQCB2b2lkIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6ZmluaXNoKCkKICAgICB9
CiB9CiAKLWJvb2wgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjphZGRFdmVudExpc3RlbmVyKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0
ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OmFk
ZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExp
c3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAgICAgYm9vbCBzdWNjZXNz
ID0gQXVkaW9Ob2RlOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5l
ciksIHVzZUNhcHR1cmUpOwogICAgIGlmIChzdWNjZXNzICYmIGV2ZW50VHlwZSA9PSBldmVudE5h
bWVzKCkuZW5kZWRFdmVudCkKQEAgLTIwOSw3ICsyMDksNyBAQCBib29sIEF1ZGlvU2NoZWR1bGVk
U291cmNlTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgUgogICAgIHJldHVybiBzdWNjZXNzOwogfQogCi1ib29sIEF1ZGlvU2NoZWR1bGVkU291cmNl
Tm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
RXZlbnRMaXN0ZW5lciogbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgQXVkaW9TY2hl
ZHVsZWRTb3VyY2VOb2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewog
ICAgIGJvb2wgc3VjY2VzcyA9IEF1ZGlvTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5
cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKICAgICBpZiAoc3VjY2VzcyAmJiBldmVudFR5cGUg
PT0gZXZlbnROYW1lcygpLmVuZGVkRXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaAppbmRleCBlY2Vk
ZTM4YTA4OTQyNmQwOWNkZTYxZDQwY2I3Zjc0M2I5YzYxMDU1Li5jYjRkZDNjZGU4MjE3NWNkMTY1
NjNkMGQ4OGZmY2MxMTdjYTFkMDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgKQEAgLTEwMSw4ICsx
MDEsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBVbmtub3duVGltZTsK
IAogcHJpdmF0ZToKLSAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92
ZXJyaWRlOwotICAgIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBS
ZWY8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKKyAgICBib29s
IHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50
TGlzdGVuZXImLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVtb3ZlQWxs
RXZlbnRMaXN0ZW5lcnMoKSBvdmVycmlkZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCmluZGV4IDY4NWM2
NzMwODRjOGMxZjE4MzMwZmY5ZmYzNjc2NTMwOWNkMzkzZTUuLjBjYzQxYjc1NjhiYjA1MTBlMTU1
ZWU5Y2VjMTAwNTYxZWI3NGJhNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcApAQCAtMjczLDcgKzI3Myw3IEBA
IGRvdWJsZSBTY3JpcHRQcm9jZXNzb3JOb2RlOjpsYXRlbmN5VGltZSgpIGNvbnN0CiAgICAgcmV0
dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKIH0KIAotYm9vbCBT
Y3JpcHRQcm9jZXNzb3JOb2RlOjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0
dXJlKQorYm9vbCBTY3JpcHRQcm9jZXNzb3JOb2RlOjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9v
bCB1c2VDYXB0dXJlKQogewogICAgIGJvb2wgc3VjY2VzcyA9IEF1ZGlvTm9kZTo6YWRkRXZlbnRM
aXN0ZW5lcihldmVudFR5cGUsIFdURk1vdmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKICAgICBp
ZiAoc3VjY2VzcyAmJiBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmF1ZGlvcHJvY2Vzc0V2ZW50
KQpAQCAtMjgxLDcgKzI4MSw3IEBAIGJvb2wgU2NyaXB0UHJvY2Vzc29yTm9kZTo6YWRkRXZlbnRM
aXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyCiAgICAgcmV0dXJu
IHN1Y2Nlc3M7CiB9CiAKLWJvb2wgU2NyaXB0UHJvY2Vzc29yTm9kZTo6cmVtb3ZlRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciogbGlzdGVu
ZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgU2NyaXB0UHJvY2Vzc29yTm9kZTo6cmVtb3ZlRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYg
bGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKICAgICBib29sIHN1Y2Nlc3MgPSBBdWRpb05v
ZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7
CiAgICAgaWYgKHN1Y2Nlc3MgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5hdWRpb3Byb2Nl
c3NFdmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2Ny
aXB0UHJvY2Vzc29yTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3Jp
cHRQcm9jZXNzb3JOb2RlLmgKaW5kZXggNmI2NWQwMThlYmZhZjY5NmEwNWRkOGQzZGY4MDRhNjNj
NGJhZDQyNC4uMTMwNjI1OTA5MGFkNDNiMmFmNWQ2MzcyMmQ1NWUyNDMzZDgzYmIyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JO
b2RlLmgKQEAgLTczLDggKzczLDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZmlyZVByb2Nlc3NF
dmVudCgpOwogCi0gICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVy
cmlkZTsKLSAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAg
IGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVm
PEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CisgICAgYm9vbCBy
ZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExp
c3RlbmVyJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbW92ZUFsbEV2
ZW50TGlzdGVuZXJzKCkgb3ZlcnJpZGU7CiAKICAgICAvLyBEb3VibGUgYnVmZmVyaW5nCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RFdmVudExpc3Rl
bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVjdEV2ZW50TGlz
dGVuZXIuY3BwCmluZGV4IGQ0YTFkMTgzNTFjZjFhZDQxMzMyZGUxNTdkMDZiMjkxNDE3OGJhYWMu
LmYyZWQ5MzI1MWM1MmM0NjgxOWRlZDEzYjVjMGFlNjIzZTYxMTAxNTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVjdEV2ZW50TGlzdGVuZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVjdEV2ZW50TGlzdGVuZXIu
Y3BwCkBAIC01Nyw5ICs1Nyw5IEBAIHZvaWQgR09iamVjdEV2ZW50TGlzdGVuZXI6OmdvYmplY3RE
ZXN0cm95ZWQoKQogICAgIC8vIGFuZCBsYXRlciB1c2UtYWZ0ZXItZnJlZSB3aXRoIHRoZSBtX2hh
bmRsZXIgPSAwOyBhc3NpZ25tZW50LgogICAgIFJlZlB0cjxHT2JqZWN0RXZlbnRMaXN0ZW5lcj4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKIAotICAgIG1fY29yZVRhcmdldC0+cmVtb3ZlRXZlbnRMaXN0
ZW5lcihtX2RvbUV2ZW50TmFtZS5kYXRhKCksIHRoaXMsIG1fY2FwdHVyZSk7Ci0gICAgbV9jb3Jl
VGFyZ2V0ID0gMDsKLSAgICBtX2hhbmRsZXIgPSAwOworICAgIG1fY29yZVRhcmdldC0+cmVtb3Zl
RXZlbnRMaXN0ZW5lcihtX2RvbUV2ZW50TmFtZS5kYXRhKCksICp0aGlzLCBtX2NhcHR1cmUpOwor
ICAgIG1fY29yZVRhcmdldCA9IG51bGxwdHI7CisgICAgbV9oYW5kbGVyID0gbnVsbHB0cjsKIH0K
IAogdm9pZCBHT2JqZWN0RXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIEV2ZW50KiBldmVudCkKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBHT2JqZWN0RXZl
bnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50KiBl
dmVudCkKICAgICBnX3ZhbHVlX3Vuc2V0KHBhcmFtZXRlcnMgKyAxKTsKIH0KIAotYm9vbCBHT2Jq
ZWN0RXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5l
cikKK2Jvb2wgR09iamVjdEV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0
ZW5lciYgbGlzdGVuZXIpIGNvbnN0CiB7CiAgICAgaWYgKGNvbnN0IEdPYmplY3RFdmVudExpc3Rl
bmVyKiBnb2JqZWN0RXZlbnRMaXN0ZW5lciA9IEdPYmplY3RFdmVudExpc3RlbmVyOjpjYXN0KCZs
aXN0ZW5lcikpCiAgICAgICAgIHJldHVybiBtX3RhcmdldCA9PSBnb2JqZWN0RXZlbnRMaXN0ZW5l
ci0+bV90YXJnZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3Qv
R09iamVjdEV2ZW50TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3Qv
R09iamVjdEV2ZW50TGlzdGVuZXIuaAppbmRleCBlMTE3ZjQwZDZlY2U1ZDRmNjY4YzA5OWI4MDk1
NmE3M2IwZmM2Yzg2Li4yMDZiYmQ3ODllMzEwOTcwZWZkZDJjYTdkODJmYzcxYmFjOTZmYmZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RFdmVudExp
c3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZl
bnRMaXN0ZW5lci5oCkBAIC0zNSwxNCArMzUsMTQgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJv
b2wgYWRkRXZlbnRMaXN0ZW5lcihHT2JqZWN0KiB0YXJnZXQsIEV2ZW50VGFyZ2V0KiBjb3JlVGFy
Z2V0LCBjb25zdCBjaGFyKiBkb21FdmVudE5hbWUsIEdDbG9zdXJlKiBoYW5kbGVyLCBib29sIHVz
ZUNhcHR1cmUpCiAgICAgewotICAgICAgICBSZWZQdHI8R09iamVjdEV2ZW50TGlzdGVuZXI+IGxp
c3RlbmVyKGFkb3B0UmVmKG5ldyBHT2JqZWN0RXZlbnRMaXN0ZW5lcih0YXJnZXQsIGNvcmVUYXJn
ZXQsIGRvbUV2ZW50TmFtZSwgaGFuZGxlciwgdXNlQ2FwdHVyZSkpKTsKLSAgICAgICAgcmV0dXJu
IGNvcmVUYXJnZXQtPmFkZEV2ZW50TGlzdGVuZXIoZG9tRXZlbnROYW1lLCBsaXN0ZW5lci5yZWxl
YXNlKCksIHVzZUNhcHR1cmUpOworICAgICAgICBSZWY8R09iamVjdEV2ZW50TGlzdGVuZXI+IGxp
c3RlbmVyKGFkb3B0UmVmKCpuZXcgR09iamVjdEV2ZW50TGlzdGVuZXIodGFyZ2V0LCBjb3JlVGFy
Z2V0LCBkb21FdmVudE5hbWUsIGhhbmRsZXIsIHVzZUNhcHR1cmUpKSk7CisgICAgICAgIHJldHVy
biBjb3JlVGFyZ2V0LT5hZGRFdmVudExpc3RlbmVyKGRvbUV2ZW50TmFtZSwgV1RGTW92ZShsaXN0
ZW5lciksIHVzZUNhcHR1cmUpOwogICAgIH0KIAogICAgIHN0YXRpYyBib29sIHJlbW92ZUV2ZW50
TGlzdGVuZXIoR09iamVjdCogdGFyZ2V0LCBFdmVudFRhcmdldCogY29yZVRhcmdldCwgY29uc3Qg
Y2hhciogZG9tRXZlbnROYW1lLCBHQ2xvc3VyZSogaGFuZGxlciwgYm9vbCB1c2VDYXB0dXJlKQog
ICAgIHsKICAgICAgICAgR09iamVjdEV2ZW50TGlzdGVuZXIga2V5KHRhcmdldCwgY29yZVRhcmdl
dCwgZG9tRXZlbnROYW1lLCBoYW5kbGVyLCB1c2VDYXB0dXJlKTsKLSAgICAgICAgcmV0dXJuIGNv
cmVUYXJnZXQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZG9tRXZlbnROYW1lLCAma2V5LCB1c2VDYXB0
dXJlKTsKKyAgICAgICAgcmV0dXJuIGNvcmVUYXJnZXQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZG9t
RXZlbnROYW1lLCBrZXksIHVzZUNhcHR1cmUpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIGdv
YmplY3REZXN0cm95ZWRDYWxsYmFjayhHT2JqZWN0RXZlbnRMaXN0ZW5lciogbGlzdGVuZXIsIEdP
YmplY3QqKQpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICA6IDA7CiAgICAg
fQogCi0gICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3Ro
ZXIpOworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgY29u
c3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgR09iamVjdEV2ZW50TGlzdGVuZXIoR09iamVj
dCosIEV2ZW50VGFyZ2V0KiwgY29uc3QgY2hhciogZG9tRXZlbnROYW1lLCBHQ2xvc3VyZSosIGJv
b2wgY2FwdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2
ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3Rl
bmVyLmNwcAppbmRleCBjYzU0ZmQ0YTgxODQ5NzdhNjA0YjVmOTRhNTg1MjEzMmExZDg2ODdlLi5i
ZmQ3OGE4Mjk1ZTgzODEyMTliM2IyZGJhNWY0NGFiMDkwZTE3NjY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKQEAgLTE2MywyMCArMTYzLDEz
IEBAIGJvb2wgSlNFdmVudExpc3RlbmVyOjp2aXJ0dWFsaXNBdHRyaWJ1dGUoKSBjb25zdAogICAg
IHJldHVybiBtX2lzQXR0cmlidXRlOwogfQogCi1ib29sIEpTRXZlbnRMaXN0ZW5lcjo6b3BlcmF0
b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikKK2Jvb2wgSlNFdmVudExpc3RlbmVy
OjpvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyKSBjb25zdAogewogICAg
IGlmIChjb25zdCBKU0V2ZW50TGlzdGVuZXIqIGpzRXZlbnRMaXN0ZW5lciA9IEpTRXZlbnRMaXN0
ZW5lcjo6Y2FzdCgmbGlzdGVuZXIpKQogICAgICAgICByZXR1cm4gbV9qc0Z1bmN0aW9uID09IGpz
RXZlbnRMaXN0ZW5lci0+bV9qc0Z1bmN0aW9uICYmIG1faXNBdHRyaWJ1dGUgPT0ganNFdmVudExp
c3RlbmVyLT5tX2lzQXR0cmlidXRlOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUmVmPEpTRXZl
bnRMaXN0ZW5lcj4gY3JlYXRlSlNFdmVudExpc3RlbmVyRm9yQWRkKEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSwgSlNDOjpKU09iamVjdCYgbGlzdGVuZXIsIEpTQzo6SlNPYmplY3QmIHdyYXBwZXIpCi17
Ci0gICAgLy8gRklYTUU6IFRoaXMgYWJzdHJhY3Rpb24gaXMgbm8gbG9uZ2VyIG5lZWRlZC4gSXQg
d2FzIHBhcnQgb2Ygc3VwcG9ydCBmb3IgU1ZHRWxlbWVudEluc3RhbmNlLgotICAgIC8vIFdlIHNo
b3VsZCByZW1vdmUgaXQgYW5kIHNpbXBsaWZ5IHRoZSBiaW5kaW5ncyBnZW5lcmF0aW9uIHNjcmlw
dHMuCi0gICAgcmV0dXJuIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKCZsaXN0ZW5lciwgJndyYXBw
ZXIsIGZhbHNlLCBjdXJyZW50V29ybGQoJnN0YXRlKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlND
OjpKU1ZhbHVlIGV2ZW50SGFuZGxlckF0dHJpYnV0ZShFdmVudExpc3RlbmVyKiBhYnN0cmFjdExp
c3RlbmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogewogICAgIGlmICghYWJz
dHJhY3RMaXN0ZW5lcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3Rl
bmVyLmgKaW5kZXggYTAzOTU1MzcxYmYxY2YzY2NhODAwMGEyNDZiNGI2NjZhODllMmE5NS4uZTU1
YTI1YjBmNjk0M2UyMmIyODM5ZjE4OTE4M2U5Njc4YmI5MTczMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmgKQEAgLTQzLDYgKzQzLDE0IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSlNFdmVudExpc3RlbmVyKGxpc3RlbmVy
LCB3cmFwcGVyLCBpc0F0dHJpYnV0ZSwgd29ybGQpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgUmVm
UHRyPEpTRXZlbnRMaXN0ZW5lcj4gY3JlYXRlKEpTQzo6SlNWYWx1ZSBsaXN0ZW5lciwgSlNDOjpK
U09iamVjdCYgd3JhcHBlciwgYm9vbCBpc0F0dHJpYnV0ZSwgRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCkKKyAgICB7CisgICAgICAgIGlmIChVTkxJS0VMWSghbGlzdGVuZXIuaXNPYmplY3QoKSkpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEpTRXZlbnRMaXN0ZW5lcihKU0M6OmFzT2JqZWN0KGxpc3RlbmVyKSwgJndyYXBwZXIsIGlzQXR0
cmlidXRlLCB3b3JsZCkpOworICAgIH0KKwogICAgIHN0YXRpYyBjb25zdCBKU0V2ZW50TGlzdGVu
ZXIqIGNhc3QoY29uc3QgRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIpCiAgICAgewogICAgICAgICBy
ZXR1cm4gbGlzdGVuZXItPnR5cGUoKSA9PSBKU0V2ZW50TGlzdGVuZXJUeXBlCkBAIC01Miw3ICs2
MCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkpTRXZlbnRMaXN0ZW5lcigpOwogCi0gICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKSBvdmVycmlkZTsKKyAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3RoZXIpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgZXZlbnQgbGlzdGVuZXIgd2FzIGNy
ZWF0ZWQgZm9yIGFuIGV2ZW50IGhhbmRsZXIgYXR0cmlidXRlLCBsaWtlICJvbmxvYWQiIG9yICJv
bmNsaWNrIi4KICAgICBib29sIGlzQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbV9pc0F0dHJp
YnV0ZTsgfQpAQCAtOTksOSArMTA3LDYgQEAgdm9pZCBzZXREb2N1bWVudEV2ZW50SGFuZGxlckF0
dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNPYmplY3QmLCBIVE1MRWxlbWUKIEpTQzo6
SlNWYWx1ZSBkb2N1bWVudEV2ZW50SGFuZGxlckF0dHJpYnV0ZShEb2N1bWVudCYsIGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlKTsKIHZvaWQgc2V0RG9jdW1lbnRFdmVudEhhbmRsZXJBdHRy
aWJ1dGUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTT2JqZWN0JiwgRG9jdW1lbnQmLCBjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgSlNDOjpKU1ZhbHVlKTsKIAotUmVmPEpTRXZlbnRMaXN0
ZW5lcj4gY3JlYXRlSlNFdmVudExpc3RlbmVyRm9yQWRkKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpK
U09iamVjdCYgbGlzdGVuZXIsIEpTQzo6SlNPYmplY3QmIHdyYXBwZXIpOwotUmVmPEpTRXZlbnRM
aXN0ZW5lcj4gY3JlYXRlSlNFdmVudExpc3RlbmVyRm9yUmVtb3ZlKEpTQzo6RXhlY1N0YXRlJiwg
SlNDOjpKU09iamVjdCYgbGlzdGVuZXIsIEpTQzo6SlNPYmplY3QmIHdyYXBwZXIpOwotCiBpbmxp
bmUgSlNDOjpKU09iamVjdCogSlNFdmVudExpc3RlbmVyOjpqc0Z1bmN0aW9uKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIGNvbnN0CiB7CiAgICAgLy8gaW5p
dGlhbGl6ZUpTRnVuY3Rpb24gY2FuIHRyaWdnZXIgY29kZSB0aGF0IGRlbGV0ZXMgdGhpcyBldmVu
dCBsaXN0ZW5lcgpAQCAtMTMzLDExICsxMzgsNiBAQCBpbmxpbmUgSlNDOjpKU09iamVjdCogSlNF
dmVudExpc3RlbmVyOjpqc0Z1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdAog
ICAgIHJldHVybiBtX2pzRnVuY3Rpb24uZ2V0KCk7CiB9CiAKLWlubGluZSBSZWY8SlNFdmVudExp
c3RlbmVyPiBjcmVhdGVKU0V2ZW50TGlzdGVuZXJGb3JSZW1vdmUoSlNDOjpFeGVjU3RhdGUmIHN0
YXRlLCBKU0M6OkpTT2JqZWN0JiBsaXN0ZW5lciwgSlNDOjpKU09iamVjdCYgd3JhcHBlcikKLXsK
LSAgICByZXR1cm4gY3JlYXRlSlNFdmVudExpc3RlbmVyRm9yQWRkKHN0YXRlLCBsaXN0ZW5lciwg
d3JhcHBlcik7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEpTRXZl
bnRMaXN0ZW5lcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL09i
akNFdmVudExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL09iakNFdmVu
dExpc3RlbmVyLmgKaW5kZXggZjNlOTg0MzdmYmFhZDc5YTJjYjUzM2RiYjgzODE0MzM2MWYzYTUz
YS4uMjNjOTg0NTU1NGZlOThlNzA3MGY5ZjlhMWRiY2Y4N2Q1NzQzNDU2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9PYmpDRXZlbnRMaXN0ZW5lci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ0V2ZW50TGlzdGVuZXIuaApAQCAtNTIsNyAr
NTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgT2JqQ0V2ZW50TGlzdGVuZXIo
T2JqQ0xpc3RlbmVyKTsKICAgICAgICAgdmlydHVhbCB+T2JqQ0V2ZW50TGlzdGVuZXIoKTsKLSAg
ICAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYpOworICAg
ICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJikgY29uc3Q7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgRXZlbnQqKTsKIAogICAgICAgICBSZXRhaW5QdHI8T2JqQ0xpc3RlbmVyPiBtX2xpc3RlbmVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9PYmpDRXZlbnRMaXN0
ZW5lci5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ0V2ZW50TGlzdGVuZXIu
bW0KaW5kZXggMDk5ZDQ1NWMwY2E1YjQ3NTg3NDQ5N2VkZjI5ZTI3MTZiMWY0MDZjMy4uMzJmZTZl
NjUxYjE1MDUxYzIxMzIzYzc5YzYwMzk0OGIyNTQwYTQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvb2JqYy9PYmpDRXZlbnRMaXN0ZW5lci5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL09iakNFdmVudExpc3RlbmVyLm1tCkBAIC03OSw3ICs3OSw3IEBA
IHZvaWQgT2JqQ0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBFdmVudCogZXZlbnQpCiAgICAgW2xpc3RlbmVyIGhhbmRsZUV2ZW50OmtpdChldmVudCld
OwogfQogCi1ib29sIE9iakNFdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlz
dGVuZXImIGxpc3RlbmVyKQorYm9vbCBPYmpDRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25z
dCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikgY29uc3QKIHsKICAgICBpZiAoY29uc3QgT2JqQ0V2
ZW50TGlzdGVuZXIqIG9iakNFdmVudExpc3RlbmVyID0gT2JqQ0V2ZW50TGlzdGVuZXI6OmNhc3Qo
Jmxpc3RlbmVyKSkKICAgICAgICAgcmV0dXJuIG1fbGlzdGVuZXIgPT0gb2JqQ0V2ZW50TGlzdGVu
ZXItPm1fbGlzdGVuZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDY1ZDM2Zjk3NTlmYThkNmViZmQ1YTc1ZDZmMGM1YjRi
MjE2NGYwMzEuLmRiNTI1N2Y5ZDQwNzU1Y2NhODdjM2Y5MTVkYjc1NmJkNmFmYjg5NmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CkBAIC0xNDMsMjYgKzE0Myw2IEBAIHN1YiBFdmVudEhhbmRsZXJBdHRyaWJ1dGVFdmVudE5hbWUK
ICAgICByZXR1cm4gImV2ZW50TmFtZXMoKS4ke2V2ZW50VHlwZX1FdmVudCI7CiB9CiAKLXN1YiBH
ZW5lcmF0ZUV2ZW50TGlzdGVuZXJDYWxsCi17Ci0gICAgbXkgJGZ1bmN0aW9uTmFtZSA9IHNoaWZ0
OwotICAgIG15ICRzdWZmaXggPSB1Y2ZpcnN0ICRmdW5jdGlvbk5hbWU7Ci0gICAgbXkgJHBhc3NS
ZWZQdHJIYW5kbGluZyA9ICgkZnVuY3Rpb25OYW1lIGVxICJhZGQiKSA/ICIiIDogIi5wdHIoKSI7
Ci0KLSAgICAkaW1wbEluY2x1ZGVzeyJKU0V2ZW50TGlzdGVuZXIuaCJ9ID0gMTsKLQotICAgIG15
IEBHZW5lcmF0ZUV2ZW50TGlzdGVuZXJJbXBsID0gKCk7Ci0KLSAgICBwdXNoKEBHZW5lcmF0ZUV2
ZW50TGlzdGVuZXJJbXBsLCA8PEVORCk7Ci0gICAgSlNWYWx1ZSBsaXN0ZW5lciA9IHN0YXRlLT5h
cmd1bWVudCgxKTsKLSAgICBpZiAoVU5MSUtFTFkoIWxpc3RlbmVyLmlzT2JqZWN0KCkpKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGltcGwuJHtm
dW5jdGlvbk5hbWV9RXZlbnRMaXN0ZW5lcihzdGF0ZS0+YXJndW1lbnQoMCkudG9TdHJpbmcoc3Rh
dGUpLT50b0F0b21pY1N0cmluZyhzdGF0ZSksIGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvciRzdWZm
aXgoKnN0YXRlLCAqYXNPYmplY3QobGlzdGVuZXIpLCAqY2FzdGVkVGhpcykkcGFzc1JlZlB0ckhh
bmRsaW5nLCBzdGF0ZS0+YXJndW1lbnQoMikudG9Cb29sZWFuKHN0YXRlKSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLUVORAotICAgIHJldHVybiBAR2VuZXJh
dGVFdmVudExpc3RlbmVySW1wbDsKLX0KLQogc3ViIEdldFBhcmVudENsYXNzTmFtZQogewogICAg
IG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKQEAgLTE3MjIsNiArMTcwMiw5IEBAIHN1YiBHZXRGdW5j
dGlvbkxlbmd0aAogewogICAgIG15ICRmdW5jdGlvbiA9IHNoaWZ0OwogCisgICAgIyBGSVhNRTog
RXZlbnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigpIC8gcmVtb3ZlRXZlbnRMaXN0ZW5lcigpIGN1
cnJlbnRseSBzcGVjaWZpZXMgYWxsIHRoZSBwYXJhbWV0ZXJzIGFzIG9wdGlvbmFsLgorICAgIHJl
dHVybiAyIGlmICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lIGVxICJhZGRFdmVudExpc3RlbmVy
IiB8fCAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSBlcSAicmVtb3ZlRXZlbnRMaXN0ZW5lciI7
CisKICAgICBteSAkbGVuZ3RoID0gMDsKICAgICBmb3JlYWNoIG15ICRwYXJhbWV0ZXIgKEB7JGZ1
bmN0aW9uLT5wYXJhbWV0ZXJzfSkgewogICAgICAgICAjIEFib3J0IGFzIHNvb24gYXMgd2UgZmlu
ZCB0aGUgZmlyc3Qgb3B0aW9uYWwgcGFyYW1ldGVyIGFzIG5vIG1hbmRhdG9yeQpAQCAtMzIxNCwz
MCArMzE5NywyNCBAQCBFTkQKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtc
biIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxu
Iik7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgIyBGb3IgY29t
cGF0aWJpbGl0eSB3aXRoIGxlZ2FjeSBjb250ZW50LCB0aGUgRXZlbnRMaXN0ZW5lciBjYWxscyBh
cmUgZ2VuZXJhdGVkIHdpdGhvdXQgR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrLgotICAgICAg
ICAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUgZXEgImFkZEV2ZW50
TGlzdGVuZXIiKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
R2VuZXJhdGVFdmVudExpc3RlbmVyQ2FsbCgiYWRkIikpOwotICAgICAgICAgICAgICAgICAgICB9
IGVsc2lmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSBlcSAicmVtb3ZlRXZlbnRMaXN0ZW5l
ciIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0
ZUV2ZW50TGlzdGVuZXJDYWxsKCJyZW1vdmUiKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2so
XEBpbXBsQ29udGVudCwgJGZ1bmN0aW9uLCAkaW50ZXJmYWNlKTsKIAotICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCRyYWlzZXNFeGNlcHRpb25XaXRoTWVzc2FnZSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEV4Y2VwdGlvbkNvZGVXaXRo
TWVzc2FnZSBlYztcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJHJhaXNl
c0V4Y2VwdGlvbikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xuIik7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjayhc
QGltcGxDb250ZW50LCAkZnVuY3Rpb24sICRpbnRlcmZhY2UpOwogCi0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
aGVja1NlY3VyaXR5Rm9yTm9kZSJ9KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvTm9kZShzdGF0ZSwg
aW1wbC4iIC4gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUgLiAiKCIgLiAoJHJhaXNlc0V4Y2Vw
dGlvbiA/ICJlYyIgOiAiIikgLiIpKSlcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVs
bCgpKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpT
RE9NQmluZGluZy5oIn0gPSAxOwotICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICBpZiAoJHJhaXNlc0V4Y2VwdGlvbldpdGhNZXNzYWdlKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBFeGNlcHRpb25Db2RlV2l0aE1l
c3NhZ2UgZWM7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJHJhaXNlc0V4Y2Vw
dGlvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICAgICAgICAgICAgICBteSAkbnVtUGFyYW1ldGVycyA9IEB7JGZ1bmN0aW9uLT5wYXJh
bWV0ZXJzfTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG15ICgkZnVuY3Rpb25TdHJpbmcsICRk
dW1teSkgPSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayhcQGltcGxDb250ZW50LCAkZnVuY3Rpb24s
ICRpbnRlcmZhY2UsICRudW1QYXJhbWV0ZXJzLCAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUs
ICRzdmdQcm9wZXJ0eVR5cGUsICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSwgJHN2Z0xp
c3RQcm9wZXJ0eVR5cGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbkZ1bmN0aW9uQ2FsbCgkZnVuY3Rpb24sICRmdW5jdGlvblN0cmluZywgIiAgICAiLCAk
c3ZnUHJvcGVydHlUeXBlLCAkaW50ZXJmYWNlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRm
dW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tTZWN1cml0eUZv
ck5vZGUifSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgaWYgKCFzaG91bGRBbGxvd0FjY2Vzc1RvTm9kZShzdGF0ZSwgaW1wbC4iIC4gJGZ1bmN0aW9u
LT5zaWduYXR1cmUtPm5hbWUgLiAiKCIgLiAoJHJhaXNlc0V4Y2VwdGlvbiA/ICJlYyIgOiAiIikg
LiIpKSlcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpO1xuIik7CisgICAgICAgICAg
ICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU0RPTUJpbmRpbmcuaCJ9ID0gMTsKICAgICAg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIG15ICRudW1QYXJhbWV0ZXJz
ID0gQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OworICAgICAgICAgICAgICAgICAgICBteSAoJGZ1
bmN0aW9uU3RyaW5nLCAkZHVtbXkpID0gR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2soXEBpbXBsQ29u
dGVudCwgJGZ1bmN0aW9uLCAkaW50ZXJmYWNlLCAkbnVtUGFyYW1ldGVycywgJGZ1bmN0aW9uSW1w
bGVtZW50YXRpb25OYW1lLCAkc3ZnUHJvcGVydHlUeXBlLCAkc3ZnUHJvcGVydHlPckxpc3RQcm9w
ZXJ0eVR5cGUsICRzdmdMaXN0UHJvcGVydHlUeXBlKTsKKyAgICAgICAgICAgICAgICAgICAgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2FsbCgkZnVuY3Rpb24sICRmdW5jdGlvblN0cmlu
ZywgIiAgICAiLCAkc3ZnUHJvcGVydHlUeXBlLCAkaW50ZXJmYWNlKTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CiAKQEAgLTQ0MzYsNiArNDQxMyw5IEBAIHN1YiBKU1ZhbHVlVG9O
YXRpdmUKIAogICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKUyR0eXBlLmgiLCAkY29uZGl0aW9uYWwp
OwogCisgICAgIyBGSVhNRTogRXZlbnRMaXN0ZW5lciBzaG91bGQgYmUgYSBjYWxsYmFjayBpbnRl
cmZhY2UuCisgICAgcmV0dXJuICJKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZSgkdmFsdWUsICpjYXN0
ZWRUaGlzLCBmYWxzZSwgY3VycmVudFdvcmxkKHN0YXRlKSkiIGlmICR0eXBlIGVxICJFdmVudExp
c3RlbmVyIjsKKwogICAgIG15ICRleHRlbmRlZEF0dHJpYnV0ZXMgPSAkY29kZUdlbmVyYXRvci0+
Z2V0SW50ZXJmYWNlRXh0ZW5kZWRBdHRyaWJ1dGVzRnJvbU5hbWUoJHR5cGUpOwogICAgIHJldHVy
biAoIkpTJHt0eXBlfTo6dG9XcmFwcGVkKCpzdGF0ZSwgJHZhbHVlKSIsIDEpIGlmICRleHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21Ub05hdGl2ZU9iamVjdCJ9OwogICAgIHJldHVybiAoIkpT
JHt0eXBlfTo6dG9XcmFwcGVkKCR2YWx1ZSkiLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggZWY5NTg2Yzkz
OWU0NzdhYTU4YTgxMWFhZWI2ZmYwNjFlMTYwMGU2YS4uYWNkOWIzMmJhYjExNDA2MjdiZWE5NTRl
NzhlOTYxNmQwODRiZWZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTQzOTAsMTAgKzQzOTAsMTggQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFkZEV2
ZW50TGlzdGVuZXIoRXhlY1N0YXQKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgImFkZEV2ZW50TGlzdGVuZXIiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBzdGF0
ZS0+YXJndW1lbnQoMSk7Ci0gICAgaWYgKFVOTElLRUxZKCFsaXN0ZW5lci5pc09iamVjdCgpKSkK
KyAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQorICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOworICAgIGF1dG8gdHlwZSA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhz
dGF0ZSk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgYXV0byBsaXN0ZW5l
ciA9IEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKHN0YXRlLT5hcmd1bWVudCgxKSwgKmNhc3RlZFRo
aXMsIGZhbHNlLCBjdXJyZW50V29ybGQoc3RhdGUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWxpc3Rl
bmVyKSkKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAxLCAi
bGlzdGVuZXIiLCAiVGVzdE9iaiIsICJhZGRFdmVudExpc3RlbmVyIiwgIkV2ZW50TGlzdGVuZXIi
KTsKKyAgICBhdXRvIHVzZUNhcHR1cmUgPSBzdGF0ZS0+YXJndW1lbnQoMikudG9Cb29sZWFuKHN0
YXRlKTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBpbXBsLmFkZEV2ZW50
TGlzdGVuZXIoc3RhdGUtPmFyZ3VtZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dG9BdG9taWNTdHJp
bmcoc3RhdGUpLCBjcmVhdGVKU0V2ZW50TGlzdGVuZXJGb3JBZGQoKnN0YXRlLCAqYXNPYmplY3Qo
bGlzdGVuZXIpLCAqY2FzdGVkVGhpcyksIHN0YXRlLT5hcmd1bWVudCgyKS50b0Jvb2xlYW4oc3Rh
dGUpKTsKKyAgICBpbXBsLmFkZEV2ZW50TGlzdGVuZXIoV1RGTW92ZSh0eXBlKSwgKmxpc3RlbmVy
LCBXVEZNb3ZlKHVzZUNhcHR1cmUpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCkBAIC00NDA1LDEwICs0NDEzLDE4IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25SZW1vdmVFdmVudExpc3RlbmVy
KEV4ZWNTCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
aiIsICJyZW1vdmVFdmVudExpc3RlbmVyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIGxpc3RlbmVyID0gc3RhdGUtPmFyZ3VtZW50
KDEpOwotICAgIGlmIChVTkxJS0VMWSghbGlzdGVuZXIuaXNPYmplY3QoKSkpCisgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAg
ICBhdXRvIHR5cGUgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoc3RhdGUpOworICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIGF1dG8gbGlzdGVuZXIgPSBKU0V2ZW50
TGlzdGVuZXI6OmNyZWF0ZShzdGF0ZS0+YXJndW1lbnQoMSksICpjYXN0ZWRUaGlzLCBmYWxzZSwg
Y3VycmVudFdvcmxkKHN0YXRlKSk7CisgICAgaWYgKFVOTElLRUxZKCFsaXN0ZW5lcikpCisgICAg
ICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgMSwgImxpc3RlbmVyIiwg
IlRlc3RPYmoiLCAicmVtb3ZlRXZlbnRMaXN0ZW5lciIsICJFdmVudExpc3RlbmVyIik7CisgICAg
YXV0byB1c2VDYXB0dXJlID0gc3RhdGUtPmFyZ3VtZW50KDIpLnRvQm9vbGVhbihzdGF0ZSk7Cisg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgaW1wbC5yZW1vdmVFdmVudExpc3Rl
bmVyKHN0YXRlLT5hcmd1bWVudCgwKS50b1N0cmluZyhzdGF0ZSktPnRvQXRvbWljU3RyaW5nKHN0
YXRlKSwgY3JlYXRlSlNFdmVudExpc3RlbmVyRm9yUmVtb3ZlKCpzdGF0ZSwgKmFzT2JqZWN0KGxp
c3RlbmVyKSwgKmNhc3RlZFRoaXMpLnB0cigpLCBzdGF0ZS0+YXJndW1lbnQoMikudG9Cb29sZWFu
KHN0YXRlKSk7CisgICAgaW1wbC5yZW1vdmVFdmVudExpc3RlbmVyKFdURk1vdmUodHlwZSksICps
aXN0ZW5lciwgV1RGTW92ZSh1c2VDYXB0dXJlKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmgKaW5kZXgg
YmI0ZjlmMDJkZWFkNWVkMzEzY2U3NjQwNmE2ZDE5ZWQ4Yzg2ZjZkMS4uMjI0MzUyOTU1OWQ4MzAz
Mzc1NGZiMGU3MmJkZGM2NGM4Yzk1M2E3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5o
CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgdmlydHVhbCB+RXZlbnRM
aXN0ZW5lcigpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlz
dGVuZXImKSA9IDA7CisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0
ZW5lciYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIEV2ZW50KikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCB3YXNDcmVhdGVk
RnJvbU1hcmt1cCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudExpc3RlbmVyTWFwLmNwcAppbmRleCBmMTk3YzIwNjAxMWM4YmFhNDhkMzA4MWRkZmJjMjAx
YTA1ZTM4OTA4Li5iMDRlMTIxM2E1NWNiNjVjMmYyZTUyMzg5ZWU0NjRkN2Y4NDVlZWQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCkBAIC05NSw5ICs5NSw5IEBAIFZl
Y3RvcjxBdG9taWNTdHJpbmc+IEV2ZW50TGlzdGVuZXJNYXA6OmV2ZW50VHlwZXMoKSBjb25zdAog
ICAgIHJldHVybiB0eXBlczsKIH0KIAotc3RhdGljIGJvb2wgYWRkTGlzdGVuZXJUb1ZlY3RvcihF
dmVudExpc3RlbmVyVmVjdG9yKiB2ZWN0b3IsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlz
dGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK3N0YXRpYyBib29sIGFkZExpc3RlbmVyVG9WZWN0b3Io
RXZlbnRMaXN0ZW5lclZlY3RvciogdmVjdG9yLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5l
ciwgYm9vbCB1c2VDYXB0dXJlKQogewotICAgIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyIHJlZ2lz
dGVyZWRMaXN0ZW5lcihsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CisgICAgUmVnaXN0ZXJlZEV2ZW50
TGlzdGVuZXIgcmVnaXN0ZXJlZExpc3RlbmVyKFdURk1vdmUobGlzdGVuZXIpLCB1c2VDYXB0dXJl
KTsKIAogICAgIGlmICh2ZWN0b3ItPmZpbmQocmVnaXN0ZXJlZExpc3RlbmVyKSAhPSBub3RGb3Vu
ZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBEdXBsaWNhdGUgbGlzdGVuZXIuCkBAIC0xMDYs
MjAgKzEwNiwyMCBAQCBzdGF0aWMgYm9vbCBhZGRMaXN0ZW5lclRvVmVjdG9yKEV2ZW50TGlzdGVu
ZXJWZWN0b3IqIHZlY3RvciwgUGFzc1JlZlB0cjxFdmVudExpcwogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIEV2ZW50TGlzdGVuZXJNYXA6OmFkZChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJl
KQorYm9vbCBFdmVudExpc3RlbmVyTWFwOjphZGQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAg
ICAgYXNzZXJ0Tm9BY3RpdmVJdGVyYXRvcnMoKTsKIAogICAgIGZvciAoYXV0byYgZW50cnkgOiBt
X2VudHJpZXMpIHsKICAgICAgICAgaWYgKGVudHJ5LmZpcnN0ID09IGV2ZW50VHlwZSkKLSAgICAg
ICAgICAgIHJldHVybiBhZGRMaXN0ZW5lclRvVmVjdG9yKGVudHJ5LnNlY29uZC5nZXQoKSwgbGlz
dGVuZXIsIHVzZUNhcHR1cmUpOworICAgICAgICAgICAgcmV0dXJuIGFkZExpc3RlbmVyVG9WZWN0
b3IoZW50cnkuc2Vjb25kLmdldCgpLCBXVEZNb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiAg
ICAgfQogCiAgICAgbV9lbnRyaWVzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihldmVudFR5cGUsIHN0
ZDo6bWFrZV91bmlxdWU8RXZlbnRMaXN0ZW5lclZlY3Rvcj4oKSkpOwotICAgIHJldHVybiBhZGRM
aXN0ZW5lclRvVmVjdG9yKG1fZW50cmllcy5sYXN0KCkuc2Vjb25kLmdldCgpLCBsaXN0ZW5lciwg
dXNlQ2FwdHVyZSk7CisgICAgcmV0dXJuIGFkZExpc3RlbmVyVG9WZWN0b3IobV9lbnRyaWVzLmxh
c3QoKS5zZWNvbmQuZ2V0KCksIFdURk1vdmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKIH0KIAot
c3RhdGljIGJvb2wgcmVtb3ZlTGlzdGVuZXJGcm9tVmVjdG9yKEV2ZW50TGlzdGVuZXJWZWN0b3Iq
IGxpc3RlbmVyVmVjdG9yLCBFdmVudExpc3RlbmVyKiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJl
LCBzaXplX3QmIGluZGV4T2ZSZW1vdmVkTGlzdGVuZXIpCitzdGF0aWMgYm9vbCByZW1vdmVMaXN0
ZW5lckZyb21WZWN0b3IoRXZlbnRMaXN0ZW5lclZlY3RvciogbGlzdGVuZXJWZWN0b3IsIEV2ZW50
TGlzdGVuZXImIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUsIHNpemVfdCYgaW5kZXhPZlJlbW92
ZWRMaXN0ZW5lcikKIHsKICAgICBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciByZWdpc3RlcmVkTGlz
dGVuZXIobGlzdGVuZXIsIHVzZUNhcHR1cmUpOwogICAgIGluZGV4T2ZSZW1vdmVkTGlzdGVuZXIg
PSBsaXN0ZW5lclZlY3Rvci0+ZmluZChyZWdpc3RlcmVkTGlzdGVuZXIpOwpAQCAtMTI5LDcgKzEy
OSw3IEBAIHN0YXRpYyBib29sIHJlbW92ZUxpc3RlbmVyRnJvbVZlY3RvcihFdmVudExpc3RlbmVy
VmVjdG9yKiBsaXN0ZW5lclZlY3RvciwgRXZlbnRMCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgRXZlbnRMaXN0ZW5lck1hcDo6cmVtb3ZlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBFdmVudExpc3RlbmVyKiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlLCBzaXplX3QmIGluZGV4
T2ZSZW1vdmVkTGlzdGVuZXIpCitib29sIEV2ZW50TGlzdGVuZXJNYXA6OnJlbW92ZShjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wgdXNl
Q2FwdHVyZSwgc2l6ZV90JiBpbmRleE9mUmVtb3ZlZExpc3RlbmVyKQogewogICAgIGFzc2VydE5v
QWN0aXZlSXRlcmF0b3JzKCk7CiAKQEAgLTE4NSw3ICsxODUsNyBAQCBzdGF0aWMgdm9pZCBjb3B5
TGlzdGVuZXJzTm90Q3JlYXRlZEZyb21NYXJrdXBUb1RhcmdldChjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VAogICAgICAgICAvLyBFdmVudCBsaXN0ZW5lcnMgY3JlYXRlZCBmcm9tIG1hcmt1cCBo
YXZlIGFscmVhZHkgYmVlbiB0cmFuc2ZlcmVkIHRvIHRoZSBzaGFkb3cgdHJlZSBkdXJpbmcgY2xv
bmluZy4KICAgICAgICAgaWYgKGxpc3RlbmVyLmxpc3RlbmVyLT53YXNDcmVhdGVkRnJvbU1hcmt1
cCgpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHRhcmdldC0+YWRkRXZlbnRMaXN0
ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLmxpc3RlbmVyLmNvcHlSZWYoKSwgbGlzdGVuZXIudXNl
Q2FwdHVyZSk7CisgICAgICAgIHRhcmdldC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsICps
aXN0ZW5lci5saXN0ZW5lciwgbGlzdGVuZXIudXNlQ2FwdHVyZSk7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuaAppbmRleCA4OWZmNjY2OGQ3MmZmOTAxZDY4N2Qz
Yjc3ZmIzNDFiM2M2YjgxN2YwLi4xZWZlNmFiZjhjZWVkMmQ5NjNhYzc2MzE5MWMwYTJhOGZmOWI2
MzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmgKQEAgLTU0LDggKzU0LDgg
QEAgcHVibGljOgogICAgIGJvb2wgY29udGFpbnNDYXB0dXJpbmcoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUpIGNvbnN0OwogCiAgICAgdm9pZCBjbGVhcigpOwotICAgIGJvb2wgYWRkKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBi
b29sIHVzZUNhcHR1cmUpOwotICAgIGJvb2wgcmVtb3ZlKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlLCBzaXplX3QmIGluZGV4T2ZS
ZW1vdmVkTGlzdGVuZXIpOworICAgIGJvb2wgYWRkKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKTsKKyAgICBib29sIHJl
bW92ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYsIGJvb2wg
dXNlQ2FwdHVyZSwgc2l6ZV90JiBpbmRleE9mUmVtb3ZlZExpc3RlbmVyKTsKICAgICBFdmVudExp
c3RlbmVyVmVjdG9yKiBmaW5kKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKTsKICAgICBW
ZWN0b3I8QXRvbWljU3RyaW5nPiBldmVudFR5cGVzKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXQuY3BwCmluZGV4IGVjMjEwOTg2N2FjMzBkMGMzMWJlNjkyNjE2MzFjMzI1MTZmZWEz
Y2UuLmQyNDgzODU5M2QxN2Y2YWI1NmQ2ZDkwOTk1ODU5MjkwNTZiMGUwNTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0LmNwcApAQCAtNzUsMTIgKzc1LDI4IEBAIGJvb2wgRXZlbnRUYXJnZXQ6
OmlzTWVzc2FnZVBvcnQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBFdmVu
dFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
UmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wg
RXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAg
ICAgcmV0dXJuIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpLmV2ZW50TGlzdGVuZXJNYXAuYWRkKGV2
ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOwogfQogCi1ib29sIEV2ZW50
VGFyZ2V0OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBFdmVudExpc3RlbmVyKiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQordm9pZCBFdmVudFRh
cmdldDo6YWRkRXZlbnRMaXN0ZW5lckZvckJpbmRpbmdzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJl
KQoreworICAgIC8vIEZJWE1FOiBsaXN0ZW5lciBpcyBub3Qgc3VwcG9zZWQgdG8gYmUgbnVsbGFi
bGUuCisgICAgaWYgKCFsaXN0ZW5lcikKKyAgICAgICAgcmV0dXJuOworICAgIGFkZEV2ZW50TGlz
dGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lci5yZWxlYXNlTm9uTnVsbCgpLCB1c2VDYXB0dXJlKTsK
K30KKwordm9pZCBFdmVudFRhcmdldDo6cmVtb3ZlRXZlbnRMaXN0ZW5lckZvckJpbmRpbmdzKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0
ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQoreworICAgIC8vIEZJWE1FOiBsaXN0ZW5lciBpcyBub3Qg
c3VwcG9zZWQgdG8gYmUgbnVsbGFibGUuCisgICAgaWYgKCFsaXN0ZW5lcikKKyAgICAgICAgcmV0
dXJuOworICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCAqbGlzdGVuZXIsIHVzZUNh
cHR1cmUpOworfQorCitib29sIEV2ZW50VGFyZ2V0OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCB1
c2VDYXB0dXJlKQogewogICAgIEV2ZW50VGFyZ2V0RGF0YSogZCA9IGV2ZW50VGFyZ2V0RGF0YSgp
OwogICAgIGlmICghZCkKQEAgLTExMCwxMiArMTI2LDEyIEBAIGJvb2wgRXZlbnRUYXJnZXQ6OnJl
bW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlz
dGVuCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRXZlbnRUYXJnZXQ6OnNldEF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpCitib29sIEV2ZW50VGFyZ2V0OjpzZXRBdHRyaWJ1dGVF
dmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4mJiBsaXN0ZW5lcikKIHsKICAgICBjbGVhckF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIo
ZXZlbnRUeXBlKTsKICAgICBpZiAoIWxpc3RlbmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmV0dXJuIGFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgZmFsc2UpOwor
ICAgIHJldHVybiBhZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIucmVsZWFzZU5v
bk51bGwoKSwgZmFsc2UpOwogfQogCiBFdmVudExpc3RlbmVyKiBFdmVudFRhcmdldDo6Z2V0QXR0
cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkKQEAgLTEz
Miw3ICsxNDgsNyBAQCBib29sIEV2ZW50VGFyZ2V0OjpjbGVhckF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpCiAgICAgRXZlbnRMaXN0ZW5lciogbGlz
dGVuZXIgPSBnZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSk7CiAgICAgaWYgKCFs
aXN0ZW5lcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiByZW1vdmVFdmVudExp
c3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIGZhbHNlKTsKKyAgICByZXR1cm4gcmVtb3ZlRXZl
bnRMaXN0ZW5lcihldmVudFR5cGUsICpsaXN0ZW5lciwgZmFsc2UpOwogfQogCiBib29sIEV2ZW50
VGFyZ2V0OjpkaXNwYXRjaEV2ZW50Rm9yQmluZGluZ3MoRXZlbnQqIGV2ZW50LCBFeGNlcHRpb25D
b2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKaW5kZXggZjliMGYyMTE3NGY1NDE4ZDUx
ZjdkNTQzODFiMDFjODc4MjEyZWFhZi4uMWIxZGVkMTlhNWQ5Y2E1NjY0ZTUwYTk5OWQ2YzNlZmI5
MmE3ZWU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKQEAgLTEyMSwxNSArMTIxLDE4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIERPTVdpbmRvdyogdG9ET01XaW5kb3coKTsKICAgICB2aXJ0
dWFsIGJvb2wgaXNNZXNzYWdlUG9ydCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBib29sIGFkZEV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExp
c3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpOwotICAgIHZpcnR1YWwgYm9vbCByZW1vdmVFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwg
Ym9vbCB1c2VDYXB0dXJlKTsKKyAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXJGb3JCaW5kaW5ncyhj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJv
b2wgdXNlQ2FwdHVyZSk7CisgICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyRm9yQmluZGluZ3Mo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBi
b29sIHVzZUNhcHR1cmUpOworICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VD
YXB0dXJlKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYsIGJvb2wgdXNlQ2FwdHVyZSk7CisK
ICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKICAgICB2aXJ0dWFs
IGJvb2wgZGlzcGF0Y2hFdmVudChFdmVudCYpOwogICAgIGJvb2wgZGlzcGF0Y2hFdmVudEZvckJp
bmRpbmdzKEV2ZW50KiwgRXhjZXB0aW9uQ29kZSYpOyAvLyBET00gQVBJCiAgICAgdmlydHVhbCB2
b2lkIHVuY2F1Z2h0RXhjZXB0aW9uSW5FdmVudEhhbmRsZXIoKTsKIAogICAgIC8vIFVzZWQgZm9y
IGxlZ2FjeSAib25FdmVudCIgYXR0cmlidXRlIEFQSXMuCi0gICAgYm9vbCBzZXRBdHRyaWJ1dGVF
dmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2
ZW50TGlzdGVuZXI+KTsKKyAgICBib29sIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmKTsKICAgICBi
b29sIGNsZWFyQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSk7CiAgICAgRXZlbnRMaXN0ZW5lciogZ2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaWRs
CmluZGV4IDU5M2U0YzA2ODZhMDhiOTBjMTNlYmViZjZjZWMyODJmNGI3NmU4NWQuLmM1OTQ1ODk2
ZTAwYTY2NzU2MzkwMzlhMDg2MWZmNjY1NzVlZGJlMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0LmlkbApAQCAtMjUsOCArMjUsMTAgQEAKICAgICBKU0N1c3RvbVRvTmF0aXZlT2JqZWN0LAog
ICAgIE9iakNQcm90b2NvbCwKIF0gaW50ZXJmYWNlIEV2ZW50VGFyZ2V0IHsKLSAgICBbT2JqQ0xl
Z2FjeVVubmFtZWRQYXJhbWV0ZXJzXSB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoRE9NU3RyaW5nIHR5
cGUsIEV2ZW50TGlzdGVuZXI/IGxpc3RlbmVyLCBvcHRpb25hbCBib29sZWFuIHVzZUNhcHR1cmUg
PSBmYWxzZSk7Ci0gICAgW09iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVyc10gdm9pZCByZW1vdmVF
dmVudExpc3RlbmVyKERPTVN0cmluZyB0eXBlLCBFdmVudExpc3RlbmVyPyBsaXN0ZW5lciwgb3B0
aW9uYWwgYm9vbGVhbiB1c2VDYXB0dXJlID0gZmFsc2UpOworICAgIC8vIEZJWE1FOiBUaGUgJ3R5
cGUnIGFuZCAnbGlzdGVuZXInIHBhcmFtZXRlcnMgc2hvdWxkIG5vdCBiZSBvcHRpb25hbC4KKyAg
ICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzLCBJbXBsZW1lbnRlZEFzPWFkZEV2ZW50TGlz
dGVuZXJGb3JCaW5kaW5nc10gdm9pZCBhZGRFdmVudExpc3RlbmVyKFtBdG9taWNTdHJpbmddIG9w
dGlvbmFsIERPTVN0cmluZyB0eXBlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIEV2ZW50TGlzdGVu
ZXI/IGxpc3RlbmVyLCBvcHRpb25hbCBib29sZWFuIHVzZUNhcHR1cmUgPSBmYWxzZSk7CisgICAg
W09iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVycywgSW1wbGVtZW50ZWRBcz1yZW1vdmVFdmVudExp
c3RlbmVyRm9yQmluZGluZ3NdIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihbQXRvbWljU3RyaW5n
XSBvcHRpb25hbCBET01TdHJpbmcgdHlwZSA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCBFdmVudExp
c3RlbmVyPyBsaXN0ZW5lciwgb3B0aW9uYWwgYm9vbGVhbiB1c2VDYXB0dXJlID0gZmFsc2UpOwor
CiAgICAgLy8gRklYTUU6IGV2ZW50IHNob3VsZCBub3QgYmUgbnVsbGFibGUuCiAgICAgW0ltcGxl
bWVudGVkQXM9ZGlzcGF0Y2hFdmVudEZvckJpbmRpbmdzLCBSYWlzZXNFeGNlcHRpb25dIGJvb2xl
YW4gZGlzcGF0Y2hFdmVudChFdmVudD8gZXZlbnQpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBv
cnQuY3BwCmluZGV4IDVhODRhNDRhMjA4YWJlYmU0MTNiOTlmMTFlNmY1MDExOWRhNDAyYjguLjNk
Nzg0N2NhZWRiMjkyMGUzYjI2NGI2NTJiYzU0Y2JjMzQ3OGEzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VQb3J0LmNwcApAQCAtMjIxLDkgKzIyMSw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdl
UG9ydEFycmF5PiBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhTY3JpcHRFeGVjdXRpb25Db250
CiAgICAgcmV0dXJuIHBvcnRBcnJheTsKIH0KIAotYm9vbCBNZXNzYWdlUG9ydDo6YWRkRXZlbnRM
aXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVu
ZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgTWVzc2FnZVBvcnQ6OmFkZEV2
ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3Rl
bmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7Ci0gICAgaWYgKGxpc3RlbmVyICYm
IGxpc3RlbmVyLT5pc0F0dHJpYnV0ZSgpICYmIGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkubWVz
c2FnZUV2ZW50KQorICAgIGlmIChsaXN0ZW5lci0+aXNBdHRyaWJ1dGUoKSAmJiBldmVudFR5cGUg
PT0gZXZlbnROYW1lcygpLm1lc3NhZ2VFdmVudCkKICAgICAgICAgc3RhcnQoKTsKICAgICByZXR1
cm4gRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUs
IFdURk1vdmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0
LmgKaW5kZXggYmFlMDFkNWI5NTFkZDc4MjM3YWZkZjg3MjMxNGY4MjRkMTU3YjE2ZS4uOWNhMTI0
ZjRhMmVmYzk4MWRmNTU2M2JiYmI3NTA0NmY3OWNmY2RlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQ
b3J0LmgKQEAgLTkyLDcgKzkyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBB
IHBvcnQgZ2V0cyBuZXV0ZXJlZCB3aGVuIGl0IGlzIHRyYW5zZmVycmVkIHRvIGEgbmV3IG93bmVy
IHZpYSBwb3N0TWVzc2FnZSgpLgogICAgICAgICBib29sIGlzTmV1dGVyZWQoKSB7IHJldHVybiAh
bV9lbnRhbmdsZWRDaGFubmVsOyB9CiAKLSAgICAgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9v
bCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKKyAgICAgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1
c2VDYXB0dXJlKSBvdmVycmlkZTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0IE1l
c3NhZ2VQb3J0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBm
NDdiYWI3MzJhMWVkMzU3NjVlOGVhYmI0M2E4NDU1OTk4NGVlOTUxLi4wNGI5MjE4ZjMzMmVhZTY3
ZTFkYWJkZDU2NzRhOWZiMjRiMDczYWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xOTAyLDcgKzE5
MDIsNyBAQCB2b2lkIE5vZGU6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1
bWVudCkKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCB0cnlBZGRFdmVudExpc3RlbmVy
KE5vZGUqIHRhcmdldE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorc3RhdGljIGlubGlu
ZSBib29sIHRyeUFkZEV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVz
ZUNhcHR1cmUpCiB7CiAgICAgaWYgKCF0YXJnZXROb2RlLT5FdmVudFRhcmdldDo6YWRkRXZlbnRM
aXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLmNvcHlSZWYoKSwgdXNlQ2FwdHVyZSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTE5MzgsMTIgKzE5MzgsMTIgQEAgc3RhdGljIGlubGluZSBi
b29sIHRyeUFkZEV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBldmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBOb2RlOjphZGRFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4m
JiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBOb2RlOjphZGRFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0
ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIHJldHVybiB0cnlBZGRFdmVudExpc3RlbmVy
KHRoaXMsIGV2ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOwogfQogCi1z
dGF0aWMgaW5saW5lIGJvb2wgdHJ5UmVtb3ZlRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJnZXROb2Rl
LCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIs
IGJvb2wgdXNlQ2FwdHVyZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCB0cnlSZW1vdmVFdmVudExpc3Rl
bmVyKE5vZGUqIHRhcmdldE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVu
dExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIGlmICghdGFyZ2V0
Tm9kZS0+RXZlbnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5l
ciwgdXNlQ2FwdHVyZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE5NzksNyArMTk3OSw3
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB0cnlSZW1vdmVFdmVudExpc3RlbmVyKE5vZGUqIHRhcmdl
dE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBO
b2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBF
dmVudExpc3RlbmVyKiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQorYm9vbCBOb2RlOjpyZW1v
dmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3Rl
bmVyJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIHJldHVybiB0cnlSZW1vdmVF
dmVudExpc3RlbmVyKHRoaXMsIGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmgKaW5kZXggMWRiZGM3NTIyN2I2MjIxOWY0NWYyNTZmMDBmYmJiZDAwYTRlMDM3Yy4u
OGRlZTFjMGRmNTZhMzI2NGRkNmFjZTNjZDRmM2FiMGZmZDk3ODIxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBA
IC01MDYsOCArNTA2LDggQEAgcHVibGljOgogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50
VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsOyAvLyBJbXBsZW1lbnRl
ZCBpbiBEb2N1bWVudC5oCiAKLSAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1
cmUpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJp
ZGU7CisgICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKKyAg
ICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IEV2ZW50TGlzdGVuZXImLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwogCiAgICAgdXNpbmcg
RXZlbnRUYXJnZXQ6OmRpc3BhdGNoRXZlbnQ7CiAgICAgYm9vbCBkaXNwYXRjaEV2ZW50KEV2ZW50
Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmVnaXN0ZXJlZEV2
ZW50TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5l
ci5oCmluZGV4IDEyNDgzZmE2MTE4OWUyZWUzZjQ0ODI2NGE2NWY1OTNlMjRjMDg5ZGIuLjNmMjIy
NjQ0NzgyMzFiMWRhZDUyZWFmNWNiMWY4ODAxODIwZjRkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9SZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oCkBAIC0zMSw4ICszMSw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyKFBhc3NSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4gbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKLSAgICAgICAgICAgIDogbGlzdGVu
ZXIobGlzdGVuZXIpCisgICAgICAgIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyKFJlZjxFdmVudExp
c3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCisgICAgICAgICAgICA6IGxpc3Rl
bmVyKFdURk1vdmUobGlzdGVuZXIpKQogICAgICAgICAgICAgLCB1c2VDYXB0dXJlKHVzZUNhcHR1
cmUpCiAgICAgICAgIHsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKaW5kZXggMGU0MTBmZDU0YzUzYzEzNDM5ZDMwYTRmMjY2Yjg3MjUxYTUzZTdhMi4u
ZWY2Yzk4YTNlY2Q2MzYzOTU0NGJhOTQ0OGQ5NTIwMTk3NTBkYzVhZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01MjE2LDcgKzUyMTYsNyBAQCBib29sIEhU
TUxNZWRpYUVsZW1lbnQ6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogICAgIHJldHVybiBI
VE1MRWxlbWVudDo6ZGlzcGF0Y2hFdmVudChldmVudCk7CiB9CiAKLWJvb2wgSFRNTE1lZGlhRWxl
bWVudDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVm
UHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgSFRN
TE1lZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsK
ICAgICBpZiAoZXZlbnRUeXBlICE9IGV2ZW50TmFtZXMoKS53ZWJraXRwbGF5YmFja3RhcmdldGF2
YWlsYWJpbGl0eWNoYW5nZWRFdmVudCkKICAgICAgICAgcmV0dXJuIE5vZGU6OmFkZEV2ZW50TGlz
dGVuZXIoZXZlbnRUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CkBAIC01MjM2
LDcgKzUyMzYsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdgogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIHVzZUNh
cHR1cmUpCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBib29sIHVz
ZUNhcHR1cmUpCiB7CiAgICAgaWYgKGV2ZW50VHlwZSAhPSBldmVudE5hbWVzKCkud2Via2l0cGxh
eWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkRXZlbnQpCiAgICAgICAgIHJldHVybiBOb2Rl
OjpyZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCAzNzJlMGZmMTE5M2RmODMx
MTcyYmNhMTcxNzJhOGNhYWJlZjZhMDVhLi4wNGQwZGJkNmRjMWNlYjgzY2YyZTUwYzJkMmM4MWEw
OTFjMTE4NDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMzQ0
LDggKzM0NCw4IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJH
RVQpCiAgICAgdm9pZCB3ZWJraXRTaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoKTsKLSAgICBib29s
IGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxF
dmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVt
b3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0
ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CisgICAgYm9vbCBhZGRFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiwg
Ym9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKKyAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBib29sIHVzZUNh
cHR1cmUpIG92ZXJyaWRlOwogCiAgICAgdm9pZCB3aXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENo
YW5nZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgY2FuUGxheVRvV2lyZWxlc3NQbGF5YmFja1Rhcmdl
dCgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5k
ZXggMmYzNWIyOWIzOWI2NzI4ZGUwYmE4NTc1ZWQ3NTY4ODgzZTU3N2NlNi4uN2ZkMmM3YzllNTc2
YTk1YWIxNGY5Y2Q3YmU5YmM3YTA4MGUzZmFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9j
dW1lbnQuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJikgb3ZlcnJpZGU7CisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImKSBjb25zdCBvdmVycmlkZTsKICAgICB2
b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCopIG92ZXJyaWRl
OwogCiAgICAgSW1hZ2VEb2N1bWVudCYgbV9kb2N1bWVudDsKQEAgLTIzNyw3ICsyMzcsNyBAQCB2
b2lkIEltYWdlRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCkKICAgICAgICAgLy8g
U2V0IHRoZSB2aWV3cG9ydCB0byBiZSBpbiBkZXZpY2UgcGl4ZWxzIChyYXRoZXIgdGhhbiB0aGUg
ZGVmYXVsdCBvZiA5ODApLgogICAgICAgICBwcm9jZXNzVmlld3BvcnQoQVNDSUlMaXRlcmFsKCJ3
aWR0aD1kZXZpY2Utd2lkdGgiKSwgVmlld3BvcnRBcmd1bWVudHM6OkltYWdlRG9jdW1lbnQpOwog
I2Vsc2UKLSAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gSW1hZ2VFdmVu
dExpc3RlbmVyOjpjcmVhdGUoKnRoaXMpOworICAgICAgICBhdXRvIGxpc3RlbmVyID0gSW1hZ2VF
dmVudExpc3RlbmVyOjpjcmVhdGUoKnRoaXMpOwogICAgICAgICBpZiAoRE9NV2luZG93KiB3aW5k
b3cgPSB0aGlzLT5kb21XaW5kb3coKSkKICAgICAgICAgICAgIHdpbmRvdy0+YWRkRXZlbnRMaXN0
ZW5lcigicmVzaXplIiwgbGlzdGVuZXIuY29weVJlZigpLCBmYWxzZSk7CiAgICAgICAgIGltYWdl
RWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBXVEZNb3ZlKGxpc3RlbmVyKSwgZmFs
c2UpOwpAQCAtNDA3LDcgKzQwNyw3IEBAIHZvaWQgSW1hZ2VFdmVudExpc3RlbmVyOjpoYW5kbGVF
dmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqIGV2ZW50KQogICAgIH0KIH0KIAot
Ym9vbCBJbWFnZUV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYg
b3RoZXIpCitib29sIEltYWdlRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExp
c3RlbmVyJiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBBbGwgSW1hZ2VFdmVudExpc3RlbmVyIG9i
amVjdHMgY29tcGFyZSBhcyBlcXVhbDsgT0sgc2luY2UgdGhlcmUgaXMgb25seSBvbmUgcGVyIGRv
Y3VtZW50LgogICAgIHJldHVybiBvdGhlci50eXBlKCkgPT0gSW1hZ2VFdmVudExpc3RlbmVyVHlw
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNB
cHBsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUu
Y3BwCmluZGV4IGNmN2FjNGJjZmY3MzI0ZTllMDAyYTljNzA0ZjMwMjJmOTMxOGY2MDIuLmQ5N2Rh
NzhlNTYxMTM3MWFjYjRkMjlkYjAwZTBlZTBiY2M3NDdmZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcApAQCAtNTA5LDE1ICs1MDks
MTUgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQXBwbGU6OnNob3dDbG9zZWRDYXB0aW9uVHJhY2tMaXN0
KCkKICAgICBtX3BhbmVsLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5UG9pbnRl
ckV2ZW50cywgQ1NTVmFsdWVOb25lKTsKIAogICAgIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyID0g
ZXZlbnRMaXN0ZW5lcigpOwotICAgIG1fY2xvc2VkQ2FwdGlvbnNDb250YWluZXItPmFkZEV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLndoZWVsRXZlbnQsICZsaXN0ZW5lciwgdHJ1ZSk7CisgICAg
bV9jbG9zZWRDYXB0aW9uc0NvbnRhaW5lci0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCku
d2hlZWxFdmVudCwgbGlzdGVuZXIsIHRydWUpOwogCiAgICAgLy8gVHJhY2sgY2xpY2sgZXZlbnRz
IGluIHRoZSBjYXB0dXJlIHBoYXNlIGF0IHR3byBsZXZlbHMsIGZpcnN0IGF0IHRoZSBkb2N1bWVu
dCBsZXZlbAogICAgIC8vIHN1Y2ggdGhhdCBhIGNsaWNrIG91dHNpZGUgb2YgdGhlIDx2aWRlbz4g
bWF5IGRpc21pc3MgdGhlIHRyYWNrIGxpc3QsIHNlY29uZCBhdCB0aGUKICAgICAvLyBtZWRpYSBj
b250cm9scyBsZXZlbCBzdWNoIHRoYXQgYSBjbGljayBhbnl3aGVyZSBvdXRzaWRlIG9mIHRoZSB0
cmFjayBsaXN0IGhpZGVzIHRoZQogICAgIC8vIHRyYWNrIGxpc3QuIFRoZXNlIHR3byBsZXZlbHMg
YXJlIG5lY2Vzc2FyeSBzaW5jZSBpdCB3b3VsZCBub3QgYmUgcG9zc2libGUgdG8gZ2V0IGEKICAg
ICAvLyByZWZlcmVuY2UgdG8gdGhlIHRyYWNrIGxpc3Qgd2hlbiBoYW5kbGluZyB0aGUgZXZlbnQg
b3V0c2lkZSBvZiB0aGUgc2hhZG93IHRyZWUuCi0gICAgZG9jdW1lbnQoKS5hZGRFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCAmbGlzdGVuZXIsIHRydWUpOwotICAgIGFkZEV2
ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsICZsaXN0ZW5lciwgdHJ1ZSk7Cisg
ICAgZG9jdW1lbnQoKS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBs
aXN0ZW5lciwgdHJ1ZSk7CisgICAgYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tF
dmVudCwgbGlzdGVuZXIsIHRydWUpOwogfQogCiB2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6aGlk
ZUNsb3NlZENhcHRpb25UcmFja0xpc3QoKQpAQCAtNTMxLDkgKzUzMSw5IEBAIHZvaWQgTWVkaWFD
b250cm9sc0FwcGxlOjpoaWRlQ2xvc2VkQ2FwdGlvblRyYWNrTGlzdCgpCiAgICAgbV9wYW5lbC0+
cmVtb3ZlSW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHMpOwogCiAg
ICAgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIgPSBldmVudExpc3RlbmVyKCk7Ci0gICAgbV9jbG9z
ZWRDYXB0aW9uc0NvbnRhaW5lci0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkud2hl
ZWxFdmVudCwgJmxpc3RlbmVyLCB0cnVlKTsKLSAgICBkb2N1bWVudCgpLnJlbW92ZUV2ZW50TGlz
dGVuZXIoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsICZsaXN0ZW5lciwgdHJ1ZSk7Ci0gICAgcmVt
b3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgJmxpc3RlbmVyLCB0cnVl
KTsKKyAgICBtX2Nsb3NlZENhcHRpb25zQ29udGFpbmVyLT5yZW1vdmVFdmVudExpc3RlbmVyKGV2
ZW50TmFtZXMoKS53aGVlbEV2ZW50LCBsaXN0ZW5lciwgdHJ1ZSk7CisgICAgZG9jdW1lbnQoKS5y
ZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBsaXN0ZW5lciwgdHJ1
ZSk7CisgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgbGlz
dGVuZXIsIHRydWUpOwogfQogCiB2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6c2V0RnVsbHNjcmVl
blNsaWRlclZvbHVtZSgpCkBAIC01OTUsNyArNTk1LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzQXBw
bGVFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZl
bnQKICAgICB9CiB9CiAKLWJvb2wgTWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0ZW5lcjo6b3Bl
cmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikKK2Jvb2wgTWVkaWFDb250cm9s
c0FwcGxlRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0
ZW5lcikgY29uc3QKIHsKICAgICBpZiAoY29uc3QgTWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0
ZW5lciogbWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0ZW5lciA9IE1lZGlhQ29udHJvbHNBcHBs
ZUV2ZW50TGlzdGVuZXI6OmNhc3QoJmxpc3RlbmVyKSkKICAgICAgICAgcmV0dXJuIG1fbWVkaWFD
b250cm9scyA9PSBtZWRpYUNvbnRyb2xzQXBwbGVFdmVudExpc3RlbmVyLT5tX21lZGlhQ29udHJv
bHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xz
QXBwbGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5o
CmluZGV4IDY5OGNjMzg5ZDlmMmQ3MjAyYmYyNDFkY2MxYmFmNzNmMDNiZjA0MjkuLmYyOGRkNmI3
ZjUxNDEwYjFjZGVlZDQyYzgzM2UwY2ZmOTNkMWNjMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5oCkBAIC00NSw3ICs0NSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIDogMDsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
RXZlbnRMaXN0ZW5lciYgb3RoZXIpIG92ZXJyaWRlOworICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBFdmVudExpc3RlbmVyJiBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAg
TWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0ZW5lcihNZWRpYUNvbnRyb2xzQXBwbGUqIG1lZGlh
Q29udHJvbHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
ZGV4ZWREQkFnZW50LmNwcAppbmRleCA0NDE1NDMyMTQ0OGQxMTU0NWYyMTE0MjJjMWRmZDgwMzlm
OGU2NDcwLi5hYzBlZGQ0ODZhZGY0YzJkZTA3YzgyYWFhYWM2YjMxMzEwMDJjYmVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5j
cHAKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5PcGVuRGF0YWJh
c2VDYWxsYmFjaygpIHsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVu
ZXImIG90aGVyKSBvdmVycmlkZQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3Rl
bmVyJiBvdGhlcikgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzID09
ICZvdGhlcjsKICAgICB9CkBAIC0zNzEsNyArMzcxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB+T3BlbkN1cnNvckNhbGxiYWNrKCkgeyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
RXZlbnRMaXN0ZW5lciYgb3RoZXIpIG92ZXJyaWRlCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEV2ZW50TGlzdGVuZXImIG90aGVyKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMgPT0gJm90aGVyOwogICAgIH0KQEAgLTY2MCw3ICs2NjAsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIH5DbGVhck9iamVjdFN0b3JlTGlzdGVuZXIoKSB7IH0KIAotICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgb3ZlcnJpZGUKKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3RoZXIpIGNvbnN0IG92ZXJyaWRlCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcyA9PSAmb3RoZXI7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuY3BwCmluZGV4IDc4ZDZmYTk5MDVlYjZhYmNkMzIzNDA4YjYwMWMzNmVhY2Q0OTIx
YWUuLmZlZmRiNTgwYWZjNWExYzY0YWI3MWRjNzU3ODlkMjkxOTliYjYwOTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAKQEAgLTE3MjMsNyArMTcyMyw3IEBAIGJvb2wgRE9NV2luZG93Ojpp
c1NhbWVTZWN1cml0eU9yaWdpbkFzTWFpbkZyYW1lKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLWJvb2wgRE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgYm9vbCB1c2VD
YXB0dXJlKQorYm9vbCBET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNh
cHR1cmUpCiB7CiAgICAgaWYgKCFFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5
cGUsIFdURk1vdmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMTgyNiw3ICsxODI2LDcgQEAgdm9pZCBET01XaW5kb3c6OnJlc2V0QWxsR2VvbG9jYXRp
b25QZXJtaXNzaW9uKCkKICNlbmRpZgogfQogCi1ib29sIERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRM
aXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciogbGlz
dGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKK2Jvb2wgRE9NV2luZG93OjpyZW1vdmVFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5l
ciwgYm9vbCB1c2VDYXB0dXJlKQogewogICAgIGlmICghRXZlbnRUYXJnZXQ6OnJlbW92ZUV2ZW50
TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCmluZGV4IDRiMjRiOTk4MTM3NzMyNzYzOGI2
NGU2ODdkNzVmZTJmZDhkODcyZWUuLjAxNThlMTQwNjYyNzQ4ZmM4OTRmOTI1ODE0ZDQ2MjQ4MWJm
YWY0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApAQCAtMjc5LDggKzI3OSw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICAvLyBFdmVudHMKICAgICAgICAgLy8gRXZlbnRUYXJn
ZXQgQVBJCi0gICAgICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3Zl
cnJpZGU7Ci0gICAgICAgIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7
CisgICAgICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7Cisg
ICAgICAgIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgRXZlbnRMaXN0ZW5lciYsIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CiAgICAgICAg
IHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSBvdmVycmlkZTsKIAogICAgICAgICB1c2lu
ZyBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlh
RWxlbWVudC5oCmluZGV4IDliNTczOWNiYTgxNjlhMDRmZmExMmUxNDkzMjhiN2MzNDUzMDAyZTku
LjBiZjQxNDY0ODExYTA0OWE1NGVmOWYyNDVlY2JjZmMzMzA0ZTYwZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tT
ZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZUV2ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBXZWJDb3JlOjpFdmVudCopIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlRm9yRXZl
bnROYW1lKGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJik7Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEV2ZW50TGlzdGVuZXImIHJocykgZmluYWwgeyByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6RXZlbnRMaXN0ZW5lcio+KHRoaXMpID09ICZyaHM7IH0KKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgRXZlbnRMaXN0ZW5lciYgcmhzKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxjb25zdCBXZWJDb3JlOjpFdmVudExpc3RlbmVyKj4odGhpcykgPT0gJnJoczsgfQogCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF5KCkgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBwYXVzZSgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQpp
bmRleCAxMzZkZGNlNWVlZTA5NTY1NDNiYTkzYjk4ZjdhMTM4YWE5OWViODE1Li44ZjQwNWRiZTg1
NmY0ZTcxYTUwMjVhMjJhMTMzNzRkYmZlZDM2OWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bE1lZGlhRWxlbWVudC5tbQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50OjpzZXRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVk
aQogCiAgICAgaWYgKG1fbWVkaWFFbGVtZW50ICYmIG1faXNMaXN0ZW5pbmcpIHsKICAgICAgICAg
Zm9yIChhdXRvJiBldmVudE5hbWUgOiBvYnNlcnZlZEV2ZW50TmFtZXMoKSkKLSAgICAgICAgICAg
IG1fbWVkaWFFbGVtZW50LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgdGhpcywgZmFs
c2UpOworICAgICAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lLCAqdGhpcywgZmFsc2UpOwogICAgIH0KICAgICBtX2lzTGlzdGVuaW5nID0gZmFsc2U7
CiAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFF
bGVtZW50OjpzZXRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaQogICAgICAgICBy
ZXR1cm47CiAKICAgICBmb3IgKGF1dG8mIGV2ZW50TmFtZSA6IG9ic2VydmVkRXZlbnROYW1lcygp
KQotICAgICAgICBtX21lZGlhRWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIHRo
aXMsIGZhbHNlKTsKKyAgICAgICAgbV9tZWRpYUVsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lLCAqdGhpcywgZmFsc2UpOwogICAgIG1faXNMaXN0ZW5pbmcgPSB0cnVlOwogCiAgICAg
dXBkYXRlRm9yRXZlbnROYW1lKGV2ZW50TmFtZUFsbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudC5oCmluZGV4IDVhY2NmNzI0YWRmYjA4NjVmZDA3OTM2Y2JlZGM3ZjVmMzQ1
NzlhYTYuLmY3NzgyMjFkNTQ0MjJlMTQ5MWNjYWM4MTY5MjdjMTQ0YjYwZDhhYjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
VmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaApAQCAtNjAsOCArNjAsNyBAQCBwdWJsaWM6
CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVFdmVudChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgV2ViQ29yZTo6RXZlbnQqKSBvdmVycmlkZTsKICAgICB2b2lk
IHVwZGF0ZUZvckV2ZW50TmFtZShjb25zdCBXVEY6OkF0b21pY1N0cmluZyYpOwotICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiByaHMpIG92ZXJyaWRlCi0gICAgICAgIHty
ZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RXZlbnRMaXN0ZW5lcio+KHRoaXMpID09ICZyaHM7
fQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiByaHMpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIq
Pih0aGlzKSA9PSAmcmhzOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcXVlc3RGdWxs
c2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIG92
ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKEZsb2F0
UmVjdCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCmlu
ZGV4IDJjNWMxNThjYmZkMjU0MmE2MDkwY2RkYTNlODZkYjkzYmUzMDEyM2QuLmQ4MGRlMTMwZTc2
YzY4MjQ4MzkyNzU5YjYxYmQyNjllNmMyOTc4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
VmlkZW9FbGVtZW50Lm1tCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWxWaWRlb0VsZW1lbnQ6OnNldFZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50KiB2aWRl
CiAKICAgICBpZiAobV92aWRlb0VsZW1lbnQgJiYgbV9pc0xpc3RlbmluZykgewogICAgICAgICBm
b3IgKGF1dG8mIGV2ZW50TmFtZSA6IG9ic2VydmVkRXZlbnROYW1lcygpKQotICAgICAgICAgICAg
bV92aWRlb0VsZW1lbnQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCB0aGlzLCBmYWxz
ZSk7CisgICAgICAgICAgICBtX3ZpZGVvRWxlbWVudC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWUsICp0aGlzLCBmYWxzZSk7CiAgICAgfQogICAgIG1faXNMaXN0ZW5pbmcgPSBmYWxzZTsK
IApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50OjpzZXRWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVudCogdmlkZQogICAgICAgICByZXR1
cm47CiAKICAgICBmb3IgKGF1dG8mIGV2ZW50TmFtZSA6IG9ic2VydmVkRXZlbnROYW1lcygpKQot
ICAgICAgICBtX3ZpZGVvRWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIHRoaXMs
IGZhbHNlKTsKKyAgICAgICAgbV92aWRlb0VsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lLCAqdGhpcywgZmFsc2UpOwogICAgIG1faXNMaXN0ZW5pbmcgPSB0cnVlOwogCiAgICAgdXBk
YXRlRm9yRXZlbnROYW1lKGV2ZW50TmFtZUFsbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNw
cAppbmRleCBmYzgzMWU2NzY1OGJhMDliODlhODNiMWU3NTg5YTAwMWNiYjU5NTUxLi5hYjI0NWQ1
N2Y1ODliZGJkMDU0MTRhNzg4NDI5N2I4MjJkMGNkNjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnQuY3BwCkBAIC01MjgsNyArNTI4LDcgQEAgYm9vbCBTVkdFbGVtZW50OjpoYXZlTG9hZGVkUmVx
dWlyZWRSZXNvdXJjZXMoKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFNWR0VsZW1lbnQ6
OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxF
dmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCitib29sIFNWR0VsZW1l
bnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZjxF
dmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7ICAgCiAgICAgLy8g
QWRkIGV2ZW50IGxpc3RlbmVyIHRvIHJlZ3VsYXIgRE9NIGVsZW1lbnQKICAgICBpZiAoIU5vZGU6
OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lci5jb3B5UmVmKCksIHVzZUNhcHR1
cmUpKQpAQCAtNTQ4LDcgKzU0OCw3IEBAIGJvb2wgU1ZHRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgU1ZHRWxlbWVudDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIsIGJvb2wg
dXNlQ2FwdHVyZSkKK2Jvb2wgU1ZHRWxlbWVudDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wgdXNl
Q2FwdHVyZSkKIHsKICAgICBpZiAoY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKICAgICAgICAgcmV0
dXJuIE5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2Fw
dHVyZSk7CkBAIC01NTgsNyArNTU4LDcgQEAgYm9vbCBTVkdFbGVtZW50OjpyZW1vdmVFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmUKICAgICAv
LyBldmVudCBsaXN0ZW5lciBpbiBhIGNhY2hlLiBJZiB3ZSB3YW50IHRvIGJlIGFibGUgdG8gY2Fs
bCByZW1vdmVFdmVudExpc3RlbmVyKCkgbXVsdGlwbGUKICAgICAvLyB0aW1lcyBvbiBkaWZmZXJl
bnQgbm9kZXMsIHdlIGhhdmUgdG8gZGVsYXkgaXRzIGltbWVkaWF0ZSBkZXN0cnVjdGlvbiwgd2hp
Y2ggd291bGQgaGFwcGVuCiAgICAgLy8gYWZ0ZXIgdGhlIGZpcnN0IGNhbGwgYmVsb3cuCi0gICAg
UmVmUHRyPEV2ZW50TGlzdGVuZXI+IHByb3RlY3RvcihsaXN0ZW5lcik7CisgICAgUmVmPEV2ZW50
TGlzdGVuZXI+IHByb3RlY3RvcihsaXN0ZW5lcik7CiAKICAgICAvLyBSZW1vdmUgZXZlbnQgbGlz
dGVuZXIgZnJvbSByZWd1bGFyIERPTSBlbGVtZW50CiAgICAgaWYgKCFOb2RlOjpyZW1vdmVFdmVu
dExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpKQpAQCAtNTczLDcgKzU3
Myw3IEBAIGJvb2wgU1ZHRWxlbWVudDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lCiAgICAgICAgICAgICBjb250aW51ZTsKIAog
ICAgICAgICAvLyBUaGlzIGNhc2UgY2FuIG9ubHkgYmUgaGl0IGZvciBldmVudCBsaXN0ZW5lcnMg
Y3JlYXRlZCBmcm9tIG1hcmt1cAotICAgICAgICBBU1NFUlQobGlzdGVuZXItPndhc0NyZWF0ZWRG
cm9tTWFya3VwKCkpOworICAgICAgICBBU1NFUlQobGlzdGVuZXIud2FzQ3JlYXRlZEZyb21NYXJr
dXAoKSk7CiAKICAgICAgICAgLy8gSWYgdGhlIGV2ZW50IGxpc3RlbmVyICdsaXN0ZW5lcicgaGFz
IGJlZW4gY3JlYXRlZCBmcm9tIG1hcmt1cCBhbmQgaGFzIGJlZW4gZmlyZWQgYmVmb3JlCiAgICAg
ICAgIC8vIHRoZW4gSlNMYXp5RXZlbnRMaXN0ZW5lcjo6cGFyc2VDb2RlKCkgaGFzIGJlZW4gY2Fs
bGVkIGFuZCBtX2pzRnVuY3Rpb24gb2YgdGhhdCBsaXN0ZW5lcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmgKaW5kZXggMzgxNjgxMDJhZjVlZTc1YWY3ODdjYjBmZTE1YThlN2EyYmE3MWNmYi4uOTZkNmM5
MDQ2MzFhYjA5NDg4ZmI1YjZhYWJhZWUyMGZjNjJjMzdiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5oCkBAIC0xMzMsOCArMTMzLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGhhdmVM
b2FkZWRSZXF1aXJlZFJlc291cmNlcygpOwogCi0gICAgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiwgYm9v
bCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKLSAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1
cmUpIG92ZXJyaWRlOworICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wgdXNlQ2FwdHVyZSkgb3Zl
cnJpZGU7CisgICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiwgYm9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKICAg
ICBib29sIGhhc0ZvY3VzRXZlbnRMaXN0ZW5lcnMoKSBjb25zdDsKIAogI2lmIEVOQUJMRShDU1Nf
UkVHSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCmluZGV4IGM3ZDg0NmVh
MjMxYWUxNTBkYTgxMmRmYTc4NTk3MzgxMWVlYzM2YWEuLjZkZGJiNzYyN2RhNGY3OWM0MWVmY2U0
NjZhYTY1NjhlZDdkM2ZjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVm
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcApA
QCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNWR1RSZWZUYXJnZXRFdmVu
dExpc3RlbmVyKFNWR1RSZWZFbGVtZW50JiB0cmVmRWxlbWVudCk7CiAKICAgICB2b2lkIGhhbmRs
ZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCopIG92ZXJyaWRlOwotICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFNW
R1RSZWZFbGVtZW50JiBtX3RyZWZFbGVtZW50OwogICAgIFJlZlB0cjxFbGVtZW50PiBtX3Rhcmdl
dDsKQEAgLTkyLDggKzkyLDggQEAgdm9pZCBTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcjo6YXR0
YWNoKFJlZlB0cjxFbGVtZW50PiYmIHRhcmdldCkKICAgICBBU1NFUlQodGFyZ2V0LmdldCgpKTsK
ICAgICBBU1NFUlQodGFyZ2V0LT5pbkRvY3VtZW50KCkpOwogCi0gICAgdGFyZ2V0LT5hZGRFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZXMoKS5ET01TdWJ0cmVlTW9kaWZpZWRFdmVudCwgdGhpcywgZmFs
c2UpOwotICAgIHRhcmdldC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuRE9NTm9kZVJl
bW92ZWRGcm9tRG9jdW1lbnRFdmVudCwgdGhpcywgZmFsc2UpOworICAgIHRhcmdldC0+YWRkRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkuRE9NU3VidHJlZU1vZGlmaWVkRXZlbnQsICp0aGlzLCBm
YWxzZSk7CisgICAgdGFyZ2V0LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5ET01Ob2Rl
UmVtb3ZlZEZyb21Eb2N1bWVudEV2ZW50LCAqdGhpcywgZmFsc2UpOwogICAgIG1fdGFyZ2V0ID0g
V1RGTW92ZSh0YXJnZXQpOwogfQogCkBAIC0xMDIsMTIgKzEwMiwxMiBAQCB2b2lkIFNWR1RSZWZU
YXJnZXRFdmVudExpc3RlbmVyOjpkZXRhY2goKQogICAgIGlmICghaXNBdHRhY2hlZCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3RhcmdldC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5h
bWVzKCkuRE9NU3VidHJlZU1vZGlmaWVkRXZlbnQsIHRoaXMsIGZhbHNlKTsKLSAgICBtX3Rhcmdl
dC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuRE9NTm9kZVJlbW92ZWRGcm9tRG9j
dW1lbnRFdmVudCwgdGhpcywgZmFsc2UpOworICAgIG1fdGFyZ2V0LT5yZW1vdmVFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5ET01TdWJ0cmVlTW9kaWZpZWRFdmVudCwgKnRoaXMsIGZhbHNlKTsK
KyAgICBtX3RhcmdldC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuRE9NTm9kZVJl
bW92ZWRGcm9tRG9jdW1lbnRFdmVudCwgKnRoaXMsIGZhbHNlKTsKICAgICBtX3RhcmdldCA9IG51
bGxwdHI7CiB9CiAKLWJvb2wgU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0o
Y29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpCitib29sIFNWR1RSZWZUYXJnZXRFdmVudExp
c3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyKSBjb25zdAog
ewogICAgIGlmIChjb25zdCBTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lciogdGFyZ2V0TGlzdGVu
ZXIgPSBTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcjo6Y2FzdCgmbGlzdGVuZXIpKQogICAgICAg
ICByZXR1cm4gJm1fdHJlZkVsZW1lbnQgPT0gJnRhcmdldExpc3RlbmVyLT5tX3RyZWZFbGVtZW50
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcApp
bmRleCA3YjI5ODcwZjNlMmQ0Y2ZjNTBiMGQxMjRjYjEyMzlmNGMzZTc1NGU2Li4wZDI0YTYxNzRm
YmYxYTk0YmYyYWQ3ZDk5MGRlMzA0MjU4ODgyMGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcApAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICA6IG51bGxwdHI7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKSBvdmVycmlkZTsKKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgRXZlbnRMaXN0ZW5lciYgb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIAogICAgIHZv
aWQgZGlzY29ubmVjdEFuaW1hdGlvbigpCiAgICAgewpAQCAtOTcsNyArOTcsNyBAQCBwcml2YXRl
OgogICAgIFNWR1NNSUxFbGVtZW50OjpDb25kaXRpb24qIG1fY29uZGl0aW9uOwogfTsKIAotYm9v
bCBDb25kaXRpb25FdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXIm
IGxpc3RlbmVyKQorYm9vbCBDb25kaXRpb25FdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0
IEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyKSBjb25zdAogewogICAgIGlmIChjb25zdCBDb25kaXRp
b25FdmVudExpc3RlbmVyKiBjb25kaXRpb25FdmVudExpc3RlbmVyID0gQ29uZGl0aW9uRXZlbnRM
aXN0ZW5lcjo6Y2FzdCgmbGlzdGVuZXIpKQogICAgICAgICByZXR1cm4gbV9hbmltYXRpb24gPT0g
Y29uZGl0aW9uRXZlbnRMaXN0ZW5lci0+bV9hbmltYXRpb24gJiYgbV9jb25kaXRpb24gPT0gY29u
ZGl0aW9uRXZlbnRMaXN0ZW5lci0+bV9jb25kaXRpb247CkBAIC01NDUsNyArNTQ1LDcgQEAgdm9p
ZCBTVkdTTUlMRWxlbWVudDo6Y29ubmVjdENvbmRpdGlvbnMoKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgQVNTRVJUKCFjb25kaXRpb24ubV9ldmVudExpc3RlbmVyKTsK
ICAgICAgICAgICAgIGNvbmRpdGlvbi5tX2V2ZW50TGlzdGVuZXIgPSBDb25kaXRpb25FdmVudExp
c3RlbmVyOjpjcmVhdGUodGhpcywgJmNvbmRpdGlvbik7Ci0gICAgICAgICAgICBldmVudEJhc2Ut
PmFkZEV2ZW50TGlzdGVuZXIoY29uZGl0aW9uLm1fbmFtZSwgY29uZGl0aW9uLm1fZXZlbnRMaXN0
ZW5lciwgZmFsc2UpOworICAgICAgICAgICAgZXZlbnRCYXNlLT5hZGRFdmVudExpc3RlbmVyKGNv
bmRpdGlvbi5tX25hbWUsICpjb25kaXRpb24ubV9ldmVudExpc3RlbmVyLCBmYWxzZSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoY29uZGl0aW9uLm1fdHlwZSA9PSBDb25kaXRpb246OlN5bmNiYXNlKSB7
CiAgICAgICAgICAgICBBU1NFUlQoIWNvbmRpdGlvbi5tX2Jhc2VJRC5pc0VtcHR5KCkpOwogICAg
ICAgICAgICAgY29uZGl0aW9uLm1fc3luY2Jhc2UgPSB0cmVlU2NvcGUoKS5nZXRFbGVtZW50QnlJ
ZChjb25kaXRpb24ubV9iYXNlSUQpOwpAQCAtNTc3LDcgKzU3Nyw3IEBAIHZvaWQgU1ZHU01JTEVs
ZW1lbnQ6OmRpc2Nvbm5lY3RDb25kaXRpb25zKCkKICAgICAgICAgICAgIC8vIG91ciBjb25kaXRp
b24gZXZlbnQgbGlzdGVuZXIsIGluIGNhc2UgaXQgbGF0ZXIgZmlyZXMuCiAgICAgICAgICAgICBF
bGVtZW50KiBldmVudEJhc2UgPSBldmVudEJhc2VGb3IoY29uZGl0aW9uKTsKICAgICAgICAgICAg
IGlmIChldmVudEJhc2UpCi0gICAgICAgICAgICAgICAgZXZlbnRCYXNlLT5yZW1vdmVFdmVudExp
c3RlbmVyKGNvbmRpdGlvbi5tX25hbWUsIGNvbmRpdGlvbi5tX2V2ZW50TGlzdGVuZXIuZ2V0KCks
IGZhbHNlKTsKKyAgICAgICAgICAgICAgICBldmVudEJhc2UtPnJlbW92ZUV2ZW50TGlzdGVuZXIo
Y29uZGl0aW9uLm1fbmFtZSwgKmNvbmRpdGlvbi5tX2V2ZW50TGlzdGVuZXIsIGZhbHNlKTsKICAg
ICAgICAgICAgIGNvbmRpdGlvbi5tX2V2ZW50TGlzdGVuZXItPmRpc2Nvbm5lY3RBbmltYXRpb24o
KTsKICAgICAgICAgICAgIGNvbmRpdGlvbi5tX2V2ZW50TGlzdGVuZXIgPSBudWxscHRyOwogICAg
ICAgICB9IGVsc2UgaWYgKGNvbmRpdGlvbi5tX3R5cGUgPT0gQ29uZGl0aW9uOjpTeW5jYmFzZSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwIGIvU291
cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCmluZGV4IDVkZjc4Mzg2MmNjOTFjODVh
M2I1YTZiM2Y1NDI2Njk2MTMxYTgzYjMuLjJhMTBhZGVkOGRjZjQ3MjI5MWRkMjY5NDEyMjNjOGFh
OTJkZWZlZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKQEAgLTQxMiw4ICs0
MTIsOCBAQCBIUkVTVUxUIERPTU5vZGU6OnNldFRleHRDb250ZW50KF9Jbl8gQlNUUiAvKnRleHQq
LykKIAogSFJFU1VMVCBET01Ob2RlOjphZGRFdmVudExpc3RlbmVyKF9Jbl8gQlNUUiB0eXBlLCBf
SW5fb3B0XyBJRE9NRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIsIEJPT0wgdXNlQ2FwdHVyZSkKIHsK
LSAgICBSZWZQdHI8V2ViRXZlbnRMaXN0ZW5lcj4gd2ViTGlzdGVuZXIgPSBXZWJFdmVudExpc3Rl
bmVyOjpjcmVhdGUobGlzdGVuZXIpOwotICAgIG1fbm9kZS0+YWRkRXZlbnRMaXN0ZW5lcih0eXBl
LCB3ZWJMaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CisgICAgYXV0byB3ZWJMaXN0ZW5lciA9IFdlYkV2
ZW50TGlzdGVuZXI6OmNyZWF0ZShsaXN0ZW5lcik7CisgICAgbV9ub2RlLT5hZGRFdmVudExpc3Rl
bmVyKHR5cGUsIFdURk1vdmUod2ViTGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKIAogICAgIHJldHVy
biBTX09LOwogfQpAQCAtNDI0LDggKzQyNCw4IEBAIEhSRVNVTFQgRE9NTm9kZTo6cmVtb3ZlRXZl
bnRMaXN0ZW5lcihfSW5fIEJTVFIgdHlwZSwgX0luX29wdF8gSURPTUV2ZW50TGlzdGVuZXIqCiAg
ICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgaWYgKCFtX25vZGUpCiAgICAgICAgIHJldHVy
biBFX0ZBSUw7Ci0gICAgUmVmUHRyPFdlYkV2ZW50TGlzdGVuZXI+IHdlYkxpc3RlbmVyID0gV2Vi
RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGxpc3RlbmVyKTsKLSAgICBtX25vZGUtPnJlbW92ZUV2ZW50
TGlzdGVuZXIodHlwZSwgd2ViTGlzdGVuZXIuZ2V0KCksIHVzZUNhcHR1cmUpOworICAgIGF1dG8g
d2ViTGlzdGVuZXIgPSBXZWJFdmVudExpc3RlbmVyOjpjcmVhdGUobGlzdGVuZXIpOworICAgIG1f
bm9kZS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCB3ZWJMaXN0ZW5lciwgdXNlQ2FwdHVyZSk7
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTkxMCw4ICs5MTAsOCBAQCBIUkVTVUxUIERPTVdp
bmRvdzo6YWRkRXZlbnRMaXN0ZW5lcihfSW5fIEJTVFIgdHlwZSwgX0luX29wdF8gSURPTUV2ZW50
TGlzdGVuZXIqCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAgICAgaWYgKCFtX3dpbmRvdykK
ICAgICAgICAgcmV0dXJuIEVfRkFJTDsKLSAgICBSZWZQdHI8V2ViRXZlbnRMaXN0ZW5lcj4gd2Vi
TGlzdGVuZXIgPSBXZWJFdmVudExpc3RlbmVyOjpjcmVhdGUobGlzdGVuZXIpOwotICAgIG1fd2lu
ZG93LT5hZGRFdmVudExpc3RlbmVyKHR5cGUsIHdlYkxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKKyAg
ICBhdXRvIHdlYkxpc3RlbmVyID0gV2ViRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGxpc3RlbmVyKTsK
KyAgICBtX3dpbmRvdy0+YWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBXVEZNb3ZlKHdlYkxpc3RlbmVy
KSwgdXNlQ2FwdHVyZSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTkyMSw4ICs5MjEsOCBA
QCBIUkVTVUxUIERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihfSW5fIEJTVFIgdHlwZSwg
X0luX29wdF8gSURPTUV2ZW50TGlzdGVuZQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAg
IGlmICghbV93aW5kb3cpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7Ci0gICAgUmVmUHRyPFdlYkV2
ZW50TGlzdGVuZXI+IHdlYkxpc3RlbmVyID0gV2ViRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGxpc3Rl
bmVyKTsKLSAgICBtX3dpbmRvdy0+cmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCB3ZWJMaXN0ZW5l
ci5nZXQoKSwgdXNlQ2FwdHVyZSk7CisgICAgYXV0byB3ZWJMaXN0ZW5lciA9IFdlYkV2ZW50TGlz
dGVuZXI6OmNyZWF0ZShsaXN0ZW5lcik7CisgICAgbV93aW5kb3ctPnJlbW92ZUV2ZW50TGlzdGVu
ZXIodHlwZSwgd2ViTGlzdGVuZXIsIHVzZUNhcHR1cmUpOwogICAgIHJldHVybiBTX09LOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9ET01FdmVudHNDbGFzc2VzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvd2luL0RPTUV2ZW50c0NsYXNzZXMuY3BwCmluZGV4IDgwYjRkMmVhY2JiNWNm
ZDdjM2U1ZWZjNzFlYTlhMWVhMTRmY2EzYmUuLmFkODc2NmIzMWI1NjgzYTY5Y2U1NDc1YmY3NzA0
YmNhM2RjODM2ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUV2ZW50c0NsYXNz
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0RPTUV2ZW50c0NsYXNzZXMuY3BwCkBAIC02
OCw3ICs2OCw3IEBAIFdlYkV2ZW50TGlzdGVuZXI6On5XZWJFdmVudExpc3RlbmVyKCkKICAgICBt
X2lET01FdmVudExpc3RlbmVyLT5SZWxlYXNlKCk7CiB9CiAKLWJvb2wgV2ViRXZlbnRMaXN0ZW5l
cjo6b3BlcmF0b3I9PShjb25zdCBXZWJDb3JlOjpFdmVudExpc3RlbmVyJiBvdGhlcikKK2Jvb2wg
V2ViRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PShjb25zdCBXZWJDb3JlOjpFdmVudExpc3RlbmVy
JiBvdGhlcikgY29uc3QKIHsKICAgICByZXR1cm4gKG90aGVyLnR5cGUoKSA9PSBDUFBFdmVudExp
c3RlbmVyVHlwZSAKICAgICAgICAgJiYgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBXZWJFdmVudExp
c3RlbmVyKj4oJm90aGVyKS0+bV9pRE9NRXZlbnRMaXN0ZW5lciA9PSBtX2lET01FdmVudExpc3Rl
bmVyKTsKQEAgLTgxLDkgKzgxLDkgQEAgdm9pZCBXZWJFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVu
dChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzLCBXZWJDb3JlOjoKICAgICBtX2lE
T01FdmVudExpc3RlbmVyLT5oYW5kbGVFdmVudChkb21FdmVudC5nZXQoKSk7CiB9CiAKLVBhc3NS
ZWZQdHI8V2ViRXZlbnRMaXN0ZW5lcj4gV2ViRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKElET01FdmVu
dExpc3RlbmVyKiBkKQorUmVmPFdlYkV2ZW50TGlzdGVuZXI+IFdlYkV2ZW50TGlzdGVuZXI6OmNy
ZWF0ZShJRE9NRXZlbnRMaXN0ZW5lciogZCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdl
YkV2ZW50TGlzdGVuZXIoZCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkV2ZW50TGlz
dGVuZXIoZCkpOwogfQogCiAvLyBET01FdmVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9ET01FdmVudHNDbGFzc2VzLmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01F
dmVudHNDbGFzc2VzLmgKaW5kZXggNGFiMmNlZTFjMWYzMmE5OWI3MDljY2Y0ODI3ODcyMDU4ZTE2
ZGM1ZS4uN2RmODEzYjgwMzA3NDEwY2RmYTVjODdiNWZiYjQ2NTA3NWE0OTEwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC93aW4vRE9NRXZlbnRzQ2xhc3Nlcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2luL0RPTUV2ZW50c0NsYXNzZXMuaApAQCAtNDYsOSArNDYsOSBAQCBjbGFzcyBXZWJFdmVu
dExpc3RlbmVyIDogcHVibGljIFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIgewogcHVibGljOgogICAg
IFdlYkV2ZW50TGlzdGVuZXIoSURPTUV2ZW50TGlzdGVuZXIqKTsKICAgICB+V2ViRXZlbnRMaXN0
ZW5lcigpOwotICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXIm
KTsKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJikgY29u
c3Q7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBXZWJDb3JlOjpFdmVudCopOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkV2
ZW50TGlzdGVuZXI+IGNyZWF0ZShJRE9NRXZlbnRMaXN0ZW5lciopOworICAgIHN0YXRpYyBSZWY8
V2ViRXZlbnRMaXN0ZW5lcj4gY3JlYXRlKElET01FdmVudExpc3RlbmVyKik7CiBwcml2YXRlOgog
ICAgIElET01FdmVudExpc3RlbmVyKiBtX2lET01FdmVudExpc3RlbmVyOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3Rh
dGlvbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5B
bm5vdGF0aW9uLmgKaW5kZXggNjNhNDhhYzU2MDZiNzQ0YTk1MTFhMjdlNjYyYzgxODA1MmZlYjEz
ZS4uZjYzMzk3MDFlNjYwMTA5ZTI5MWE4ZmMwYzViOTFhNDk4OWEzNGViZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5B
bm5vdGF0aW9uLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFBERlBsdWdpbkFubm90YXRpb25FdmVudExpc3RlbmVyKGFubm90YXRp
b24pKTsKICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExp
c3RlbmVyJiBsaXN0ZW5lcikgb3ZlcnJpZGUgeyByZXR1cm4gdGhpcyA9PSAmbGlzdGVuZXI7IH0K
KyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0aGlzID09ICZsaXN0ZW5lcjsgfQogCiAgICAgICAgIHZv
aWQgc2V0QW5ub3RhdGlvbihQREZQbHVnaW5Bbm5vdGF0aW9uKiBhbm5vdGF0aW9uKSB7IG1fYW5u
b3RhdGlvbiA9IGFubm90YXRpb247IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tCmluZGV4IDQ3
YmE5YzI5MzUxODRhNTU4MGQ5ZTY3NWM3MjVlYzI3YWNiZjNhM2MuLjNjYTdlNDg5ODg3Y2ZlNThj
NDNjOGVhNzQzNDZlMWM0Nzg3Y2VhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24ubW0KQEAgLTY5
LDggKzY5LDggQEAgdm9pZCBQREZQbHVnaW5Bbm5vdGF0aW9uOjphdHRhY2goRWxlbWVudCogcGFy
ZW50KQogICAgIG1fZWxlbWVudCA9IGNyZWF0ZUFubm90YXRpb25FbGVtZW50KCk7CiAKICAgICBt
X2VsZW1lbnQtPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsICJhbm5vdGF0aW9uIik7Ci0gICAgbV9l
bGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jaGFuZ2VFdmVudCwgbV9ldmVu
dExpc3RlbmVyLCBmYWxzZSk7Ci0gICAgbV9lbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50
TmFtZXMoKS5ibHVyRXZlbnQsIG1fZXZlbnRMaXN0ZW5lciwgZmFsc2UpOworICAgIG1fZWxlbWVu
dC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2hhbmdlRXZlbnQsICptX2V2ZW50TGlz
dGVuZXIsIGZhbHNlKTsKKyAgICBtX2VsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1l
cygpLmJsdXJFdmVudCwgKm1fZXZlbnRMaXN0ZW5lciwgZmFsc2UpOwogCiAgICAgdXBkYXRlR2Vv
bWV0cnkoKTsKIApAQCAtODcsOCArODcsOCBAQCB2b2lkIFBERlBsdWdpbkFubm90YXRpb246OmNv
bW1pdCgpCiAKIFBERlBsdWdpbkFubm90YXRpb246On5QREZQbHVnaW5Bbm5vdGF0aW9uKCkKIHsK
LSAgICBtX2VsZW1lbnQtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNoYW5nZUV2
ZW50LCBtX2V2ZW50TGlzdGVuZXIuZ2V0KCksIGZhbHNlKTsKLSAgICBtX2VsZW1lbnQtPnJlbW92
ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJsdXJFdmVudCwgbV9ldmVudExpc3RlbmVyLmdl
dCgpLCBmYWxzZSk7CisgICAgbV9lbGVtZW50LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFt
ZXMoKS5jaGFuZ2VFdmVudCwgKm1fZXZlbnRMaXN0ZW5lciwgZmFsc2UpOworICAgIG1fZWxlbWVu
dC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYmx1ckV2ZW50LCAqbV9ldmVudExp
c3RlbmVyLCBmYWxzZSk7CiAKICAgICBtX2V2ZW50TGlzdGVuZXItPnNldEFubm90YXRpb24oMCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luUGFzc3dvcmRGaWVsZC5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5tbQppbmRleCBiMmEzYzdmMGZlZmE1YmIwZjU3
ZjEzNWQzYjM2YWM3MDIxN2VkZDdiLi42Nzc2NDc1NzJkNmZhMjAxZGMzMjkzM2RiMzFiMDZkZmM5
MWIwODFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpblBhc3N3b3JkRmllbGQubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tCkBAIC00OSwxNCArNDksMTQg
QEAgUmVmPFBERlBsdWdpblBhc3N3b3JkRmllbGQ+IFBERlBsdWdpblBhc3N3b3JkRmllbGQ6OmNy
ZWF0ZShQREZMYXllckNvbnRyb2xsZXIgKnAKIAogUERGUGx1Z2luUGFzc3dvcmRGaWVsZDo6flBE
RlBsdWdpblBhc3N3b3JkRmllbGQoKQogewotICAgIGVsZW1lbnQoKS0+cmVtb3ZlRXZlbnRMaXN0
ZW5lcihldmVudE5hbWVzKCkua2V5dXBFdmVudCwgZXZlbnRMaXN0ZW5lcigpLCBmYWxzZSk7Cisg
ICAgZWxlbWVudCgpLT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5rZXl1cEV2ZW50
LCAqZXZlbnRMaXN0ZW5lcigpLCBmYWxzZSk7CiB9CiAKIFBhc3NSZWZQdHI8RWxlbWVudD4gUERG
UGx1Z2luUGFzc3dvcmRGaWVsZDo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKQogewogICAgIFJl
ZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gUERGUGx1Z2luVGV4dEFubm90YXRpb246OmNyZWF0ZUFu
bm90YXRpb25FbGVtZW50KCk7CiAgICAgZWxlbWVudC0+c2V0QXR0cmlidXRlKHR5cGVBdHRyLCAi
cGFzc3dvcmQiKTsKLSAgICBlbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5r
ZXl1cEV2ZW50LCBldmVudExpc3RlbmVyKCksIGZhbHNlKTsKKyAgICBlbGVtZW50LT5hZGRFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZXMoKS5rZXl1cEV2ZW50LCAqZXZlbnRMaXN0ZW5lcigpLCBmYWxz
ZSk7CiAgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9u
Lm1tCmluZGV4IGZiZWQzYTZmZGE2ODkzZDhkMmU1NTM1ZGI0MzNkZDI5NDcxNmZiMTcuLjhjMDc0
NjljNmQ1OGFiMTc2MjgxODA4OGRiZTE5NTYyYzM3OGZjYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0
QW5ub3RhdGlvbi5tbQpAQCAtNzgsNyArNzgsNyBAQCBSZWY8UERGUGx1Z2luVGV4dEFubm90YXRp
b24+IFBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGUoUERGQW5ub3RhdGlvbiAqYW5ubwog
CiBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6flBERlBsdWdpblRleHRBbm5vdGF0aW9uKCkKIHsK
LSAgICBlbGVtZW50KCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleWRvd25F
dmVudCwgZXZlbnRMaXN0ZW5lcigpLCBmYWxzZSk7CisgICAgZWxlbWVudCgpLT5yZW1vdmVFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQsICpldmVudExpc3RlbmVyKCksIGZh
bHNlKTsKIH0KIAogUGFzc1JlZlB0cjxFbGVtZW50PiBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6
Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKQpAQCAtOTcsNyArOTcsNyBAQCBQYXNzUmVmUHRyPEVs
ZW1lbnQ+IFBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgp
CiAgICAgZWxzZQogICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpbnB1
dFRhZywgZmFsc2UpOwogCi0gICAgZWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVz
KCkua2V5ZG93bkV2ZW50LCBldmVudExpc3RlbmVyKCksIGZhbHNlKTsKKyAgICBlbGVtZW50LT5h
ZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQsICpldmVudExpc3RlbmVy
KCksIGZhbHNlKTsKIAogICAgIFN0eWxlZEVsZW1lbnQqIHN0eWxlZEVsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxTdHlsZWRFbGVtZW50Kj4oZWxlbWVudC5nZXQoKSk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>