<?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>157627</bug_id>
          
          <creation_ts>2016-05-12 10:14:28 -0700</creation_ts>
          <short_desc>Drop toJS() overload taking a PassRefPtr&lt;&gt; parameter</short_desc>
          <delta_ts>2016-05-12 14:12:28 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1192368</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-12 10:14:28 -0700</bug_when>
    <thetext>Drop toJS() overload taking a PassRefPtr&lt;&gt; parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192406</commentid>
    <comment_count>1</comment_count>
      <attachid>278746</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-12 12:13:25 -0700</bug_when>
    <thetext>Created attachment 278746
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192414</commentid>
    <comment_count>2</comment_count>
      <attachid>278748</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-12 12:17:37 -0700</bug_when>
    <thetext>Created attachment 278748
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192426</commentid>
    <comment_count>3</comment_count>
      <attachid>278748</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-05-12 13:02:03 -0700</bug_when>
    <thetext>Comment on attachment 278748
Patch

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

&gt; Source/WebCore/css/CSSPrimitiveValue.cpp:-945
&gt; -    ec = 0;

Why are you deleting this here and not elsewhere?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192428</commentid>
    <comment_count>4</comment_count>
      <attachid>278748</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-12 13:03:15 -0700</bug_when>
    <thetext>Comment on attachment 278748
Patch

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

&gt;&gt; Source/WebCore/css/CSSPrimitiveValue.cpp:-945
&gt;&gt; -    ec = 0;
&gt; 
&gt; Why are you deleting this here and not elsewhere?

Where else do you want me to remove it?

We don&apos;t check ec in this function so there is no point in setting it to 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192431</commentid>
    <comment_count>5</comment_count>
      <attachid>278748</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-05-12 13:04:35 -0700</bug_when>
    <thetext>Comment on attachment 278748
Patch

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

&gt;&gt;&gt; Source/WebCore/css/CSSPrimitiveValue.cpp:-945
&gt;&gt;&gt; -    ec = 0;
&gt;&gt; 
&gt;&gt; Why are you deleting this here and not elsewhere?
&gt; 
&gt; Where else do you want me to remove it?
&gt; 
&gt; We don&apos;t check ec in this function so there is no point in setting it to 0.

ec is a reference, so changing this changes the behavior of the caller.  Many other functions in this file do the same thing.  I think this is a bad change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192438</commentid>
    <comment_count>6</comment_count>
      <attachid>278748</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-12 13:09:11 -0700</bug_when>
    <thetext>Comment on attachment 278748
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/css/CSSPrimitiveValue.cpp:-945
&gt;&gt;&gt;&gt; -    ec = 0;
&gt;&gt;&gt; 
&gt;&gt;&gt; Why are you deleting this here and not elsewhere?
&gt;&gt; 
&gt;&gt; Where else do you want me to remove it?
&gt;&gt; 
&gt;&gt; We don&apos;t check ec in this function so there is no point in setting it to 0.
&gt; 
&gt; ec is a reference, so changing this changes the behavior of the caller.  Many other functions in this file do the same thing.  I think this is a bad change.

and yet. The assignment to 0 here is unnecessary. The rule is that you need to set ec to 0 if you are going to check its value after calling a function. It is therefore the caller of getRGBColorValue()&apos;s responsibility to set ec to 0 if they check ec after calling getRGBColorValue(). Note that getRGBColorValue() is only called from the bindings and they do indeed set ec to 0 before calling getRGBColorValue() and then check the value of ec after calling the function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192439</commentid>
    <comment_count>7</comment_count>
      <attachid>278748</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-12 13:11:13 -0700</bug_when>
    <thetext>Comment on attachment 278748
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/WebCore/css/CSSPrimitiveValue.cpp:-945
&gt;&gt;&gt;&gt;&gt; -    ec = 0;
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Why are you deleting this here and not elsewhere?
&gt;&gt;&gt; 
&gt;&gt;&gt; Where else do you want me to remove it?
&gt;&gt;&gt; 
&gt;&gt;&gt; We don&apos;t check ec in this function so there is no point in setting it to 0.
&gt;&gt; 
&gt;&gt; ec is a reference, so changing this changes the behavior of the caller.  Many other functions in this file do the same thing.  I think this is a bad change.
&gt; 
&gt; and yet. The assignment to 0 here is unnecessary. The rule is that you need to set ec to 0 if you are going to check its value after calling a function. It is therefore the caller of getRGBColorValue()&apos;s responsibility to set ec to 0 if they check ec after calling getRGBColorValue(). Note that getRGBColorValue() is only called from the bindings and they do indeed set ec to 0 before calling getRGBColorValue() and then check the value of ec after calling the function.

And to answer your other question, I did not update the other methods because I did not touch them in this patch and dropping ec like this requires some work to make sure the call sites are correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192444</commentid>
    <comment_count>8</comment_count>
      <attachid>278748</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-05-12 13:15:58 -0700</bug_when>
    <thetext>Comment on attachment 278748
Patch

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192458</commentid>
    <comment_count>9</comment_count>
      <attachid>278748</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-12 14:12:23 -0700</bug_when>
    <thetext>Comment on attachment 278748
Patch

Clearing flags on attachment: 278748

Committed r200789: &lt;http://trac.webkit.org/changeset/200789&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192459</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-12 14:12:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278746</attachid>
            <date>2016-05-12 12:13:25 -0700</date>
            <delta_ts>2016-05-12 12:17:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157627-20160512121415.patch</filename>
            <type>text/plain</type>
            <size>43988</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwNzc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzVmNTRkOTY5ZjhhZjAx
OTlhMTlhMDNjNGEwZDEyNzM4YTQ4NTgxMS4uZGU0YjVjMzljZWNjM2M4ZDcxOWE5OGI1NmZlM2Vj
NGQ0N2Y0MDU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg3IEBACiAyMDE2LTA1LTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgRHJvcCB0b0pTKCkgb3Zlcmxv
YWQgdGFraW5nIGEgUGFzc1JlZlB0cjw+IHBhcmFtZXRlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NjI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIG91ciBpbXBsZW1lbnRhdGlvbiBzdG9w
IHN0b3AgcmV0dXJuaW5nIFBhc3NSZWZQdHJzIHRvIHRoZQorICAgICAgICBKUyBiaW5kaW5ncyBh
bmQgZHJvcCB0aGUgdG9KUygpIG92ZXJsb2FkIHRha2luZyBhIFBhc3NSZWZQdHI8PgorICAgICAg
ICBwYXJhbWV0ZXIKKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6YnVmZmVyZWQpOgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZl
cjo6Z2V0Q2hhbm5lbERhdGEpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZm
ZXIuaDoKKyAgICAgICAgKiBhbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudFRpbWVsaW5lOjpjcmVhdGUpOgorICAgICAgICAqIGFuaW1hdGlv
bi9Eb2N1bWVudFRpbWVsaW5lLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5n
Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OnRvSlNOZXdseUNyZWF0ZWQpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVW
YWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0UkdCQ29s
b3JWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmVycm9yKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0xhYmVsYWJsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGFiZWxh
YmxlRWxlbWVudDo6bGFiZWxzKToKKyAgICAgICAgKiBodG1sL0xhYmVsYWJsZUVsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xHZXRJbmZvOjpnZXRXZWJHTEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TEdldEluZm86OmdldFdlYkdMRmxvYXRBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEdl
dEluZm86OmdldFdlYkdMRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJ
bmZvOjpnZXRXZWJHTEludEFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMR2V0SW5mbzo6
Z2V0V2ViR0xQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMR2V0SW5mbzo6Z2V0V2Vi
R0xSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpnZXRXZWJH
TFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpnZXRXZWJHTFVuc2ln
bmVkQnl0ZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMR2V0SW5mbzo6Z2V0V2ViR0xV
bnNpZ25lZEludEFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMR2V0SW5mbzo6Z2V0V2Vi
R0xWZXJ0ZXhBcnJheU9iamVjdE9FUyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEdldEluZm86
OmdldFdlYkdMVmVydGV4QXJyYXlPYmplY3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
R2V0SW5mby5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZVRleHR1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlUHJvZ3JhbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGVSZW5kZXJi
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3Jl
YXRlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmdldEFjdGl2ZUF0dHJpYik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpnZXRBY3RpdmVVbmlmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmdldFNoYWRlclByZWNpc2lvbkZvcm1hdCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtTG9jYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJhd0ltYWdlSW50b0J1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2aWRl
b0ZyYW1lVG9JbWFnZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL3RyYWNr
L1RleHRUcmFja0N1ZS5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVlRUQ3VlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlZUVEN1ZUJveDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZU
VEN1ZS5oOgorICAgICAgICAqIHBhZ2UvRE9NU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVNlbGVjdGlvbjo6Z2V0UmFuZ2VBdCk6CisgICAgICAgICogcGFnZS9ET01TZWxlY3Rp
b24uaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
T01XaW5kb3c6Om1hdGNoTWVkaWEpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpzdHls
ZU1lZGlhKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6Z2V0Q29tcHV0ZWRTdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmdldE1hdGNoZWRDU1NSdWxlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6OndlYmtpdENvbnZlcnRQb2ludEZyb21Ob2RlVG9QYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6d2Via2l0Q29udmVydFBvaW50RnJvbVBh
Z2VUb05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpvcGVuKToKKyAgICAgICAg
KiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBhZ2UvTG9jYXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TG9jYXRpb246OmFuY2VzdG9yT3JpZ2lucyk6CisgICAgICAgICogcGFnZS9M
b2NhdGlvbi5oOgorCisyMDE2LTA1LTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKICAgICAgICAgQXZvaWQgdW5uZWNlc3NhcnkgbnVsbCBjaGVja3MgaW4gdG9KUygpIHdoZW4g
dGhlIGltcGxlbWVudGF0aW9uIHJldHVybnMgYSByZWZlcmVuY2Ugb3IgUmVmPD4KICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzYwNAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5k
ZXggOTYyMmY3OGJkYTMxMTgzNjYyMDY2MzIyMWU2MmIyMTljNzA5MzMxMy4uNzBkMDFlNDFlNjU2
ZWMwMTM0NmI5NGE2ODViOGI3NWE5ZDkzZjAzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBA
IFNvdXJjZUJ1ZmZlcjo6flNvdXJjZUJ1ZmZlcigpCiAgICAgbV9wcml2YXRlLT5zZXRDbGllbnQo
bnVsbHB0cik7CiB9CiAKLVBhc3NSZWZQdHI8VGltZVJhbmdlcz4gU291cmNlQnVmZmVyOjpidWZm
ZXJlZChFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKK1JlZlB0cjxUaW1lUmFuZ2VzPiBTb3VyY2VC
dWZmZXI6OmJ1ZmZlcmVkKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAgIC8vIFNlY3Rp
b24gMy4xIGJ1ZmZlcmVkIGF0dHJpYnV0ZSBzdGVwcy4KICAgICAvLyBodHRwczovL2R2Y3MudzMu
b3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvZGVmYXVsdC9tZWRpYS1zb3VyY2UvbWVkaWEtc291
cmNlLmh0bWwjYXR0cmlidXRlcy0xCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAppbmRleCBjYjBkYzhmN2FiMmU5ZTJkYmEwODc0NTAwNzI5
ODgyMDM5MGJjMDIzLi44MTAzNDhhODk3MDRhYTUzNTkwZGU5ZmJlZTE1YzFlZDJjMzlmODU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVy
LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogCiAgICAgLy8gU291cmNlQnVmZmVyLmlkbCBt
ZXRob2RzCiAgICAgYm9vbCB1cGRhdGluZygpIGNvbnN0IHsgcmV0dXJuIG1fdXBkYXRpbmc7IH0K
LSAgICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVkKEV4Y2VwdGlvbkNvZGUmKSBjb25z
dDsKKyAgICBSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoRXhjZXB0aW9uQ29kZSYpIGNvbnN0
OwogICAgIGNvbnN0IFJlZlB0cjxUaW1lUmFuZ2VzPiYgYnVmZmVyZWQoKSBjb25zdDsKICAgICBk
b3VibGUgdGltZXN0YW1wT2Zmc2V0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRUaW1lc3RhbXBPZmZz
ZXQoZG91YmxlLCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCmluZGV4IDhjYjhhNzFkOTg4Y2E2ZGIwZTRlY2I0ZTFj
OWU5ZTQ2ZTYwN2I3MDEuLjIwZjdjZWFmZjY5OGU2NjM1ODg0M2EyOWQ5ZWNjMTMxZThlZjI0MzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3Bw
CkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgQXVkaW9CdWZmZXI6OnJlbGVhc2VNZW1vcnkoKQogICAg
IG1fY2hhbm5lbHMuY2xlYXIoKTsKIH0KIAotUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IEF1ZGlv
QnVmZmVyOjpnZXRDaGFubmVsRGF0YSh1bnNpZ25lZCBjaGFubmVsSW5kZXgsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQorUmVmUHRyPEZsb2F0MzJBcnJheT4gQXVkaW9CdWZmZXI6OmdldENoYW5uZWxEYXRh
KHVuc2lnbmVkIGNoYW5uZWxJbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKGNo
YW5uZWxJbmRleCA+PSBtX2NoYW5uZWxzLnNpemUoKSkgewogICAgICAgICBlYyA9IFNZTlRBWF9F
UlI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVm
ZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmgKaW5k
ZXggZTczYmNlYWRlMzRjMjRmOTNmNmE0M2UxZjFhYzk0ZDBmMmRmZTczOC4uNTI5NmYyYWQzNGIw
OGFhMjBiMjZmNzZkZjM5N2M0ZWU4YTgyMDNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBDaGFubmVsIGRhdGEgYWNjZXNzCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscygp
IGNvbnN0IHsgcmV0dXJuIG1fY2hhbm5lbHMuc2l6ZSgpOyB9Ci0gICAgUGFzc1JlZlB0cjxGbG9h
dDMyQXJyYXk+IGdldENoYW5uZWxEYXRhKHVuc2lnbmVkIGNoYW5uZWxJbmRleCwgRXhjZXB0aW9u
Q29kZSYpOworICAgIFJlZlB0cjxGbG9hdDMyQXJyYXk+IGdldENoYW5uZWxEYXRhKHVuc2lnbmVk
IGNoYW5uZWxJbmRleCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIEZsb2F0MzJBcnJheSogZ2V0Q2hh
bm5lbERhdGEodW5zaWduZWQgY2hhbm5lbEluZGV4KTsKICAgICB2b2lkIHplcm8oKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCmluZGV4IDdiYjMw
MmMwNmYwM2IyZmY3ZmEwZDlkYjY2MmJhMWFmODZhMTA5NWUuLmQzYWVkYTkwZTc4MGZhNTZmZDZm
N2MzZmQ0MGE4NDhiODljNDE5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9Eb2N1bWVudFRpbWVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9j
dW1lbnRUaW1lbGluZS5jcHAKQEAgLTMzLDkgKzMzLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1QYXNzUmVmUHRyPERvY3VtZW50VGltZWxpbmU+IERvY3VtZW50VGltZWxpbmU6OmNyZWF0
ZShkb3VibGUgb3JpZ2luVGltZSkKK1JlZjxEb2N1bWVudFRpbWVsaW5lPiBEb2N1bWVudFRpbWVs
aW5lOjpjcmVhdGUoZG91YmxlIG9yaWdpblRpbWUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBEb2N1bWVudFRpbWVsaW5lKG9yaWdpblRpbWUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEb2N1bWVudFRpbWVsaW5lKG9yaWdpblRpbWUpKTsKIH0KIAogRG9jdW1lbnRUaW1lbGluZTo6
RG9jdW1lbnRUaW1lbGluZShkb3VibGUgb3JpZ2luVGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vRG9jdW1lbnRUaW1lbGluZS5oCmluZGV4IDlmOGNiYjNlZTYzYWZhYzljNjk0YTc0Njlh
NDRjMmJlNWZiMjczOGUuLjkxZGQ0YmM3OTAxNWQwNGI1ODEwODY3ZDUzOTdjMGY2OGViNGQyN2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuaApAQCAtMzcs
NyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50VGltZWxpbmUg
ZmluYWwgOiBwdWJsaWMgQW5pbWF0aW9uVGltZWxpbmUgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPERvY3VtZW50VGltZWxpbmU+IGNyZWF0ZShkb3VibGUpOworICAgIHN0YXRpYyBS
ZWY8RG9jdW1lbnRUaW1lbGluZT4gY3JlYXRlKGRvdWJsZSk7CiAgICAgfkRvY3VtZW50VGltZWxp
bmUoKTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuaAppbmRleCA5NjgxNzNlNjRlZmI3MTFlOWU5MWQwMWFiMGNjZThjZDdiMDY3MDYzLi5iODhm
MDYwODg1NmZkMGY1NzMzZTNjYWE4ZDVjMzVlYjEzMzE1ZDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtMjUyLDEwICsyNTIsOCBAQCBKU0M6OkpTVmFs
dWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgSlNDOjpBcnJheUJ1
ZmZlciopOwogSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9i
amVjdCosIEpTQzo6QXJyYXlCdWZmZXJWaWV3Kik7CiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkFycmF5QnVmZmVyVmlldyopOwog
dGVtcGxhdGU8dHlwZW5hbWUgVD4gSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBK
U0RPTUdsb2JhbE9iamVjdCosIGNvbnN0IFJlZlB0cjxUPiYpOwotdGVtcGxhdGU8dHlwZW5hbWUg
VD4gSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCos
IGNvbnN0IFBhc3NSZWZQdHI8VD4mKTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IEpTQzo6SlNWYWx1
ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBjb25zdCBSZWY8VD4m
KTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpT
Qzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBjb25zdCBSZWZQdHI8VD4mKTsKLXRl
bXBsYXRlPHR5cGVuYW1lIFQ+IEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhl
Y1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBjb25zdCBQYXNzUmVmUHRyPFQ+Jik7CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNT
dGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgY29uc3QgUmVmPFQ+Jik7CiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0KiwgY29uc3QgVmVjdG9yPFQ+Jik7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBKU0M6OkpTVmFs
dWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgY29uc3QgVmVjdG9y
PFJlZlB0cjxUPj4mKTsKQEAgLTU0OSwxMSArNTQ3LDYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
aW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2Jh
bE8KICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHB0ci5nZXQoKSk7CiB9CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNT
dGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUGFzc1Jl
ZlB0cjxUPiYgcHRyKQotewotICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHRy
LmdldCgpKTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0
b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBjb25zdCBSZWY8VD4mIHB0cikKIHsKICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmpl
Y3QsIGNvbnN0X2Nhc3Q8VCY+KHB0ci5nZXQoKSkpOwpAQCAtNTY0LDExICs1NTcsNiBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlND
OjpFeGVjU3RhdGUqIGV4ZWMsCiAgICAgcmV0dXJuIHRvSlNOZXdseUNyZWF0ZWQoZXhlYywgZ2xv
YmFsT2JqZWN0LCBwdHIuZ2V0KCkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUg
SlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFBhc3NSZWZQdHI8VD4mIHB0cikKLXsK
LSAgICByZXR1cm4gdG9KU05ld2x5Q3JlYXRlZChleGVjLCBnbG9iYWxPYmplY3QsIHB0ci5nZXQo
KSk7Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KU05l
d2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgUmVmPFQ+JiBwdHIpCiB7CiAgICAgcmV0dXJuIHRvSlNOZXdseUNyZWF0
ZWQoZXhlYywgZ2xvYmFsT2JqZWN0LCBjb25zdF9jYXN0PFQmPihwdHIuZ2V0KCkpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCmluZGV4IDk1YjNhOGIzOWNkY2Q4Njc4
ODQzNWVhZDJlOGMyMjdjOWFhMjU4ZWIuLjNhNjRmNjgzNThiNmJiZjZiYzM4OTUwOTc2NTQ3YWZi
YTRiOTE2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApAQCAt
OTQwLDEyICs5NDAsMTEgQEAgTGVuZ3RoUmVwZWF0KiBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0TGVu
Z3RoUmVwZWF0VmFsdWUoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB9CiAjZW5kaWYKIAotUGFz
c1JlZlB0cjxSR0JDb2xvcj4gQ1NTUHJpbWl0aXZlVmFsdWU6OmdldFJHQkNvbG9yVmFsdWUoRXhj
ZXB0aW9uQ29kZSYgZWMpIGNvbnN0CitSZWZQdHI8UkdCQ29sb3I+IENTU1ByaW1pdGl2ZVZhbHVl
OjpnZXRSR0JDb2xvclZhbHVlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewotICAgIGVjID0g
MDsKICAgICBpZiAobV9wcmltaXRpdmVVbml0VHlwZSAhPSBDU1NfUkdCQ09MT1IpIHsKICAgICAg
ICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICAvLyBGSU1YRTogVGhpcyBzaG91bGQgbm90IHJl
dHVybiBhIG5ldyBvYmplY3QgZm9yIGVhY2ggaW52b2NhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlLmgKaW5kZXggMjMzNzU4MTVjNjY4MDk4MTNkZDUyZGY3Y2IxNGI5NTNk
OGIyZGY5MC4uZWFiNWE2MTg2YzkwZWMxNzk3YTZjM2MzNWQyNjgzOGMzOGYxNTQ5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKQEAgLTM0Nyw3ICszNDcsNyBAQCBwdWJs
aWM6CiAgICAgTGVuZ3RoUmVwZWF0KiBnZXRMZW5ndGhSZXBlYXRWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgIT0gQ1NTX0xFTkdUSF9SRVBFQVQgPyAwIDogbV92YWx1
ZS5sZW5ndGhSZXBlYXQ7IH0KICNlbmRpZgogCi0gICAgUGFzc1JlZlB0cjxSR0JDb2xvcj4gZ2V0
UkdCQ29sb3JWYWx1ZShFeGNlcHRpb25Db2RlJikgY29uc3Q7CisgICAgUmVmUHRyPFJHQkNvbG9y
PiBnZXRSR0JDb2xvclZhbHVlKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICBSR0JBMzIgZ2V0
UkdCQTMyVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBlICE9IENTU19S
R0JDT0xPUiA/IDAgOiBtX3ZhbHVlLnJnYmNvbG9yOyB9CiAKICAgICBQYWlyKiBnZXRQYWlyVmFs
dWUoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKaW5kZXggNTFhNjg5ZjQ5YzZjNzQ0ODgzNGI0YjYyMWJjZmRiZDFmMWVlOGFmYi4u
ZDUxMTkwNTMzNmRjODkyMDgwNzcyYmU5MzVkYjQxNjQwZWI1MzI3NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC05NjcsOSArOTY3LDkgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpwZW5kaW5nQWN0aW9uVGltZXJGaXJlZCgpCiAgICAgICAgIG1lZGlhRW5n
aW5lV2FzVXBkYXRlZCgpOwogfQogCi1QYXNzUmVmUHRyPE1lZGlhRXJyb3I+IEhUTUxNZWRpYUVs
ZW1lbnQ6OmVycm9yKCkgY29uc3QgCitNZWRpYUVycm9yKiBIVE1MTWVkaWFFbGVtZW50OjplcnJv
cigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZXJyb3I7CisgICAgcmV0dXJuIG1fZXJyb3IuZ2V0
KCk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U3JjKGNvbnN0IFN0cmluZyYgdXJs
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBkOGJjMTU1ZDE3MmYw
M2Q2YTgzMmQ0NjIwODg4Zjc0NzFhY2E4Y2JmLi5iNDMxYjBjNzI3NTQxZGEwMGQwMjE5MDk0N2Rm
NmYxZGRkMWQ0N2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAt
MTU3LDcgKzE1Nyw3IEBAIHB1YmxpYzoKIAogLy8gRE9NIEFQSQogLy8gZXJyb3Igc3RhdGUKLSAg
ICBQYXNzUmVmUHRyPE1lZGlhRXJyb3I+IGVycm9yKCkgY29uc3Q7CisgICAgTWVkaWFFcnJvciog
ZXJyb3IoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0U3JjKGNvbnN0IFN0cmluZyYpOwogICAgIGNv
bnN0IFVSTCYgY3VycmVudFNyYygpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFNyYzsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbGFibGVFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTGFiZWxhYmxlRWxlbWVudC5jcHAKaW5kZXggNmFiYjViMmJhZWQzZjBh
YjgxMzBkNmVmNTFmNDQ3NGQyMDAwMTI0NC4uN2YzZjcwZTZhOTAwNWM3YTZlMDczYjJlNzhkMDQ5
MWFjYzFkN2ExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbGFibGVFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsYWJsZUVsZW1lbnQuY3BwCkBA
IC00MCwxMCArNDAsMTAgQEAgTGFiZWxhYmxlRWxlbWVudDo6fkxhYmVsYWJsZUVsZW1lbnQoKQog
ewogfQogCi1QYXNzUmVmUHRyPE5vZGVMaXN0PiBMYWJlbGFibGVFbGVtZW50OjpsYWJlbHMoKQor
UmVmUHRyPE5vZGVMaXN0PiBMYWJlbGFibGVFbGVtZW50OjpsYWJlbHMoKQogewogICAgIGlmICgh
c3VwcG9ydExhYmVscygpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRD
YWNoZVdpdGhBdG9taWNOYW1lPExhYmVsc05vZGVMaXN0PigqdGhpcywgc3RhckF0b20pOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbGFibGVFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0xhYmVsYWJsZUVsZW1lbnQuaAppbmRleCAyY2ZiYjE2ODRlY2VmYjEx
ZDA3NzZjZmI5YjJmN2I3NTEwMzRjNTMyLi5iMWE5ZGViOTlmZGQ3ODAyM2IyZjZmNTE2OGY1ZDQ2
YzBjZDU5NjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsYWJsZUVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsYWJsZUVsZW1lbnQuaApAQCAtNDAs
NyArNDAsNyBAQCBjbGFzcyBMYWJlbGFibGVFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50IHsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5MYWJlbGFibGVFbGVtZW50KCk7CiAKLSAgICBQYXNzUmVm
UHRyPE5vZGVMaXN0PiBsYWJlbHMoKTsKKyAgICBSZWZQdHI8Tm9kZUxpc3Q+IGxhYmVscygpOwog
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0TGFiZWxzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
IAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xHZXRJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5j
cHAKaW5kZXggNDU1OGI4YWY5OTkxNmRkMDRjNTNjMmI0ZDNkNTcyNGJhZDNhNzQ5OC4uNGVhZDFj
ZmQ2Mzc0MmIwMGQ1MjQyZGU3MTk1NzIzYWIzZWYzZDFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwCkBAIC0yOTgsNzEgKzI5OCw3MSBAQCBsb25nIGxv
bmcgV2ViR0xHZXRJbmZvOjpnZXRJbnQ2NCgpIGNvbnN0CiAgICAgcmV0dXJuIG1faW50NjQ7CiB9
CiAKLVBhc3NSZWZQdHI8V2ViR0xCdWZmZXI+IFdlYkdMR2V0SW5mbzo6Z2V0V2ViR0xCdWZmZXIo
KSBjb25zdAorV2ViR0xCdWZmZXIqIFdlYkdMR2V0SW5mbzo6Z2V0V2ViR0xCdWZmZXIoKSBjb25z
dAogewogICAgIEFTU0VSVChnZXRUeXBlKCkgPT0ga1R5cGVXZWJHTEJ1ZmZlcik7Ci0gICAgcmV0
dXJuIG1fd2ViZ2xCdWZmZXI7CisgICAgcmV0dXJuIG1fd2ViZ2xCdWZmZXIuZ2V0KCk7CiB9CiAK
LVBhc3NSZWZQdHI8RmxvYXQzMkFycmF5PiBXZWJHTEdldEluZm86OmdldFdlYkdMRmxvYXRBcnJh
eSgpIGNvbnN0CitGbG9hdDMyQXJyYXkqIFdlYkdMR2V0SW5mbzo6Z2V0V2ViR0xGbG9hdEFycmF5
KCkgY29uc3QKIHsKICAgICBBU1NFUlQoZ2V0VHlwZSgpID09IGtUeXBlV2ViR0xGbG9hdEFycmF5
KTsKLSAgICByZXR1cm4gbV93ZWJnbEZsb2F0QXJyYXk7CisgICAgcmV0dXJuIG1fd2ViZ2xGbG9h
dEFycmF5LmdldCgpOwogfQogCi1QYXNzUmVmUHRyPFdlYkdMRnJhbWVidWZmZXI+IFdlYkdMR2V0
SW5mbzo6Z2V0V2ViR0xGcmFtZWJ1ZmZlcigpIGNvbnN0CitXZWJHTEZyYW1lYnVmZmVyKiBXZWJH
TEdldEluZm86OmdldFdlYkdMRnJhbWVidWZmZXIoKSBjb25zdAogewogICAgIEFTU0VSVChnZXRU
eXBlKCkgPT0ga1R5cGVXZWJHTEZyYW1lYnVmZmVyKTsKLSAgICByZXR1cm4gbV93ZWJnbEZyYW1l
YnVmZmVyOworICAgIHJldHVybiBtX3dlYmdsRnJhbWVidWZmZXIuZ2V0KCk7CiB9CiAKLVBhc3NS
ZWZQdHI8SW50MzJBcnJheT4gV2ViR0xHZXRJbmZvOjpnZXRXZWJHTEludEFycmF5KCkgY29uc3QK
K0ludDMyQXJyYXkqIFdlYkdMR2V0SW5mbzo6Z2V0V2ViR0xJbnRBcnJheSgpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKGdldFR5cGUoKSA9PSBrVHlwZVdlYkdMSW50QXJyYXkpOwotICAgIHJldHVybiBt
X3dlYmdsSW50QXJyYXk7CisgICAgcmV0dXJuIG1fd2ViZ2xJbnRBcnJheS5nZXQoKTsKIH0KIAot
UGFzc1JlZlB0cjxXZWJHTFByb2dyYW0+IFdlYkdMR2V0SW5mbzo6Z2V0V2ViR0xQcm9ncmFtKCkg
Y29uc3QKK1dlYkdMUHJvZ3JhbSogV2ViR0xHZXRJbmZvOjpnZXRXZWJHTFByb2dyYW0oKSBjb25z
dAogewogICAgIEFTU0VSVChnZXRUeXBlKCkgPT0ga1R5cGVXZWJHTFByb2dyYW0pOwotICAgIHJl
dHVybiBtX3dlYmdsUHJvZ3JhbTsKKyAgICByZXR1cm4gbV93ZWJnbFByb2dyYW0uZ2V0KCk7CiB9
CiAKLVBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IFdlYkdMR2V0SW5mbzo6Z2V0V2ViR0xS
ZW5kZXJidWZmZXIoKSBjb25zdAorV2ViR0xSZW5kZXJidWZmZXIqIFdlYkdMR2V0SW5mbzo6Z2V0
V2ViR0xSZW5kZXJidWZmZXIoKSBjb25zdAogewogICAgIEFTU0VSVChnZXRUeXBlKCkgPT0ga1R5
cGVXZWJHTFJlbmRlcmJ1ZmZlcik7Ci0gICAgcmV0dXJuIG1fd2ViZ2xSZW5kZXJidWZmZXI7Cisg
ICAgcmV0dXJuIG1fd2ViZ2xSZW5kZXJidWZmZXIuZ2V0KCk7CiB9CiAKLVBhc3NSZWZQdHI8V2Vi
R0xUZXh0dXJlPiBXZWJHTEdldEluZm86OmdldFdlYkdMVGV4dHVyZSgpIGNvbnN0CitXZWJHTFRl
eHR1cmUqIFdlYkdMR2V0SW5mbzo6Z2V0V2ViR0xUZXh0dXJlKCkgY29uc3QKIHsKICAgICBBU1NF
UlQoZ2V0VHlwZSgpID09IGtUeXBlV2ViR0xUZXh0dXJlKTsKLSAgICByZXR1cm4gbV93ZWJnbFRl
eHR1cmU7CisgICAgcmV0dXJuIG1fd2ViZ2xUZXh0dXJlLmdldCgpOwogfQogCi1QYXNzUmVmUHRy
PFVpbnQ4QXJyYXk+IFdlYkdMR2V0SW5mbzo6Z2V0V2ViR0xVbnNpZ25lZEJ5dGVBcnJheSgpIGNv
bnN0CitVaW50OEFycmF5KiBXZWJHTEdldEluZm86OmdldFdlYkdMVW5zaWduZWRCeXRlQXJyYXko
KSBjb25zdAogewogICAgIEFTU0VSVChnZXRUeXBlKCkgPT0ga1R5cGVXZWJHTFVuc2lnbmVkQnl0
ZUFycmF5KTsKLSAgICByZXR1cm4gbV93ZWJnbFVuc2lnbmVkQnl0ZUFycmF5OworICAgIHJldHVy
biBtX3dlYmdsVW5zaWduZWRCeXRlQXJyYXkuZ2V0KCk7CiB9CiAKLVBhc3NSZWZQdHI8VWludDMy
QXJyYXk+IFdlYkdMR2V0SW5mbzo6Z2V0V2ViR0xVbnNpZ25lZEludEFycmF5KCkgY29uc3QKK1Vp
bnQzMkFycmF5KiBXZWJHTEdldEluZm86OmdldFdlYkdMVW5zaWduZWRJbnRBcnJheSgpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKGdldFR5cGUoKSA9PSBrVHlwZVdlYkdMVW5zaWduZWRJbnRBcnJheSk7
Ci0gICAgcmV0dXJuIG1fd2ViZ2xVbnNpZ25lZEludEFycmF5OworICAgIHJldHVybiBtX3dlYmds
VW5zaWduZWRJbnRBcnJheS5nZXQoKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJHTFZlcnRleEFycmF5
T2JqZWN0T0VTPiBXZWJHTEdldEluZm86OmdldFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMoKSBj
b25zdAorV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyogV2ViR0xHZXRJbmZvOjpnZXRXZWJHTFZl
cnRleEFycmF5T2JqZWN0T0VTKCkgY29uc3QKIHsKICAgICBBU1NFUlQoZ2V0VHlwZSgpID09IGtU
eXBlV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyk7Ci0gICAgcmV0dXJuIG1fd2ViZ2xWZXJ0ZXhB
cnJheU9iamVjdE9FUzsKKyAgICByZXR1cm4gbV93ZWJnbFZlcnRleEFycmF5T2JqZWN0T0VTLmdl
dCgpOwogfQogCiAjaWYgRU5BQkxFKFdFQkdMMikKLVBhc3NSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdD4gV2ViR0xHZXRJbmZvOjpnZXRXZWJHTFZlcnRleEFycmF5T2JqZWN0KCkgY29uc3QK
K1dlYkdMVmVydGV4QXJyYXlPYmplY3QqIFdlYkdMR2V0SW5mbzo6Z2V0V2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGdldFR5cGUoKSA9PSBrVHlwZVdlYkdMVmVy
dGV4QXJyYXlPYmplY3QpOwotICAgIHJldHVybiBtX3dlYmdsVmVydGV4QXJyYXlPYmplY3Q7Cisg
ICAgcmV0dXJuIG1fd2ViZ2xWZXJ0ZXhBcnJheU9iamVjdC5nZXQoKTsKIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8uaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5oCmluZGV4IDdiMmRlNzdjNjQz
Y2RjMjgzMjBjYjc1NjU5NmU4NjM0NzUzNDFkZmIuLmMwMzJkMTUwMWYyOTYyYzRjZDgwNDk5YjNm
OWM3ZTg5YmFmODdmOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMR2V0SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMR2V0SW5m
by5oCkBAIC0xMTIsMjAgKzExMiwyMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBnZXRT
dHJpbmcoKSBjb25zdDsKICAgICB1bnNpZ25lZCBpbnQgZ2V0VW5zaWduZWRJbnQoKSBjb25zdDsK
ICAgICBsb25nIGxvbmcgZ2V0SW50NjQoKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPFdlYkdMQnVm
ZmVyPiBnZXRXZWJHTEJ1ZmZlcigpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8RmxvYXQzMkFycmF5
PiBnZXRXZWJHTEZsb2F0QXJyYXkoKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPFdlYkdMRnJhbWVi
dWZmZXI+IGdldFdlYkdMRnJhbWVidWZmZXIoKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPEludDMy
QXJyYXk+IGdldFdlYkdMSW50QXJyYXkoKSBjb25zdDsKKyAgICBXZWJHTEJ1ZmZlciogZ2V0V2Vi
R0xCdWZmZXIoKSBjb25zdDsKKyAgICBGbG9hdDMyQXJyYXkqIGdldFdlYkdMRmxvYXRBcnJheSgp
IGNvbnN0OworICAgIFdlYkdMRnJhbWVidWZmZXIqIGdldFdlYkdMRnJhbWVidWZmZXIoKSBjb25z
dDsKKyAgICBJbnQzMkFycmF5KiBnZXRXZWJHTEludEFycmF5KCkgY29uc3Q7CiAgICAgLy8gRklY
TUU6IGltcGxlbWVudCBXZWJHTE9iamVjdEFycmF5Ci0gICAgLy8gUGFzc1JlZlB0cjxXZWJHTE9i
amVjdEFycmF5PiBnZXRXZWJHTE9iamVjdEFycmF5KCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxX
ZWJHTFByb2dyYW0+IGdldFdlYkdMUHJvZ3JhbSgpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8V2Vi
R0xSZW5kZXJidWZmZXI+IGdldFdlYkdMUmVuZGVyYnVmZmVyKCkgY29uc3Q7Ci0gICAgUGFzc1Jl
ZlB0cjxXZWJHTFRleHR1cmU+IGdldFdlYkdMVGV4dHVyZSgpIGNvbnN0OwotICAgIFBhc3NSZWZQ
dHI8VWludDhBcnJheT4gZ2V0V2ViR0xVbnNpZ25lZEJ5dGVBcnJheSgpIGNvbnN0OwotICAgIFBh
c3NSZWZQdHI8VWludDMyQXJyYXk+IGdldFdlYkdMVW5zaWduZWRJbnRBcnJheSgpIGNvbnN0Owot
ICAgIFBhc3NSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUz4gZ2V0V2ViR0xWZXJ0ZXhB
cnJheU9iamVjdE9FUygpIGNvbnN0OworICAgIC8vIFdlYkdMT2JqZWN0QXJyYXkqIGdldFdlYkdM
T2JqZWN0QXJyYXkoKSBjb25zdDsKKyAgICBXZWJHTFByb2dyYW0qIGdldFdlYkdMUHJvZ3JhbSgp
IGNvbnN0OworICAgIFdlYkdMUmVuZGVyYnVmZmVyKiBnZXRXZWJHTFJlbmRlcmJ1ZmZlcigpIGNv
bnN0OworICAgIFdlYkdMVGV4dHVyZSogZ2V0V2ViR0xUZXh0dXJlKCkgY29uc3Q7CisgICAgVWlu
dDhBcnJheSogZ2V0V2ViR0xVbnNpZ25lZEJ5dGVBcnJheSgpIGNvbnN0OworICAgIFVpbnQzMkFy
cmF5KiBnZXRXZWJHTFVuc2lnbmVkSW50QXJyYXkoKSBjb25zdDsKKyAgICBXZWJHTFZlcnRleEFy
cmF5T2JqZWN0T0VTKiBnZXRXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKCkgY29uc3Q7CiAjaWYg
RU5BQkxFKFdFQkdMMikKLSAgICBQYXNzUmVmUHRyPFdlYkdMVmVydGV4QXJyYXlPYmplY3Q+IGdl
dFdlYkdMVmVydGV4QXJyYXlPYmplY3QoKSBjb25zdDsKKyAgICBXZWJHTFZlcnRleEFycmF5T2Jq
ZWN0KiBnZXRXZWJHTFZlcnRleEFycmF5T2JqZWN0KCkgY29uc3Q7CiAjZW5kaWYKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHAKaW5kZXggOTI5MDg5MWE1YjQxM2I3ZjIzNjM2NWRkOGU3OTBhYmVi
Njg4NDJlMC4uYjAwMTBiNmU5ODBiZWQyZTk5MzhiMmQ5N2Q1ZGM4OTdjODFiYjc2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAKQEAgLTc1Miw3ICs3NTIsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkKICAgICBtX2NvbnRleHQtPnBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKGNhbnZhcygpLT5idWZmZXIoKSk7CiB9CiAKLVBh
c3NSZWZQdHI8SW1hZ2VEYXRhPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwYWludFJlbmRl
cmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpCitSZWZQdHI8SW1hZ2VEYXRhPiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpCiB7CiAgICAg
aWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0xMzg2LDUyICsxMzg2LDUyIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29w
eVRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsCiAgICAgfQogfQog
Ci1QYXNzUmVmUHRyPFdlYkdMQnVmZmVyPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVh
dGVCdWZmZXIoKQorUmVmUHRyPFdlYkdMQnVmZmVyPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpjcmVhdGVCdWZmZXIoKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIFJlZlB0cjxXZWJHTEJ1ZmZlcj4gbyA9IFdlYkdM
QnVmZmVyOjpjcmVhdGUodGhpcyk7Ci0gICAgYWRkU2hhcmVkT2JqZWN0KG8uZ2V0KCkpOwotICAg
IHJldHVybiBvOworICAgIGF1dG8gYnVmZmVyID0gV2ViR0xCdWZmZXI6OmNyZWF0ZSh0aGlzKTsK
KyAgICBhZGRTaGFyZWRPYmplY3QoYnVmZmVyLnB0cigpKTsKKyAgICByZXR1cm4gV1RGTW92ZShi
dWZmZXIpOwogfQogCi1QYXNzUmVmUHRyPFdlYkdMRnJhbWVidWZmZXI+IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmNyZWF0ZUZyYW1lYnVmZmVyKCkKK1JlZlB0cjxXZWJHTEZyYW1lYnVmZmVy
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGVGcmFtZWJ1ZmZlcigpCiB7CiAgICAg
aWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgUmVmUHRyPFdlYkdMRnJhbWVidWZmZXI+IG8gPSBXZWJHTEZyYW1lYnVmZmVyOjpjcmVhdGUo
dGhpcyk7Ci0gICAgYWRkQ29udGV4dE9iamVjdChvLmdldCgpKTsKLSAgICByZXR1cm4gbzsKKyAg
ICBhdXRvIGJ1ZmZlciA9IFdlYkdMRnJhbWVidWZmZXI6OmNyZWF0ZSh0aGlzKTsKKyAgICBhZGRD
b250ZXh0T2JqZWN0KGJ1ZmZlci5wdHIoKSk7CisgICAgcmV0dXJuIFdURk1vdmUoYnVmZmVyKTsK
IH0KIAotUGFzc1JlZlB0cjxXZWJHTFRleHR1cmU+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmNyZWF0ZVRleHR1cmUoKQorUmVmUHRyPFdlYkdMVGV4dHVyZT4gV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Y3JlYXRlVGV4dHVyZSgpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRp
bmcoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgUmVmUHRyPFdlYkdMVGV4dHVyZT4g
byA9IFdlYkdMVGV4dHVyZTo6Y3JlYXRlKHRoaXMpOwotICAgIGFkZFNoYXJlZE9iamVjdChvLmdl
dCgpKTsKLSAgICByZXR1cm4gbzsKKyAgICBhdXRvIHRleHR1cmUgPSBXZWJHTFRleHR1cmU6OmNy
ZWF0ZSh0aGlzKTsKKyAgICBhZGRTaGFyZWRPYmplY3QodGV4dHVyZS5wdHIoKSk7CisgICAgcmV0
dXJuIFdURk1vdmUodGV4dHVyZSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViR0xQcm9ncmFtPiBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGVQcm9ncmFtKCkKK1JlZlB0cjxXZWJHTFByb2dy
YW0+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZVByb2dyYW0oKQogewogICAgIGlm
IChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IFJlZlB0cjxXZWJHTFByb2dyYW0+IG8gPSBXZWJHTFByb2dyYW06OmNyZWF0ZSh0aGlzKTsKLSAg
ICBhZGRTaGFyZWRPYmplY3Qoby5nZXQoKSk7Ci0gICAgcmV0dXJuIG87CisgICAgYXV0byBwcm9n
cmFtID0gV2ViR0xQcm9ncmFtOjpjcmVhdGUodGhpcyk7CisgICAgYWRkU2hhcmVkT2JqZWN0KHBy
b2dyYW0ucHRyKCkpOworICAgIHJldHVybiBXVEZNb3ZlKHByb2dyYW0pOwogfQogCi1QYXNzUmVm
UHRyPFdlYkdMUmVuZGVyYnVmZmVyPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGVS
ZW5kZXJidWZmZXIoKQorUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpjcmVhdGVSZW5kZXJidWZmZXIoKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIFJlZlB0cjxXZWJHTFJl
bmRlcmJ1ZmZlcj4gbyA9IFdlYkdMUmVuZGVyYnVmZmVyOjpjcmVhdGUodGhpcyk7Ci0gICAgYWRk
U2hhcmVkT2JqZWN0KG8uZ2V0KCkpOwotICAgIHJldHVybiBvOworICAgIGF1dG8gYnVmZmVyID0g
V2ViR0xSZW5kZXJidWZmZXI6OmNyZWF0ZSh0aGlzKTsKKyAgICBhZGRTaGFyZWRPYmplY3QoYnVm
ZmVyLnB0cigpKTsKKyAgICByZXR1cm4gV1RGTW92ZShidWZmZXIpOwogfQogCi1QYXNzUmVmUHRy
PFdlYkdMU2hhZGVyPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGVTaGFkZXIoR0Mz
RGVudW0gdHlwZSwgRXhjZXB0aW9uQ29kZSYpCitSZWZQdHI8V2ViR0xTaGFkZXI+IFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZVNoYWRlcihHQzNEZW51bSB0eXBlLCBFeGNlcHRpb25D
b2RlJikKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTE0NDAsOSArMTQ0MCw5IEBAIFBhc3NSZWZQdHI8V2ViR0xTaGFkZXI+
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZVNoYWRlcihHQzNEZW51bSB0eXBlLCBF
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFJlZlB0cjxXZWJHTFNoYWRl
cj4gbyA9IFdlYkdMU2hhZGVyOjpjcmVhdGUodGhpcywgdHlwZSk7Ci0gICAgYWRkU2hhcmVkT2Jq
ZWN0KG8uZ2V0KCkpOwotICAgIHJldHVybiBvOworICAgIGF1dG8gc2hhZGVyID0gV2ViR0xTaGFk
ZXI6OmNyZWF0ZSh0aGlzLCB0eXBlKTsKKyAgICBhZGRTaGFyZWRPYmplY3Qoc2hhZGVyLnB0cigp
KTsKKyAgICByZXR1cm4gV1RGTW92ZShzaGFkZXIpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmN1bGxGYWNlKEdDM0RlbnVtIG1vZGUpCkBAIC0yMTE2LDcgKzIxMTYsNyBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdlbmVyYXRlTWlwbWFwKEdDM0RlbnVt
IHRhcmdldCkKICAgICB0ZXgtPmdlbmVyYXRlTWlwbWFwTGV2ZWxJbmZvKCk7CiB9CiAKLVBhc3NS
ZWZQdHI8V2ViR0xBY3RpdmVJbmZvPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBY3Rp
dmVBdHRyaWIoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwgRXhjZXB0aW9u
Q29kZSYpCitSZWZQdHI8V2ViR0xBY3RpdmVJbmZvPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRBY3RpdmVBdHRyaWIoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwg
RXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAh
dmFsaWRhdGVXZWJHTE9iamVjdCgiZ2V0QWN0aXZlQXR0cmliIiwgcHJvZ3JhbSkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtMjEyOSwxMCArMjEyOSwxMCBAQCBQYXNzUmVmUHRyPFdlYkdM
QWN0aXZlSW5mbz4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QWN0aXZlQXR0cmliKFdl
YkdMUHJvZwogICAgIHJldHVybiBXZWJHTEFjdGl2ZUluZm86OmNyZWF0ZShpbmZvLm5hbWUsIGlu
Zm8udHlwZSwgaW5mby5zaXplKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJHTEFjdGl2ZUluZm8+IFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEFjdGl2ZVVuaWZvcm0oV2ViR0xQcm9ncmFtKiBw
cm9ncmFtLCBHQzNEdWludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpCitSZWZQdHI8V2ViR0xBY3Rp
dmVJbmZvPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBY3RpdmVVbmlmb3JtKFdlYkdM
UHJvZ3JhbSogcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKQogewogICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xPYmplY3QoImdl
dEFjdGl2ZVVuaWZvcm0iLCBwcm9ncmFtKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIEFjdGl2ZUluZm8gaW5mbzsKICAgICBpZiAoIW1fY29udGV4dC0+
Z2V0QWN0aXZlVW5pZm9ybShvYmplY3RPclplcm8ocHJvZ3JhbSksIGluZGV4LCBpbmZvKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMzUyLDcgKzIzNTIsNyBAQCBTdHJpbmcgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0U2hhZGVySW5mb0xvZyhXZWJHTFNoYWRlciogc2hhZGVy
LCBFeGNlcHRpbwogICAgIHJldHVybiBlbnN1cmVOb3ROdWxsKG1fY29udGV4dC0+Z2V0U2hhZGVy
SW5mb0xvZyhvYmplY3RPclplcm8oc2hhZGVyKSkpOwogfQogCi1QYXNzUmVmUHRyPFdlYkdMU2hh
ZGVyUHJlY2lzaW9uRm9ybWF0PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQ
cmVjaXNpb25Gb3JtYXQoR0MzRGVudW0gc2hhZGVyVHlwZSwgR0MzRGVudW0gcHJlY2lzaW9uVHlw
ZSwgRXhjZXB0aW9uQ29kZSYpCitSZWZQdHI8V2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQ+IFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQzNEZW51
bSBzaGFkZXJUeXBlLCBHQzNEZW51bSBwcmVjaXNpb25UeXBlLCBFeGNlcHRpb25Db2RlJikKIHsK
ICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTI1NDUsNyArMjU0NSw3IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpnZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgY29uc3QKICAgICByZXR1
cm4gV2ViR0xHZXRJbmZvKCk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViR0xVbmlmb3JtTG9jYXRpb24+
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTFByb2dy
YW0qIHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpCitSZWZQdHI8
V2ViR0xVbmlmb3JtTG9jYXRpb24+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZv
cm1Mb2NhdGlvbihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhj
ZXB0aW9uQ29kZSYpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFs
aWRhdGVXZWJHTE9iamVjdCgiZ2V0VW5pZm9ybUxvY2F0aW9uIiwgcHJvZ3JhbSkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtMzE1Miw3ICszMTUyLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjp0ZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwg
R0MzRGUKICAgICAgICAgbV9jb250ZXh0LT5waXhlbFN0b3JlaShHcmFwaGljc0NvbnRleHQzRDo6
VU5QQUNLX0FMSUdOTUVOVCwgbV91bnBhY2tBbGlnbm1lbnQpOwogfQogCi1QYXNzUmVmUHRyPElt
YWdlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkcmF3SW1hZ2VJbnRvQnVmZmVyKEltYWdl
JiBpbWFnZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgZGV2aWNlU2NhbGVGYWN0b3IpCitS
ZWZQdHI8SW1hZ2U+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRyYXdJbWFnZUludG9CdWZm
ZXIoSW1hZ2UmIGltYWdlLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBkZXZpY2VTY2FsZUZh
Y3RvcikKIHsKICAgICBJbnRTaXplIHNpemUod2lkdGgsIGhlaWdodCk7CiAgICAgc2l6ZS5zY2Fs
ZShkZXZpY2VTY2FsZUZhY3Rvcik7CkBAIC0zMjIwLDcgKzMyMjAsNyBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxl
dmVsLCBHQzNEZQogfQogCiAjaWYgRU5BQkxFKFZJREVPKQotUGFzc1JlZlB0cjxJbWFnZT4gV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmlkZW9GcmFtZVRvSW1hZ2UoSFRNTFZpZGVvRWxlbWVu
dCogdmlkZW8sIEJhY2tpbmdTdG9yZUNvcHkgYmFja2luZ1N0b3JlQ29weSwgRXhjZXB0aW9uQ29k
ZSYpCitSZWZQdHI8SW1hZ2U+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZpZGVvRnJhbWVU
b0ltYWdlKEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvLCBCYWNraW5nU3RvcmVDb3B5IGJhY2tpbmdT
dG9yZUNvcHksIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIEludFNpemUgc2l6ZSh2aWRlby0+dmlk
ZW9XaWR0aCgpLCB2aWRlby0+dmlkZW9IZWlnaHQoKSk7CiAgICAgSW1hZ2VCdWZmZXIqIGJ1ZiA9
IG1fZ2VuZXJhdGVkSW1hZ2VDYWNoZS5pbWFnZUJ1ZmZlcihzaXplKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRl
eCBhNTY3YWFkMDRlOTcwZGY5MDQ5Njk1ZTIyMjhjNjg2OGU3M2I0YTEyLi43ZDRkZjIyMGJiZDJl
NzY5NmY0NTRlNmM2MzY1NmQ5ZTQzNjQ5MDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC0xNTgsMTIgKzE1
OCwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvcHlUZXhJbWFnZTJEKEdDM0RlbnVt
IHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RpbnQg
eCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQg
Ym9yZGVyKSA9IDA7CiAgICAgdm9pZCBjb3B5VGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQs
IEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEaW50
IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KTsKIAotICAg
IFBhc3NSZWZQdHI8V2ViR0xCdWZmZXI+IGNyZWF0ZUJ1ZmZlcigpOwotICAgIFBhc3NSZWZQdHI8
V2ViR0xGcmFtZWJ1ZmZlcj4gY3JlYXRlRnJhbWVidWZmZXIoKTsKLSAgICBQYXNzUmVmUHRyPFdl
YkdMUHJvZ3JhbT4gY3JlYXRlUHJvZ3JhbSgpOwotICAgIFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJi
dWZmZXI+IGNyZWF0ZVJlbmRlcmJ1ZmZlcigpOwotICAgIFBhc3NSZWZQdHI8V2ViR0xTaGFkZXI+
IGNyZWF0ZVNoYWRlcihHQzNEZW51bSB0eXBlLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1Jl
ZlB0cjxXZWJHTFRleHR1cmU+IGNyZWF0ZVRleHR1cmUoKTsKKyAgICBSZWZQdHI8V2ViR0xCdWZm
ZXI+IGNyZWF0ZUJ1ZmZlcigpOworICAgIFJlZlB0cjxXZWJHTEZyYW1lYnVmZmVyPiBjcmVhdGVG
cmFtZWJ1ZmZlcigpOworICAgIFJlZlB0cjxXZWJHTFByb2dyYW0+IGNyZWF0ZVByb2dyYW0oKTsK
KyAgICBSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IGNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAg
IFJlZlB0cjxXZWJHTFNoYWRlcj4gY3JlYXRlU2hhZGVyKEdDM0RlbnVtIHR5cGUsIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICBSZWZQdHI8V2ViR0xUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKCk7CiAKICAg
ICB2b2lkIGN1bGxGYWNlKEdDM0RlbnVtIG1vZGUpOwogCkBAIC0xOTIsOCArMTkyLDggQEAgcHVi
bGljOgogICAgIHZvaWQgZnJvbnRGYWNlKEdDM0RlbnVtIG1vZGUpOwogICAgIHZvaWQgZ2VuZXJh
dGVNaXBtYXAoR0MzRGVudW0gdGFyZ2V0KTsKIAotICAgIFBhc3NSZWZQdHI8V2ViR0xBY3RpdmVJ
bmZvPiBnZXRBY3RpdmVBdHRyaWIoV2ViR0xQcm9ncmFtKiwgR0MzRHVpbnQgaW5kZXgsIEV4Y2Vw
dGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPFdlYkdMQWN0aXZlSW5mbz4gZ2V0QWN0aXZlVW5p
Zm9ybShXZWJHTFByb2dyYW0qLCBHQzNEdWludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOworICAg
IFJlZlB0cjxXZWJHTEFjdGl2ZUluZm8+IGdldEFjdGl2ZUF0dHJpYihXZWJHTFByb2dyYW0qLCBH
QzNEdWludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxXZWJHTEFjdGl2ZUlu
Zm8+IGdldEFjdGl2ZVVuaWZvcm0oV2ViR0xQcm9ncmFtKiwgR0MzRHVpbnQgaW5kZXgsIEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICBib29sIGdldEF0dGFjaGVkU2hhZGVycyhXZWJHTFByb2dyYW0qLCBW
ZWN0b3I8UmVmUHRyPFdlYkdMU2hhZGVyPj4mLCBFeGNlcHRpb25Db2RlJik7CiAgICAgR0MzRGlu
dCBnZXRBdHRyaWJMb2NhdGlvbihXZWJHTFByb2dyYW0qLCBjb25zdCBTdHJpbmcmIG5hbWUpOwog
ICAgIFdlYkdMR2V0SW5mbyBnZXRCdWZmZXJQYXJhbWV0ZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNE
ZW51bSBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtMjA3LDEyICsyMDcsMTIgQEAgcHVibGlj
OgogICAgIFdlYkdMR2V0SW5mbyBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoR0MzRGVudW0gdGFy
Z2V0LCBHQzNEZW51bSBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFdlYkdMR2V0SW5mbyBn
ZXRTaGFkZXJQYXJhbWV0ZXIoV2ViR0xTaGFkZXIqLCBHQzNEZW51bSBwbmFtZSwgRXhjZXB0aW9u
Q29kZSYpOwogICAgIFN0cmluZyBnZXRTaGFkZXJJbmZvTG9nKFdlYkdMU2hhZGVyKiwgRXhjZXB0
aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8V2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQ+IGdl
dFNoYWRlclByZWNpc2lvbkZvcm1hdChHQzNEZW51bSBzaGFkZXJUeXBlLCBHQzNEZW51bSBwcmVj
aXNpb25UeXBlLCBFeGNlcHRpb25Db2RlJik7CisgICAgUmVmUHRyPFdlYkdMU2hhZGVyUHJlY2lz
aW9uRm9ybWF0PiBnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0MzRGVudW0gc2hhZGVyVHlwZSwg
R0MzRGVudW0gcHJlY2lzaW9uVHlwZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFN0cmluZyBnZXRT
aGFkZXJTb3VyY2UoV2ViR0xTaGFkZXIqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCBW
ZWN0b3I8U3RyaW5nPiBnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkgPSAwOwogICAgIFdlYkdMR2V0
SW5mbyBnZXRUZXhQYXJhbWV0ZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIFdlYkdMR2V0SW5mbyBnZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSos
IGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NS
ZWZQdHI8V2ViR0xVbmlmb3JtTG9jYXRpb24+IGdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTFByb2dy
YW0qLCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CisgICAgUmVmUHRyPFdlYkdMVW5p
Zm9ybUxvY2F0aW9uPiBnZXRVbmlmb3JtTG9jYXRpb24oV2ViR0xQcm9ncmFtKiwgY29uc3QgU3Ry
aW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFdlYkdMR2V0SW5mbyBnZXRWZXJ0ZXhBdHRyaWIo
R0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAgICAgbG9u
ZyBsb25nIGdldFZlcnRleEF0dHJpYk9mZnNldChHQzNEdWludCBpbmRleCwgR0MzRGVudW0gcG5h
bWUpOwogCkBAIC0zNDYsNyArMzQ2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBtYXJrTGF5ZXJD
b21wb3NpdGVkKCk7CiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpIG92
ZXJyaWRlOwotICAgIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBwYWludFJlbmRlcmluZ1Jlc3VsdHNU
b0ltYWdlRGF0YSgpOworICAgIFJlZlB0cjxJbWFnZURhdGE+IHBhaW50UmVuZGVyaW5nUmVzdWx0
c1RvSW1hZ2VEYXRhKCk7CiAKICAgICB2b2lkIHJlbW92ZVNoYXJlZE9iamVjdChXZWJHTFNoYXJl
ZE9iamVjdCopOwogICAgIHZvaWQgcmVtb3ZlQ29udGV4dE9iamVjdChXZWJHTENvbnRleHRPYmpl
Y3QqKTsKQEAgLTQyNiwxMCArNDI2LDEwIEBAIHByb3RlY3RlZDoKICAgICAvLyBBZGRzIGEgY29t
cHJlc3NlZCB0ZXh0dXJlIGZvcm1hdC4KICAgICB2b2lkIGFkZENvbXByZXNzZWRUZXh0dXJlRm9y
bWF0KEdDM0RlbnVtKTsKIAotICAgIFBhc3NSZWZQdHI8SW1hZ2U+IGRyYXdJbWFnZUludG9CdWZm
ZXIoSW1hZ2UmLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBkZXZpY2VTY2FsZUZhY3Rvcik7
CisgICAgUmVmUHRyPEltYWdlPiBkcmF3SW1hZ2VJbnRvQnVmZmVyKEltYWdlJiwgaW50IHdpZHRo
LCBpbnQgaGVpZ2h0LCBpbnQgZGV2aWNlU2NhbGVGYWN0b3IpOwogCiAjaWYgRU5BQkxFKFZJREVP
KQotICAgIFBhc3NSZWZQdHI8SW1hZ2U+IHZpZGVvRnJhbWVUb0ltYWdlKEhUTUxWaWRlb0VsZW1l
bnQqLCBCYWNraW5nU3RvcmVDb3B5LCBFeGNlcHRpb25Db2RlJik7CisgICAgUmVmUHRyPEltYWdl
PiB2aWRlb0ZyYW1lVG9JbWFnZShIVE1MVmlkZW9FbGVtZW50KiwgQmFja2luZ1N0b3JlQ29weSwg
RXhjZXB0aW9uQ29kZSYpOwogI2VuZGlmCiAKICAgICBXZWJHTFRleHR1cmU6OlRleHR1cmVFeHRl
bnNpb25GbGFnIHRleHR1cmVFeHRlbnNpb25GbGFncygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCmluZGV4IGI3ZWUyMjVmNWYxOGQ2NmY1NjliZmFj
YTgxYWExNmVkZjgwOThhZDEuLmJhZDllZDNmZGRiZmJiODJiOGMxYjU1MTA0Y2FlNTc2NTU3YjIy
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKQEAgLTU1
LDEyICs1NSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBpbnQgaW52
YWxpZEN1ZUluZGV4ID0gLTE7CiAKLVBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiBUZXh0VHJhY2tD
dWU6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBkb3VibGUgc3RhcnQs
IGRvdWJsZSBlbmQsIGNvbnN0IFN0cmluZyYgY29udGVudCkKK1JlZjxUZXh0VHJhY2tDdWU+IFRl
eHRUcmFja0N1ZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGRvdWJs
ZSBzdGFydCwgZG91YmxlIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50KQogewogICAgIHJldHVy
biBjcmVhdGUoY29udGV4dCwgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHN0YXJ0KSwgTWVk
aWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGVuZCksIGNvbnRlbnQpOwogfQogCi1QYXNzUmVmUHRy
PFRleHRUcmFja0N1ZT4gVGV4dFRyYWNrQ3VlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQs
IGNvbnN0IFN0cmluZyYgY29udGVudCkKK1JlZjxUZXh0VHJhY2tDdWU+IFRleHRUcmFja0N1ZTo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IE1lZGlhVGltZSYg
c3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCiB7CiAg
ICAgcmV0dXJuIFZUVEN1ZTo6Y3JlYXRlKGNvbnRleHQsIHN0YXJ0LCBlbmQsIGNvbnRlbnQpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKaW5kZXggMmJmZDE2ZGIw
ZTA3MzMzNGRiOTc2NjM2ZGVlNmIyYjAxNzQ0ODAwOC4uNzY0MGJhNGY3MTFhNGRiMWY1MTkxY2Mw
YWI1NjI0MWY3MDk4YWIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tDdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1
ZS5oCkBAIC00Niw4ICs0Niw4IEBAIGNsYXNzIFRleHRUcmFjazsKIAogY2xhc3MgVGV4dFRyYWNr
Q3VlIDogcHVibGljIFJlZkNvdW50ZWQ8VGV4dFRyYWNrQ3VlPiwgcHVibGljIEV2ZW50VGFyZ2V0
V2l0aElubGluZURhdGEgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHRUcmFj
a0N1ZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBkb3VibGUgc3RhcnQsIGRvdWJs
ZSBlbmQsIGNvbnN0IFN0cmluZyYgY29udGVudCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4
dFRyYWNrQ3VlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IE1lZGlhVGlt
ZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpOwor
ICAgIHN0YXRpYyBSZWY8VGV4dFRyYWNrQ3VlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50KTsKKyAg
ICBzdGF0aWMgUmVmPFRleHRUcmFja0N1ZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgY29uc3QgU3Ry
aW5nJiBjb250ZW50KTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGN1ZVNoYWRv
d1BzZXVkb0lkKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1ZUVEN1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKaW5kZXgg
NmFhYTcwMjYyOWM0OGI2NmIzZWE4NmMzN2VjYTYwYjlkYzI1MWIyYi4uYzRiOTMyMjMzZGI4YWM0
ZTUyM2Y3YTFmN2ZlNGMyNGU4MGI2ZTc4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9WVFRDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3Vl
LmNwcApAQCAtMTE5LDEwICsxMTksMTAgQEAgc3RhdGljIGNvbnN0IFN0cmluZyYgdmVydGljYWxH
cm93aW5nUmlnaHRLZXl3b3JkKCkKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ci1QYXNzUmVmUHRyPFZUVEN1ZUJveD4gVlRUQ3VlQm94OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBWVFRDdWUmIGN1ZSkKK1JlZjxWVFRDdWVCb3g+IFZUVEN1ZUJveDo6Y3JlYXRlKERvY3Vt
ZW50JiBkb2N1bWVudCwgVlRUQ3VlJiBjdWUpCiB7Ci0gICAgVlRUQ3VlQm94KiBjdWVCb3ggPSBu
ZXcgVlRUQ3VlQm94KGRvY3VtZW50LCBjdWUpOwotICAgIGN1ZUJveC0+c2V0UHNldWRvKFZUVEN1
ZUJveDo6dnR0Q3VlQm94U2hhZG93UHNldWRvSWQoKSk7CisgICAgVlRUQ3VlQm94JiBjdWVCb3gg
PSAqbmV3IFZUVEN1ZUJveChkb2N1bWVudCwgY3VlKTsKKyAgICBjdWVCb3guc2V0UHNldWRvKFZU
VEN1ZUJveDo6dnR0Q3VlQm94U2hhZG93UHNldWRvSWQoKSk7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KGN1ZUJveCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRU
Q3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5oCmluZGV4IGRjZWRiMjZm
ZjJiNTczMzc1MzkxOGNhZmZlYzUwNWM5NmVlZTAxNjIuLjllZmZkOWEyYjY4ODNiZGVhN2UzYjhi
NWY3M2YxZTYxNjZhZjI5ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VlRUQ3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuaApAQCAtNTMs
NyArNTMsNyBAQCBjbGFzcyBXZWJWVFRDdWVEYXRhOwogCiBjbGFzcyBWVFRDdWVCb3ggOiBwdWJs
aWMgSFRNTEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFZUVEN1ZUJv
eD4gY3JlYXRlKERvY3VtZW50JiwgVlRUQ3VlJik7CisgICAgc3RhdGljIFJlZjxWVFRDdWVCb3g+
IGNyZWF0ZShEb2N1bWVudCYsIFZUVEN1ZSYpOwogCiAgICAgVlRUQ3VlKiBnZXRDdWUoKSBjb25z
dDsKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlDU1NQcm9wZXJ0aWVzKGNvbnN0IEludFNpemUmIHZp
ZGVvU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKaW5kZXggNTJjZTBhOTU2
NDRlZmJiYTgzODEwMDYxNThkNDNiNzNhZGQyZjk3NS4uODFlZmM0ZDkwMjg2OGMwOTc5YzBlZjJi
YWZhNDAwMTgzZGEwZTRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxl
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcApAQCAt
MzQ0LDE0ICszNDQsMTQgQEAgdm9pZCBET01TZWxlY3Rpb246OmV4dGVuZChOb2RlJiBub2RlLCBp
bnQgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS5z
ZXRFeHRlbnQoY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKCZub2RlLCBvZmZzZXQpLCBET1dO
U1RSRUFNKTsKIH0KIAotUGFzc1JlZlB0cjxSYW5nZT4gRE9NU2VsZWN0aW9uOjpnZXRSYW5nZUF0
KGludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCitSZWZQdHI8UmFuZ2U+IERPTVNlbGVjdGlv
bjo6Z2V0UmFuZ2VBdChpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICgh
bV9mcmFtZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSByYW5nZUNvdW50KCkpIHsKICAgICAgICAgZWMg
PSBJTkRFWF9TSVpFX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIAogICAgIC8vIElmIHlvdSdyZSBoaXR0aW5nIHRoaXMsIHlvdSd2ZSBhZGRl
ZCBicm9rZW4gbXVsdGktcmFuZ2Ugc2VsZWN0aW9uIHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNl
bGVjdGlvbi5oCmluZGV4IGFjMjhhZjU0NWQ4Y2I0ZTQ1ZmU0NTU5MTE3MmJhODkxOGEyYTQ1Nzku
LjEwOTUwNWIwNThmMDg3Mjg2MDkxY2MwY2VkYmNmZTE0YTVhZmUyNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01TZWxlY3Rpb24uaApAQCAtODAsNyArODAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZvaWQgY29sbGFwc2VUb0VuZChFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIHZvaWQg
Y29sbGFwc2VUb1N0YXJ0KEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgdm9pZCBleHRlbmQoTm9k
ZSYsIGludCBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgUGFzc1JlZlB0cjxSYW5n
ZT4gZ2V0UmFuZ2VBdChpbnQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgUmVmUHRyPFJhbmdl
PiBnZXRSYW5nZUF0KGludCwgRXhjZXB0aW9uQ29kZSYpOwogICAgICAgICB2b2lkIHJlbW92ZUFs
bFJhbmdlcygpOwogICAgICAgICB2b2lkIGFkZFJhbmdlKFJhbmdlKik7CiAgICAgICAgIHZvaWQg
ZGVsZXRlRnJvbURvY3VtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggYzli
Y2NmMGFmZTdiYWRlY2ZiZDQ1ODM3OTRkZmUxN2IyMThhNjAxZS4uMmI1OWEzMzI0YWY3M2NkNjU1
NmU5YzZjNzhkYmU5MThiZjBjMmNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAt
NDYzLDkgKzQ2Myw5IEBAIERPTVdpbmRvdyogRE9NV2luZG93Ojp0b0RPTVdpbmRvdygpCiAgICAg
cmV0dXJuIHRoaXM7CiB9CiAKLVBhc3NSZWZQdHI8TWVkaWFRdWVyeUxpc3Q+IERPTVdpbmRvdzo6
bWF0Y2hNZWRpYShjb25zdCBTdHJpbmcmIG1lZGlhKQorUmVmUHRyPE1lZGlhUXVlcnlMaXN0PiBE
T01XaW5kb3c6Om1hdGNoTWVkaWEoY29uc3QgU3RyaW5nJiBtZWRpYSkKIHsKLSAgICByZXR1cm4g
ZG9jdW1lbnQoKSA/IGRvY3VtZW50KCktPm1lZGlhUXVlcnlNYXRjaGVyKCkubWF0Y2hNZWRpYSht
ZWRpYSkgOiAwOworICAgIHJldHVybiBkb2N1bWVudCgpID8gZG9jdW1lbnQoKS0+bWVkaWFRdWVy
eU1hdGNoZXIoKS5tYXRjaE1lZGlhKG1lZGlhKSA6IG51bGxwdHI7CiB9CiAKIFBhZ2UqIERPTVdp
bmRvdzo6cGFnZSgpCkBAIC0xNDA1LDE2ICsxNDA1LDE2IEBAIERvY3VtZW50KiBET01XaW5kb3c6
OmRvY3VtZW50KCkgY29uc3QKICAgICByZXR1cm4gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQp
OwogfQogCi1QYXNzUmVmUHRyPFN0eWxlTWVkaWE+IERPTVdpbmRvdzo6c3R5bGVNZWRpYSgpIGNv
bnN0CitSZWZQdHI8U3R5bGVNZWRpYT4gRE9NV2luZG93OjpzdHlsZU1lZGlhKCkgY29uc3QKIHsK
ICAgICBpZiAoIWlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICBpZiAoIW1fbWVkaWEpCiAgICAgICAgIG1fbWVkaWEgPSBTdHlsZU1lZGlh
OjpjcmVhdGUobV9mcmFtZSk7Ci0gICAgcmV0dXJuIG1fbWVkaWEuZ2V0KCk7CisgICAgcmV0dXJu
IG1fbWVkaWE7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gRE9NV2luZG93
OjpnZXRDb21wdXRlZFN0eWxlKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgcHNldWRv
RWx0KSBjb25zdAorUmVmUHRyPENTU1N0eWxlRGVjbGFyYXRpb24+IERPTVdpbmRvdzo6Z2V0Q29t
cHV0ZWRTdHlsZShFbGVtZW50KiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIHBzZXVkb0VsdCkgY29u
c3QKIHsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTQy
MiwxNSArMTQyMiwxNSBAQCBQYXNzUmVmUHRyPENTU1N0eWxlRGVjbGFyYXRpb24+IERPTVdpbmRv
dzo6Z2V0Q29tcHV0ZWRTdHlsZShFbGVtZW50KiBlbGVtZW50LCBjbwogICAgIHJldHVybiBDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShlbGVtZW50LCBmYWxzZSwgcHNldWRvRWx0
KTsKIH0KIAotUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gRE9NV2luZG93OjpnZXRNYXRjaGVkQ1NT
UnVsZXMoRWxlbWVudCogZWxlbWVudCwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVtZW50LCBib29s
IGF1dGhvck9ubHkpIGNvbnN0CitSZWZQdHI8Q1NTUnVsZUxpc3Q+IERPTVdpbmRvdzo6Z2V0TWF0
Y2hlZENTU1J1bGVzKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgcHNldWRvRWxlbWVu
dCwgYm9vbCBhdXRob3JPbmx5KSBjb25zdAogewogICAgIGlmICghaXNDdXJyZW50bHlEaXNwbGF5
ZWRJbkZyYW1lKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIHVuc2lnbmVkIGNvbG9uU3RhcnQgPSBwc2V1ZG9FbGVtZW50WzBdID09ICc6JyA/IChw
c2V1ZG9FbGVtZW50WzFdID09ICc6JyA/IDIgOiAxKSA6IDA7CiAgICAgQ1NTU2VsZWN0b3I6OlBz
ZXVkb0VsZW1lbnRUeXBlIHBzZXVkb1R5cGUgPSBDU1NTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9FbGVt
ZW50VHlwZShwc2V1ZG9FbGVtZW50LnN1YnN0cmluZ1NoYXJpbmdJbXBsKGNvbG9uU3RhcnQpKTsK
ICAgICBpZiAocHNldWRvVHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudFVua25vd24g
JiYgIXBzZXVkb0VsZW1lbnQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICB1bnNpZ25lZCBydWxlc1RvSW5jbHVkZSA9IFN0eWxlUmVz
b2x2ZXI6OkF1dGhvckNTU1J1bGVzOwogICAgIGlmICghYXV0aG9yT25seSkKQEAgLTE0NDIsMjIg
KzE0NDIsMjIgQEAgUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gRE9NV2luZG93OjpnZXRNYXRjaGVk
Q1NTUnVsZXMoRWxlbWVudCogZWxlbWVudCwgY29uc3QgU3QKIAogICAgIGF1dG8gbWF0Y2hlZFJ1
bGVzID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZW5zdXJlU3R5bGVSZXNvbHZlcigpLnBzZXVkb1N0
eWxlUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQsIHBzZXVkb0lkLCBydWxlc1RvSW5jbHVkZSk7CiAg
ICAgaWYgKG1hdGNoZWRSdWxlcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlZlB0cjxTdGF0aWNDU1NSdWxlTGlzdD4gcnVsZUxp
c3QgPSBTdGF0aWNDU1NSdWxlTGlzdDo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRvJiBydWxlIDog
bWF0Y2hlZFJ1bGVzKQogICAgICAgICBydWxlTGlzdC0+cnVsZXMoKS5hcHBlbmQocnVsZS0+Y3Jl
YXRlQ1NTT01XcmFwcGVyKCkpOwogCi0gICAgcmV0dXJuIHJ1bGVMaXN0LnJlbGVhc2UoKTsKKyAg
ICByZXR1cm4gcnVsZUxpc3Q7CiB9CiAKLVBhc3NSZWZQdHI8V2ViS2l0UG9pbnQ+IERPTVdpbmRv
dzo6d2Via2l0Q29udmVydFBvaW50RnJvbU5vZGVUb1BhZ2UoTm9kZSogbm9kZSwgY29uc3QgV2Vi
S2l0UG9pbnQqIHApIGNvbnN0CitSZWZQdHI8V2ViS2l0UG9pbnQ+IERPTVdpbmRvdzo6d2Via2l0
Q29udmVydFBvaW50RnJvbU5vZGVUb1BhZ2UoTm9kZSogbm9kZSwgY29uc3QgV2ViS2l0UG9pbnQq
IHApIGNvbnN0CiB7CiAgICAgaWYgKCFub2RlIHx8ICFwKQotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIWRvY3VtZW50KCkpCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGRvY3VtZW50KCktPnVwZGF0
ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCkBAIC0xNDY2LDEzICsxNDY2LDEz
IEBAIFBhc3NSZWZQdHI8V2ViS2l0UG9pbnQ+IERPTVdpbmRvdzo6d2Via2l0Q29udmVydFBvaW50
RnJvbU5vZGVUb1BhZ2UoTm9kZSogbm9kZSwKICAgICByZXR1cm4gV2ViS2l0UG9pbnQ6OmNyZWF0
ZShwYWdlUG9pbnQueCgpLCBwYWdlUG9pbnQueSgpKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJLaXRQ
b2ludD4gRE9NV2luZG93Ojp3ZWJraXRDb252ZXJ0UG9pbnRGcm9tUGFnZVRvTm9kZShOb2RlKiBu
b2RlLCBjb25zdCBXZWJLaXRQb2ludCogcCkgY29uc3QKK1JlZlB0cjxXZWJLaXRQb2ludD4gRE9N
V2luZG93Ojp3ZWJraXRDb252ZXJ0UG9pbnRGcm9tUGFnZVRvTm9kZShOb2RlKiBub2RlLCBjb25z
dCBXZWJLaXRQb2ludCogcCkgY29uc3QKIHsKICAgICBpZiAoIW5vZGUgfHwgIXApCi0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghZG9jdW1lbnQo
KSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgZG9j
dW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKQEAgLTIx
NDAsNyArMjE0MCw3IEBAIFJlZlB0cjxGcmFtZT4gRE9NV2luZG93OjpjcmVhdGVXaW5kb3coY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEF0b21pY1N0cmluCiAgICAgcmV0dXJuIG5ld0Zy
YW1lOwogfQogCi1QYXNzUmVmUHRyPERPTVdpbmRvdz4gRE9NV2luZG93OjpvcGVuKGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nLCBjb25zdCBBdG9taWNTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgU3Ry
aW5nJiB3aW5kb3dGZWF0dXJlc1N0cmluZywKK1JlZlB0cjxET01XaW5kb3c+IERPTVdpbmRvdzo6
b3Blbihjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgQXRvbWljU3RyaW5nJiBmcmFtZU5h
bWUsIGNvbnN0IFN0cmluZyYgd2luZG93RmVhdHVyZXNTdHJpbmcsCiAgICAgRE9NV2luZG93JiBh
Y3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3cpCiB7CiAgICAgaWYgKCFpc0N1cnJl
bnRseURpc3BsYXllZEluRnJhbWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCmluZGV4IGZhYTJj
ZGRiMjE5Y2NkOGE3ZTRkNGRiZDNhZTU3NDZjMzQyOWFlODEuLmQ1M2UyYTM4MmQwNjI0N2UxYTk2
MzQ4ZjM1ZDhmNGE5OGMyZTdlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApAQCAtMTIzLDcg
KzEyMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzdXNwZW5kRm9yRG9j
dW1lbnRTdXNwZW5zaW9uKCk7CiAgICAgICAgIHZvaWQgcmVzdW1lRnJvbURvY3VtZW50U3VzcGVu
c2lvbigpOwogCi0gICAgICAgIFBhc3NSZWZQdHI8TWVkaWFRdWVyeUxpc3Q+IG1hdGNoTWVkaWEo
Y29uc3QgU3RyaW5nJik7CisgICAgICAgIFJlZlB0cjxNZWRpYVF1ZXJ5TGlzdD4gbWF0Y2hNZWRp
YShjb25zdCBTdHJpbmcmKTsKIAogICAgICAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBwZW5k
aW5nVW5sb2FkRXZlbnRMaXN0ZW5lcnMoKSBjb25zdDsKIApAQCAtMTY3LDcgKzE2Nyw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBwcmludCgpOwogICAgICAgICB2b2lkIHN0
b3AoKTsKIAotICAgICAgICBXRUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gb3Bl
bihjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgQXRvbWljU3RyaW5nJiBmcmFtZU5hbWUs
IGNvbnN0IFN0cmluZyYgd2luZG93RmVhdHVyZXNTdHJpbmcsCisgICAgICAgIFdFQkNPUkVfRVhQ
T1JUIFJlZlB0cjxET01XaW5kb3c+IG9wZW4oY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0
IEF0b21pY1N0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBTdHJpbmcmIHdpbmRvd0ZlYXR1cmVzU3Ry
aW5nLAogICAgICAgICAgICAgRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmly
c3RXaW5kb3cpOwogCiAgICAgICAgIHZvaWQgc2hvd01vZGFsRGlhbG9nKGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRpYWxvZ0ZlYXR1cmVzU3RyaW5nLCBET01XaW5kb3cm
IGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgc3RkOjpmdW5jdGlvbjx2b2lk
IChET01XaW5kb3cmKT4gcHJlcGFyZURpYWxvZ0Z1bmN0aW9uKTsKQEAgLTIyMywxOSArMjIzLDE5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICAvLyBDU1NPTSBWaWV3IE1vZHVsZQog
Ci0gICAgICAgIFBhc3NSZWZQdHI8U3R5bGVNZWRpYT4gc3R5bGVNZWRpYSgpIGNvbnN0OworICAg
ICAgICBSZWZQdHI8U3R5bGVNZWRpYT4gc3R5bGVNZWRpYSgpIGNvbnN0OwogCiAgICAgICAgIC8v
IERPTSBMZXZlbCAyIFN0eWxlIEludGVyZmFjZQogCi0gICAgICAgIFBhc3NSZWZQdHI8Q1NTU3R5
bGVEZWNsYXJhdGlvbj4gZ2V0Q29tcHV0ZWRTdHlsZShFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBw
c2V1ZG9FbHQpIGNvbnN0OworICAgICAgICBSZWZQdHI8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gZ2V0
Q29tcHV0ZWRTdHlsZShFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbHQpIGNvbnN0Owog
CiAgICAgICAgIC8vIFdlYktpdCBleHRlbnNpb25zCiAKLSAgICAgICAgUGFzc1JlZlB0cjxDU1NS
dWxlTGlzdD4gZ2V0TWF0Y2hlZENTU1J1bGVzKEVsZW1lbnQqLCBjb25zdCBTdHJpbmcmIHBzZXVk
b0VsdCwgYm9vbCBhdXRob3JPbmx5ID0gdHJ1ZSkgY29uc3Q7CisgICAgICAgIFJlZlB0cjxDU1NS
dWxlTGlzdD4gZ2V0TWF0Y2hlZENTU1J1bGVzKEVsZW1lbnQqLCBjb25zdCBTdHJpbmcmIHBzZXVk
b0VsdCwgYm9vbCBhdXRob3JPbmx5ID0gdHJ1ZSkgY29uc3Q7CiAgICAgICAgIGRvdWJsZSBkZXZp
Y2VQaXhlbFJhdGlvKCkgY29uc3Q7CiAKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJLaXRQb2ludD4g
d2Via2l0Q29udmVydFBvaW50RnJvbVBhZ2VUb05vZGUoTm9kZSosIGNvbnN0IFdlYktpdFBvaW50
KikgY29uc3Q7Ci0gICAgICAgIFBhc3NSZWZQdHI8V2ViS2l0UG9pbnQ+IHdlYmtpdENvbnZlcnRQ
b2ludEZyb21Ob2RlVG9QYWdlKE5vZGUqLCBjb25zdCBXZWJLaXRQb2ludCopIGNvbnN0OworICAg
ICAgICBSZWZQdHI8V2ViS2l0UG9pbnQ+IHdlYmtpdENvbnZlcnRQb2ludEZyb21QYWdlVG9Ob2Rl
KE5vZGUqLCBjb25zdCBXZWJLaXRQb2ludCopIGNvbnN0OworICAgICAgICBSZWZQdHI8V2ViS2l0
UG9pbnQ+IHdlYmtpdENvbnZlcnRQb2ludEZyb21Ob2RlVG9QYWdlKE5vZGUqLCBjb25zdCBXZWJL
aXRQb2ludCopIGNvbnN0OwogCiAgICAgICAgIFBhZ2VDb25zb2xlQ2xpZW50KiBjb25zb2xlKCkg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKaW5kZXggZmVhNTRlNGFmOWU3ZTM2ZTIz
ZjYzYTU3ZWYyMTI2MTcxMjZmNWUyMC4uZjI3NzQwMjJhNDIzODdhYTQ4NTliOWM3OTIwMmFhYWZi
NDQ3ZTljYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKQEAgLTEyNCwxNCArMTI0LDE0IEBA
IFN0cmluZyBMb2NhdGlvbjo6b3JpZ2luKCkgY29uc3QKICAgICByZXR1cm4gU2VjdXJpdHlPcmln
aW46OmNyZWF0ZSh1cmwoKSktPnRvU3RyaW5nKCk7CiB9CiAKLVBhc3NSZWZQdHI8RE9NU3RyaW5n
TGlzdD4gTG9jYXRpb246OmFuY2VzdG9yT3JpZ2lucygpIGNvbnN0CitSZWY8RE9NU3RyaW5nTGlz
dD4gTG9jYXRpb246OmFuY2VzdG9yT3JpZ2lucygpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPERPTVN0
cmluZ0xpc3Q+IG9yaWdpbnMgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKKyAgICBhdXRvIG9y
aWdpbnMgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKICAgICBpZiAoIW1fZnJhbWUpCi0gICAg
ICAgIHJldHVybiBvcmlnaW5zLnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIG9yaWdpbnM7CiAg
ICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX2ZyYW1lLT50cmVlKCkucGFyZW50KCk7IGZyYW1lOyBm
cmFtZSA9IGZyYW1lLT50cmVlKCkucGFyZW50KCkpCiAgICAgICAgIG9yaWdpbnMtPmFwcGVuZChm
cmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSk7Ci0gICAgcmV0
dXJuIG9yaWdpbnMucmVsZWFzZSgpOworICAgIHJldHVybiBvcmlnaW5zOwogfQogCiBTdHJpbmcg
TG9jYXRpb246Omhhc2goKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9M
b2NhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5oCmluZGV4IDIwNGFlYmVl
ZTNlZjIyMzdiMmQxMWY2Y2VjODhjYzg4OTdlNmQyNmQuLmM2ZTU5YTY5MzUxMWJjN2U5MDcyODZh
MDI0MzYwMjc0OWQ4ZTA2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmgKQEAgLTczLDcgKzczLDcg
QEAgcHVibGljOgogCiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gaHJlZigp
OyB9CiAKLSAgICBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGFuY2VzdG9yT3JpZ2lucygpIGNv
bnN0OworICAgIFJlZjxET01TdHJpbmdMaXN0PiBhbmNlc3Rvck9yaWdpbnMoKSBjb25zdDsKIAog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBMb2NhdGlvbihGcmFtZSopOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278748</attachid>
            <date>2016-05-12 12:17:37 -0700</date>
            <delta_ts>2016-05-12 14:12:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157627-20160512121827.patch</filename>
            <type>text/plain</type>
            <size>45440</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwNzc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzVmNTRkOTY5ZjhhZjAx
OTlhMTlhMDNjNGEwZDEyNzM4YTQ4NTgxMS4uZGU0YjVjMzljZWNjM2M4ZDcxOWE5OGI1NmZlM2Vj
NGQ0N2Y0MDU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg3IEBACiAyMDE2LTA1LTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgRHJvcCB0b0pTKCkgb3Zlcmxv
YWQgdGFraW5nIGEgUGFzc1JlZlB0cjw+IHBhcmFtZXRlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NjI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIG91ciBpbXBsZW1lbnRhdGlvbiBzdG9w
IHN0b3AgcmV0dXJuaW5nIFBhc3NSZWZQdHJzIHRvIHRoZQorICAgICAgICBKUyBiaW5kaW5ncyBh
bmQgZHJvcCB0aGUgdG9KUygpIG92ZXJsb2FkIHRha2luZyBhIFBhc3NSZWZQdHI8PgorICAgICAg
ICBwYXJhbWV0ZXIKKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6YnVmZmVyZWQpOgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZl
cjo6Z2V0Q2hhbm5lbERhdGEpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZm
ZXIuaDoKKyAgICAgICAgKiBhbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudFRpbWVsaW5lOjpjcmVhdGUpOgorICAgICAgICAqIGFuaW1hdGlv
bi9Eb2N1bWVudFRpbWVsaW5lLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5n
Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OnRvSlNOZXdseUNyZWF0ZWQpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVW
YWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0UkdCQ29s
b3JWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmVycm9yKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0xhYmVsYWJsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGFiZWxh
YmxlRWxlbWVudDo6bGFiZWxzKToKKyAgICAgICAgKiBodG1sL0xhYmVsYWJsZUVsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xHZXRJbmZvOjpnZXRXZWJHTEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TEdldEluZm86OmdldFdlYkdMRmxvYXRBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEdl
dEluZm86OmdldFdlYkdMRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJ
bmZvOjpnZXRXZWJHTEludEFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMR2V0SW5mbzo6
Z2V0V2ViR0xQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMR2V0SW5mbzo6Z2V0V2Vi
R0xSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpnZXRXZWJH
TFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpnZXRXZWJHTFVuc2ln
bmVkQnl0ZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMR2V0SW5mbzo6Z2V0V2ViR0xV
bnNpZ25lZEludEFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMR2V0SW5mbzo6Z2V0V2Vi
R0xWZXJ0ZXhBcnJheU9iamVjdE9FUyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEdldEluZm86
OmdldFdlYkdMVmVydGV4QXJyYXlPYmplY3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
R2V0SW5mby5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZVRleHR1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlUHJvZ3JhbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGVSZW5kZXJi
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3Jl
YXRlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmdldEFjdGl2ZUF0dHJpYik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpnZXRBY3RpdmVVbmlmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmdldFNoYWRlclByZWNpc2lvbkZvcm1hdCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtTG9jYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJhd0ltYWdlSW50b0J1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2aWRl
b0ZyYW1lVG9JbWFnZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL3RyYWNr
L1RleHRUcmFja0N1ZS5oOgorICAgICAgICAqIGh0bWwvdHJhY2svVlRUQ3VlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlZUVEN1ZUJveDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZU
VEN1ZS5oOgorICAgICAgICAqIHBhZ2UvRE9NU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVNlbGVjdGlvbjo6Z2V0UmFuZ2VBdCk6CisgICAgICAgICogcGFnZS9ET01TZWxlY3Rp
b24uaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
T01XaW5kb3c6Om1hdGNoTWVkaWEpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpzdHls
ZU1lZGlhKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6Z2V0Q29tcHV0ZWRTdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmdldE1hdGNoZWRDU1NSdWxlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6OndlYmtpdENvbnZlcnRQb2ludEZyb21Ob2RlVG9QYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6d2Via2l0Q29udmVydFBvaW50RnJvbVBh
Z2VUb05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpvcGVuKToKKyAgICAgICAg
KiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBhZ2UvTG9jYXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TG9jYXRpb246OmFuY2VzdG9yT3JpZ2lucyk6CisgICAgICAgICogcGFnZS9M
b2NhdGlvbi5oOgorCisyMDE2LTA1LTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKICAgICAgICAgQXZvaWQgdW5uZWNlc3NhcnkgbnVsbCBjaGVja3MgaW4gdG9KUygpIHdoZW4g
dGhlIGltcGxlbWVudGF0aW9uIHJldHVybnMgYSByZWZlcmVuY2Ugb3IgUmVmPD4KICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzYwNAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5k
ZXggOTYyMmY3OGJkYTMxMTgzNjYyMDY2MzIyMWU2MmIyMTljNzA5MzMxMy4uNzBkMDFlNDFlNjU2
ZWMwMTM0NmI5NGE2ODViOGI3NWE5ZDkzZjAzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBA
IFNvdXJjZUJ1ZmZlcjo6flNvdXJjZUJ1ZmZlcigpCiAgICAgbV9wcml2YXRlLT5zZXRDbGllbnQo
bnVsbHB0cik7CiB9CiAKLVBhc3NSZWZQdHI8VGltZVJhbmdlcz4gU291cmNlQnVmZmVyOjpidWZm
ZXJlZChFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKK1JlZlB0cjxUaW1lUmFuZ2VzPiBTb3VyY2VC
dWZmZXI6OmJ1ZmZlcmVkKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAgIC8vIFNlY3Rp
b24gMy4xIGJ1ZmZlcmVkIGF0dHJpYnV0ZSBzdGVwcy4KICAgICAvLyBodHRwczovL2R2Y3MudzMu
b3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvZGVmYXVsdC9tZWRpYS1zb3VyY2UvbWVkaWEtc291
cmNlLmh0bWwjYXR0cmlidXRlcy0xCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAppbmRleCBjYjBkYzhmN2FiMmU5ZTJkYmEwODc0NTAwNzI5
ODgyMDM5MGJjMDIzLi44MTAzNDhhODk3MDRhYTUzNTkwZGU5ZmJlZTE1YzFlZDJjMzlmODU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVy
LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogCiAgICAgLy8gU291cmNlQnVmZmVyLmlkbCBt
ZXRob2RzCiAgICAgYm9vbCB1cGRhdGluZygpIGNvbnN0IHsgcmV0dXJuIG1fdXBkYXRpbmc7IH0K
LSAgICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVkKEV4Y2VwdGlvbkNvZGUmKSBjb25z
dDsKKyAgICBSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoRXhjZXB0aW9uQ29kZSYpIGNvbnN0
OwogICAgIGNvbnN0IFJlZlB0cjxUaW1lUmFuZ2VzPiYgYnVmZmVyZWQoKSBjb25zdDsKICAgICBk
b3VibGUgdGltZXN0YW1wT2Zmc2V0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRUaW1lc3RhbXBPZmZz
ZXQoZG91YmxlLCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNSZXBvcnQuY3BwCmluZGV4IGFjMWRkNzg2YzA3MDM4
NjE1MmVmOWVkNmIyMzc3YjdkMTk3ZjgwN2UuLmZlNjgxZDY5ZTZkODJhNjFkODViMmQyOTViMDc0
ZTYyMGM1YTlmZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDU3RhdHNSZXBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDU3RhdHNSZXBvcnQuY3BwCkBAIC01MywxNCArNTMsMTQgQEAgVmVjdG9yPFN0cmlu
Zz4gUlRDU3RhdHNSZXBvcnQ6Om5hbWVzKCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1jb25zdCBQYXNzUmVmUHRyPFJUQ1N0YXRzUmVwb3J0PiBSVENTdGF0c1JlcG9ydDo6bG9jYWwo
KQorUlRDU3RhdHNSZXBvcnQmIFJUQ1N0YXRzUmVwb3J0Ojpsb2NhbCgpCiB7Ci0gICAgcmV0dXJu
IHRoaXM7CisgICAgcmV0dXJuICp0aGlzOwogfQogCi1jb25zdCBQYXNzUmVmUHRyPFJUQ1N0YXRz
UmVwb3J0PiBSVENTdGF0c1JlcG9ydDo6cmVtb3RlKCkKK1JUQ1N0YXRzUmVwb3J0JiBSVENTdGF0
c1JlcG9ydDo6cmVtb3RlKCkKIHsKLSAgICByZXR1cm4gdGhpczsKKyAgICByZXR1cm4gKnRoaXM7
CiB9CiAKIHZvaWQgUlRDU3RhdHNSZXBvcnQ6OmFkZFN0YXRpc3RpYyhjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVwb3J0LmgKaW5kZXggZjkzYTNkZDEyMDhjY2VhMmM3MTBh
MTgxOGQ5ZjZhM2JjYzUzZDRjNC4uNjg2YWZmOWJkNGE5YjgyNzllNzQ1ZTIyNjkxMjhlNGJmMmIw
MDI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENT
dGF0c1JlcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
U3RhdHNSZXBvcnQuaApAQCAtNDUsOSArNDUsOSBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFN0cmlu
Zz4gbmFtZXMoKSBjb25zdDsKIAogICAgIC8vIERFUFJFQ0FURUQKLSAgICBjb25zdCBQYXNzUmVm
UHRyPFJUQ1N0YXRzUmVwb3J0PiBsb2NhbCgpOworICAgIFJUQ1N0YXRzUmVwb3J0JiBsb2NhbCgp
OwogICAgIC8vIERFUFJFQ0FURUQKLSAgICBjb25zdCBQYXNzUmVmUHRyPFJUQ1N0YXRzUmVwb3J0
PiByZW1vdGUoKTsKKyAgICBSVENTdGF0c1JlcG9ydCYgcmVtb3RlKCk7CiAKICAgICB2b2lkIGFk
ZFN0YXRpc3RpYyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCmluZGV4
IDhjYjhhNzFkOTg4Y2E2ZGIwZTRlY2I0ZTFjOWU5ZTQ2ZTYwN2I3MDEuLjIwZjdjZWFmZjY5OGU2
NjM1ODg0M2EyOWQ5ZWNjMTMxZThlZjI0MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgQXVkaW9C
dWZmZXI6OnJlbGVhc2VNZW1vcnkoKQogICAgIG1fY2hhbm5lbHMuY2xlYXIoKTsKIH0KIAotUGFz
c1JlZlB0cjxGbG9hdDMyQXJyYXk+IEF1ZGlvQnVmZmVyOjpnZXRDaGFubmVsRGF0YSh1bnNpZ25l
ZCBjaGFubmVsSW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPEZsb2F0MzJBcnJheT4g
QXVkaW9CdWZmZXI6OmdldENoYW5uZWxEYXRhKHVuc2lnbmVkIGNoYW5uZWxJbmRleCwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKGNoYW5uZWxJbmRleCA+PSBtX2NoYW5uZWxzLnNpemUo
KSkgewogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmgKaW5kZXggZTczYmNlYWRlMzRjMjRmOTNmNmE0M2UxZjFh
Yzk0ZDBmMmRmZTczOC4uNTI5NmYyYWQzNGIwOGFhMjBiMjZmNzZkZjM5N2M0ZWU4YTgyMDNlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaApAQCAt
NTUsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDaGFubmVsIGRhdGEgYWNjZXNzCiAgICAg
dW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscygpIGNvbnN0IHsgcmV0dXJuIG1fY2hhbm5lbHMuc2l6
ZSgpOyB9Ci0gICAgUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IGdldENoYW5uZWxEYXRhKHVuc2ln
bmVkIGNoYW5uZWxJbmRleCwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxGbG9hdDMyQXJy
YXk+IGdldENoYW5uZWxEYXRhKHVuc2lnbmVkIGNoYW5uZWxJbmRleCwgRXhjZXB0aW9uQ29kZSYp
OwogICAgIEZsb2F0MzJBcnJheSogZ2V0Q2hhbm5lbERhdGEodW5zaWduZWQgY2hhbm5lbEluZGV4
KTsKICAgICB2b2lkIHplcm8oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3Vt
ZW50VGltZWxpbmUuY3BwCmluZGV4IDdiYjMwMmMwNmYwM2IyZmY3ZmEwZDlkYjY2MmJhMWFmODZh
MTA5NWUuLmQzYWVkYTkwZTc4MGZhNTZmZDZmN2MzZmQ0MGE4NDhiODljNDE5ZWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAKQEAgLTMzLDkgKzMz
LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPERvY3VtZW50VGltZWxp
bmU+IERvY3VtZW50VGltZWxpbmU6OmNyZWF0ZShkb3VibGUgb3JpZ2luVGltZSkKK1JlZjxEb2N1
bWVudFRpbWVsaW5lPiBEb2N1bWVudFRpbWVsaW5lOjpjcmVhdGUoZG91YmxlIG9yaWdpblRpbWUp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEb2N1bWVudFRpbWVsaW5lKG9yaWdpblRpbWUp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEb2N1bWVudFRpbWVsaW5lKG9yaWdpblRpbWUp
KTsKIH0KIAogRG9jdW1lbnRUaW1lbGluZTo6RG9jdW1lbnRUaW1lbGluZShkb3VibGUgb3JpZ2lu
VGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVs
aW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5oCmluZGV4
IDlmOGNiYjNlZTYzYWZhYzljNjk0YTc0NjlhNDRjMmJlNWZiMjczOGUuLjkxZGQ0YmM3OTAxNWQw
NGI1ODEwODY3ZDUzOTdjMGY2OGViNGQyN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0RvY3VtZW50VGltZWxpbmUuaApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIERvY3VtZW50VGltZWxpbmUgZmluYWwgOiBwdWJsaWMgQW5pbWF0aW9uVGltZWxp
bmUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50VGltZWxpbmU+IGNy
ZWF0ZShkb3VibGUpOworICAgIHN0YXRpYyBSZWY8RG9jdW1lbnRUaW1lbGluZT4gY3JlYXRlKGRv
dWJsZSk7CiAgICAgfkRvY3VtZW50VGltZWxpbmUoKTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCA5NjgxNzNlNjRlZmI3MTFlOWU5
MWQwMWFiMGNjZThjZDdiMDY3MDYzLi5iODhmMDYwODg1NmZkMGY1NzMzZTNjYWE4ZDVjMzVlYjEz
MzE1ZDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAt
MjUyLDEwICsyNTIsOCBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9N
R2xvYmFsT2JqZWN0KiwgSlNDOjpBcnJheUJ1ZmZlciopOwogSlNDOjpKU1ZhbHVlIHRvSlMoSlND
OjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIEpTQzo6QXJyYXlCdWZmZXJWaWV3Kik7
CiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkFycmF5QnVmZmVyVmlldyopOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gSlNDOjpKU1Zh
bHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIGNvbnN0IFJlZlB0
cjxUPiYpOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVj
U3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIGNvbnN0IFBhc3NSZWZQdHI8VD4mKTsKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01H
bG9iYWxPYmplY3QqLCBjb25zdCBSZWY8VD4mKTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IEpTQzo6
SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmpl
Y3QqLCBjb25zdCBSZWZQdHI8VD4mKTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IEpTQzo6SlNWYWx1
ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBj
b25zdCBQYXNzUmVmUHRyPFQ+Jik7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBKU0M6OkpTVmFsdWUg
dG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgY29u
c3QgUmVmPFQ+Jik7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6
OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgY29uc3QgVmVjdG9yPFQ+Jik7CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9N
R2xvYmFsT2JqZWN0KiwgY29uc3QgVmVjdG9yPFJlZlB0cjxUPj4mKTsKQEAgLTU0OSwxMSArNTQ3
LDYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE8KICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9i
YWxPYmplY3QsIHB0ci5nZXQoKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBK
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgUGFzc1JlZlB0cjxUPiYgcHRyKQotewotICAgIHJldHVybiB0
b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHRyLmdldCgpKTsKLX0KLQogdGVtcGxhdGU8dHlwZW5h
bWUgVD4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBSZWY8VD4mIHB0cikKIHsKICAgICBy
ZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGNvbnN0X2Nhc3Q8VCY+KHB0ci5nZXQoKSkp
OwpAQCAtNTY0LDExICs1NTcsNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgSlNDOjpK
U1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsCiAgICAgcmV0dXJu
IHRvSlNOZXdseUNyZWF0ZWQoZXhlYywgZ2xvYmFsT2JqZWN0LCBwdHIuZ2V0KCkpOwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQo
SlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bnN0IFBhc3NSZWZQdHI8VD4mIHB0cikKLXsKLSAgICByZXR1cm4gdG9KU05ld2x5Q3JlYXRlZChl
eGVjLCBnbG9iYWxPYmplY3QsIHB0ci5nZXQoKSk7Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSogZXhl
YywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUmVmPFQ+JiBwdHIpCiB7
CiAgICAgcmV0dXJuIHRvSlNOZXdseUNyZWF0ZWQoZXhlYywgZ2xvYmFsT2JqZWN0LCBjb25zdF9j
YXN0PFQmPihwdHIuZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
Y3BwCmluZGV4IDk1YjNhOGIzOWNkY2Q4Njc4ODQzNWVhZDJlOGMyMjdjOWFhMjU4ZWIuLjNhNjRm
NjgzNThiNmJiZjZiYzM4OTUwOTc2NTQ3YWZiYTRiOTE2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApAQCAtOTQwLDEyICs5NDAsMTEgQEAgTGVuZ3RoUmVwZWF0
KiBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0TGVuZ3RoUmVwZWF0VmFsdWUoRXhjZXB0aW9uQ29kZSYg
ZWMpIGNvbnN0CiB9CiAjZW5kaWYKIAotUGFzc1JlZlB0cjxSR0JDb2xvcj4gQ1NTUHJpbWl0aXZl
VmFsdWU6OmdldFJHQkNvbG9yVmFsdWUoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CitSZWZQdHI8
UkdCQ29sb3I+IENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRSR0JDb2xvclZhbHVlKEV4Y2VwdGlvbkNv
ZGUmIGVjKSBjb25zdAogewotICAgIGVjID0gMDsKICAgICBpZiAobV9wcmltaXRpdmVVbml0VHlw
ZSAhPSBDU1NfUkdCQ09MT1IpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7Ci0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICAv
LyBGSU1YRTogVGhpcyBzaG91bGQgbm90IHJldHVybiBhIG5ldyBvYmplY3QgZm9yIGVhY2ggaW52
b2NhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1
ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKaW5kZXggMjMzNzU4
MTVjNjY4MDk4MTNkZDUyZGY3Y2IxNGI5NTNkOGIyZGY5MC4uZWFiNWE2MTg2YzkwZWMxNzk3YTZj
M2MzNWQyNjgzOGMzOGYxNTQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
LmgKQEAgLTM0Nyw3ICszNDcsNyBAQCBwdWJsaWM6CiAgICAgTGVuZ3RoUmVwZWF0KiBnZXRMZW5n
dGhSZXBlYXRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgIT0gQ1NT
X0xFTkdUSF9SRVBFQVQgPyAwIDogbV92YWx1ZS5sZW5ndGhSZXBlYXQ7IH0KICNlbmRpZgogCi0g
ICAgUGFzc1JlZlB0cjxSR0JDb2xvcj4gZ2V0UkdCQ29sb3JWYWx1ZShFeGNlcHRpb25Db2RlJikg
Y29uc3Q7CisgICAgUmVmUHRyPFJHQkNvbG9yPiBnZXRSR0JDb2xvclZhbHVlKEV4Y2VwdGlvbkNv
ZGUmKSBjb25zdDsKICAgICBSR0JBMzIgZ2V0UkdCQTMyVmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X3ByaW1pdGl2ZVVuaXRUeXBlICE9IENTU19SR0JDT0xPUiA/IDAgOiBtX3ZhbHVlLnJnYmNvbG9y
OyB9CiAKICAgICBQYWlyKiBnZXRQYWlyVmFsdWUoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNTFhNjg5ZjQ5YzZjNzQ0
ODgzNGI0YjYyMWJjZmRiZDFmMWVlOGFmYi4uZDUxMTkwNTMzNmRjODkyMDgwNzcyYmU5MzVkYjQx
NjQwZWI1MzI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBA
IC05NjcsOSArOTY3LDkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwZW5kaW5nQWN0aW9uVGlt
ZXJGaXJlZCgpCiAgICAgICAgIG1lZGlhRW5naW5lV2FzVXBkYXRlZCgpOwogfQogCi1QYXNzUmVm
UHRyPE1lZGlhRXJyb3I+IEhUTUxNZWRpYUVsZW1lbnQ6OmVycm9yKCkgY29uc3QgCitNZWRpYUVy
cm9yKiBIVE1MTWVkaWFFbGVtZW50OjplcnJvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZXJy
b3I7CisgICAgcmV0dXJuIG1fZXJyb3IuZ2V0KCk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6c2V0U3JjKGNvbnN0IFN0cmluZyYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaAppbmRleCBkOGJjMTU1ZDE3MmYwM2Q2YTgzMmQ0NjIwODg4Zjc0NzFhY2E4Y2JmLi5i
NDMxYjBjNzI3NTQxZGEwMGQwMjE5MDk0N2RmNmYxZGRkMWQ0N2MxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMTU3LDcgKzE1Nyw3IEBAIHB1YmxpYzoKIAogLy8g
RE9NIEFQSQogLy8gZXJyb3Igc3RhdGUKLSAgICBQYXNzUmVmUHRyPE1lZGlhRXJyb3I+IGVycm9y
KCkgY29uc3Q7CisgICAgTWVkaWFFcnJvciogZXJyb3IoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0
U3JjKGNvbnN0IFN0cmluZyYpOwogICAgIGNvbnN0IFVSTCYgY3VycmVudFNyYygpIGNvbnN0IHsg
cmV0dXJuIG1fY3VycmVudFNyYzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9M
YWJlbGFibGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxhYmxlRWxlbWVu
dC5jcHAKaW5kZXggNmFiYjViMmJhZWQzZjBhYjgxMzBkNmVmNTFmNDQ3NGQyMDAwMTI0NC4uN2Yz
ZjcwZTZhOTAwNWM3YTZlMDczYjJlNzhkMDQ5MWFjYzFkN2ExOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9MYWJlbGFibGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0xhYmVsYWJsZUVsZW1lbnQuY3BwCkBAIC00MCwxMCArNDAsMTAgQEAgTGFiZWxhYmxlRWxl
bWVudDo6fkxhYmVsYWJsZUVsZW1lbnQoKQogewogfQogCi1QYXNzUmVmUHRyPE5vZGVMaXN0PiBM
YWJlbGFibGVFbGVtZW50OjpsYWJlbHMoKQorUmVmUHRyPE5vZGVMaXN0PiBMYWJlbGFibGVFbGVt
ZW50OjpsYWJlbHMoKQogewogICAgIGlmICghc3VwcG9ydExhYmVscygpKQotICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gZW5zdXJlUmFyZURh
dGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZVdpdGhBdG9taWNOYW1lPExhYmVsc05vZGVM
aXN0PigqdGhpcywgc3RhckF0b20pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9MYWJlbGFibGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsYWJsZUVsZW1l
bnQuaAppbmRleCAyY2ZiYjE2ODRlY2VmYjExZDA3NzZjZmI5YjJmN2I3NTEwMzRjNTMyLi5iMWE5
ZGViOTlmZGQ3ODAyM2IyZjZmNTE2OGY1ZDQ2YzBjZDU5NjBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0xhYmVsYWJsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0xhYmVsYWJsZUVsZW1lbnQuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBMYWJlbGFibGVFbGVt
ZW50IDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5MYWJlbGFi
bGVFbGVtZW50KCk7CiAKLSAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBsYWJlbHMoKTsKKyAgICBS
ZWZQdHI8Tm9kZUxpc3Q+IGxhYmVscygpOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0TGFiZWxz
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5jcHAKaW5kZXggNDU1OGI4YWY5OTkxNmRkMDRjNTNj
MmI0ZDNkNTcyNGJhZDNhNzQ5OC4uNGVhZDFjZmQ2Mzc0MmIwMGQ1MjQyZGU3MTk1NzIzYWIzZWYz
ZDFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZv
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwCkBA
IC0yOTgsNzEgKzI5OCw3MSBAQCBsb25nIGxvbmcgV2ViR0xHZXRJbmZvOjpnZXRJbnQ2NCgpIGNv
bnN0CiAgICAgcmV0dXJuIG1faW50NjQ7CiB9CiAKLVBhc3NSZWZQdHI8V2ViR0xCdWZmZXI+IFdl
YkdMR2V0SW5mbzo6Z2V0V2ViR0xCdWZmZXIoKSBjb25zdAorV2ViR0xCdWZmZXIqIFdlYkdMR2V0
SW5mbzo6Z2V0V2ViR0xCdWZmZXIoKSBjb25zdAogewogICAgIEFTU0VSVChnZXRUeXBlKCkgPT0g
a1R5cGVXZWJHTEJ1ZmZlcik7Ci0gICAgcmV0dXJuIG1fd2ViZ2xCdWZmZXI7CisgICAgcmV0dXJu
IG1fd2ViZ2xCdWZmZXIuZ2V0KCk7CiB9CiAKLVBhc3NSZWZQdHI8RmxvYXQzMkFycmF5PiBXZWJH
TEdldEluZm86OmdldFdlYkdMRmxvYXRBcnJheSgpIGNvbnN0CitGbG9hdDMyQXJyYXkqIFdlYkdM
R2V0SW5mbzo6Z2V0V2ViR0xGbG9hdEFycmF5KCkgY29uc3QKIHsKICAgICBBU1NFUlQoZ2V0VHlw
ZSgpID09IGtUeXBlV2ViR0xGbG9hdEFycmF5KTsKLSAgICByZXR1cm4gbV93ZWJnbEZsb2F0QXJy
YXk7CisgICAgcmV0dXJuIG1fd2ViZ2xGbG9hdEFycmF5LmdldCgpOwogfQogCi1QYXNzUmVmUHRy
PFdlYkdMRnJhbWVidWZmZXI+IFdlYkdMR2V0SW5mbzo6Z2V0V2ViR0xGcmFtZWJ1ZmZlcigpIGNv
bnN0CitXZWJHTEZyYW1lYnVmZmVyKiBXZWJHTEdldEluZm86OmdldFdlYkdMRnJhbWVidWZmZXIo
KSBjb25zdAogewogICAgIEFTU0VSVChnZXRUeXBlKCkgPT0ga1R5cGVXZWJHTEZyYW1lYnVmZmVy
KTsKLSAgICByZXR1cm4gbV93ZWJnbEZyYW1lYnVmZmVyOworICAgIHJldHVybiBtX3dlYmdsRnJh
bWVidWZmZXIuZ2V0KCk7CiB9CiAKLVBhc3NSZWZQdHI8SW50MzJBcnJheT4gV2ViR0xHZXRJbmZv
OjpnZXRXZWJHTEludEFycmF5KCkgY29uc3QKK0ludDMyQXJyYXkqIFdlYkdMR2V0SW5mbzo6Z2V0
V2ViR0xJbnRBcnJheSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGdldFR5cGUoKSA9PSBrVHlwZVdl
YkdMSW50QXJyYXkpOwotICAgIHJldHVybiBtX3dlYmdsSW50QXJyYXk7CisgICAgcmV0dXJuIG1f
d2ViZ2xJbnRBcnJheS5nZXQoKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJHTFByb2dyYW0+IFdlYkdM
R2V0SW5mbzo6Z2V0V2ViR0xQcm9ncmFtKCkgY29uc3QKK1dlYkdMUHJvZ3JhbSogV2ViR0xHZXRJ
bmZvOjpnZXRXZWJHTFByb2dyYW0oKSBjb25zdAogewogICAgIEFTU0VSVChnZXRUeXBlKCkgPT0g
a1R5cGVXZWJHTFByb2dyYW0pOwotICAgIHJldHVybiBtX3dlYmdsUHJvZ3JhbTsKKyAgICByZXR1
cm4gbV93ZWJnbFByb2dyYW0uZ2V0KCk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZm
ZXI+IFdlYkdMR2V0SW5mbzo6Z2V0V2ViR0xSZW5kZXJidWZmZXIoKSBjb25zdAorV2ViR0xSZW5k
ZXJidWZmZXIqIFdlYkdMR2V0SW5mbzo6Z2V0V2ViR0xSZW5kZXJidWZmZXIoKSBjb25zdAogewog
ICAgIEFTU0VSVChnZXRUeXBlKCkgPT0ga1R5cGVXZWJHTFJlbmRlcmJ1ZmZlcik7Ci0gICAgcmV0
dXJuIG1fd2ViZ2xSZW5kZXJidWZmZXI7CisgICAgcmV0dXJuIG1fd2ViZ2xSZW5kZXJidWZmZXIu
Z2V0KCk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViR0xUZXh0dXJlPiBXZWJHTEdldEluZm86OmdldFdl
YkdMVGV4dHVyZSgpIGNvbnN0CitXZWJHTFRleHR1cmUqIFdlYkdMR2V0SW5mbzo6Z2V0V2ViR0xU
ZXh0dXJlKCkgY29uc3QKIHsKICAgICBBU1NFUlQoZ2V0VHlwZSgpID09IGtUeXBlV2ViR0xUZXh0
dXJlKTsKLSAgICByZXR1cm4gbV93ZWJnbFRleHR1cmU7CisgICAgcmV0dXJuIG1fd2ViZ2xUZXh0
dXJlLmdldCgpOwogfQogCi1QYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IFdlYkdMR2V0SW5mbzo6Z2V0
V2ViR0xVbnNpZ25lZEJ5dGVBcnJheSgpIGNvbnN0CitVaW50OEFycmF5KiBXZWJHTEdldEluZm86
OmdldFdlYkdMVW5zaWduZWRCeXRlQXJyYXkoKSBjb25zdAogewogICAgIEFTU0VSVChnZXRUeXBl
KCkgPT0ga1R5cGVXZWJHTFVuc2lnbmVkQnl0ZUFycmF5KTsKLSAgICByZXR1cm4gbV93ZWJnbFVu
c2lnbmVkQnl0ZUFycmF5OworICAgIHJldHVybiBtX3dlYmdsVW5zaWduZWRCeXRlQXJyYXkuZ2V0
KCk7CiB9CiAKLVBhc3NSZWZQdHI8VWludDMyQXJyYXk+IFdlYkdMR2V0SW5mbzo6Z2V0V2ViR0xV
bnNpZ25lZEludEFycmF5KCkgY29uc3QKK1VpbnQzMkFycmF5KiBXZWJHTEdldEluZm86OmdldFdl
YkdMVW5zaWduZWRJbnRBcnJheSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGdldFR5cGUoKSA9PSBr
VHlwZVdlYkdMVW5zaWduZWRJbnRBcnJheSk7Ci0gICAgcmV0dXJuIG1fd2ViZ2xVbnNpZ25lZElu
dEFycmF5OworICAgIHJldHVybiBtX3dlYmdsVW5zaWduZWRJbnRBcnJheS5nZXQoKTsKIH0KIAot
UGFzc1JlZlB0cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPiBXZWJHTEdldEluZm86OmdldFdl
YkdMVmVydGV4QXJyYXlPYmplY3RPRVMoKSBjb25zdAorV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9F
UyogV2ViR0xHZXRJbmZvOjpnZXRXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKCkgY29uc3QKIHsK
ICAgICBBU1NFUlQoZ2V0VHlwZSgpID09IGtUeXBlV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyk7
Ci0gICAgcmV0dXJuIG1fd2ViZ2xWZXJ0ZXhBcnJheU9iamVjdE9FUzsKKyAgICByZXR1cm4gbV93
ZWJnbFZlcnRleEFycmF5T2JqZWN0T0VTLmdldCgpOwogfQogCiAjaWYgRU5BQkxFKFdFQkdMMikK
LVBhc3NSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdD4gV2ViR0xHZXRJbmZvOjpnZXRXZWJH
TFZlcnRleEFycmF5T2JqZWN0KCkgY29uc3QKK1dlYkdMVmVydGV4QXJyYXlPYmplY3QqIFdlYkdM
R2V0SW5mbzo6Z2V0V2ViR0xWZXJ0ZXhBcnJheU9iamVjdCgpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KGdldFR5cGUoKSA9PSBrVHlwZVdlYkdMVmVydGV4QXJyYXlPYmplY3QpOwotICAgIHJldHVybiBt
X3dlYmdsVmVydGV4QXJyYXlPYmplY3Q7CisgICAgcmV0dXJuIG1fd2ViZ2xWZXJ0ZXhBcnJheU9i
amVjdC5nZXQoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTEdldEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
R2V0SW5mby5oCmluZGV4IDdiMmRlNzdjNjQzY2RjMjgzMjBjYjc1NjU5NmU4NjM0NzUzNDFkZmIu
LmMwMzJkMTUwMWYyOTYyYzRjZDgwNDk5YjNmOWM3ZTg5YmFmODdmOTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5oCkBAIC0xMTIsMjAgKzExMiwyMCBAQCBwdWJs
aWM6CiAgICAgY29uc3QgU3RyaW5nJiBnZXRTdHJpbmcoKSBjb25zdDsKICAgICB1bnNpZ25lZCBp
bnQgZ2V0VW5zaWduZWRJbnQoKSBjb25zdDsKICAgICBsb25nIGxvbmcgZ2V0SW50NjQoKSBjb25z
dDsKLSAgICBQYXNzUmVmUHRyPFdlYkdMQnVmZmVyPiBnZXRXZWJHTEJ1ZmZlcigpIGNvbnN0Owot
ICAgIFBhc3NSZWZQdHI8RmxvYXQzMkFycmF5PiBnZXRXZWJHTEZsb2F0QXJyYXkoKSBjb25zdDsK
LSAgICBQYXNzUmVmUHRyPFdlYkdMRnJhbWVidWZmZXI+IGdldFdlYkdMRnJhbWVidWZmZXIoKSBj
b25zdDsKLSAgICBQYXNzUmVmUHRyPEludDMyQXJyYXk+IGdldFdlYkdMSW50QXJyYXkoKSBjb25z
dDsKKyAgICBXZWJHTEJ1ZmZlciogZ2V0V2ViR0xCdWZmZXIoKSBjb25zdDsKKyAgICBGbG9hdDMy
QXJyYXkqIGdldFdlYkdMRmxvYXRBcnJheSgpIGNvbnN0OworICAgIFdlYkdMRnJhbWVidWZmZXIq
IGdldFdlYkdMRnJhbWVidWZmZXIoKSBjb25zdDsKKyAgICBJbnQzMkFycmF5KiBnZXRXZWJHTElu
dEFycmF5KCkgY29uc3Q7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudCBXZWJHTE9iamVjdEFycmF5
Ci0gICAgLy8gUGFzc1JlZlB0cjxXZWJHTE9iamVjdEFycmF5PiBnZXRXZWJHTE9iamVjdEFycmF5
KCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxXZWJHTFByb2dyYW0+IGdldFdlYkdMUHJvZ3JhbSgp
IGNvbnN0OwotICAgIFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IGdldFdlYkdMUmVuZGVy
YnVmZmVyKCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxXZWJHTFRleHR1cmU+IGdldFdlYkdMVGV4
dHVyZSgpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8VWludDhBcnJheT4gZ2V0V2ViR0xVbnNpZ25l
ZEJ5dGVBcnJheSgpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8VWludDMyQXJyYXk+IGdldFdlYkdM
VW5zaWduZWRJbnRBcnJheSgpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdE9FUz4gZ2V0V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUygpIGNvbnN0OworICAgIC8v
IFdlYkdMT2JqZWN0QXJyYXkqIGdldFdlYkdMT2JqZWN0QXJyYXkoKSBjb25zdDsKKyAgICBXZWJH
TFByb2dyYW0qIGdldFdlYkdMUHJvZ3JhbSgpIGNvbnN0OworICAgIFdlYkdMUmVuZGVyYnVmZmVy
KiBnZXRXZWJHTFJlbmRlcmJ1ZmZlcigpIGNvbnN0OworICAgIFdlYkdMVGV4dHVyZSogZ2V0V2Vi
R0xUZXh0dXJlKCkgY29uc3Q7CisgICAgVWludDhBcnJheSogZ2V0V2ViR0xVbnNpZ25lZEJ5dGVB
cnJheSgpIGNvbnN0OworICAgIFVpbnQzMkFycmF5KiBnZXRXZWJHTFVuc2lnbmVkSW50QXJyYXko
KSBjb25zdDsKKyAgICBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKiBnZXRXZWJHTFZlcnRleEFy
cmF5T2JqZWN0T0VTKCkgY29uc3Q7CiAjaWYgRU5BQkxFKFdFQkdMMikKLSAgICBQYXNzUmVmUHRy
PFdlYkdMVmVydGV4QXJyYXlPYmplY3Q+IGdldFdlYkdMVmVydGV4QXJyYXlPYmplY3QoKSBjb25z
dDsKKyAgICBXZWJHTFZlcnRleEFycmF5T2JqZWN0KiBnZXRXZWJHTFZlcnRleEFycmF5T2JqZWN0
KCkgY29uc3Q7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggOTI5MDg5
MWE1YjQxM2I3ZjIzNjM2NWRkOGU3OTBhYmViNjg4NDJlMC4uYjAwMTBiNmU5ODBiZWQyZTk5Mzhi
MmQ5N2Q1ZGM4OTdjODFiYjc2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTc1Miw3ICs3NTIsNyBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
Q2FudmFzKCkKICAgICBtX2NvbnRleHQtPnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKGNh
bnZhcygpLT5idWZmZXIoKSk7CiB9CiAKLVBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpCitSZWZQ
dHI8SW1hZ2VEYXRhPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwYWludFJlbmRlcmluZ1Jl
c3VsdHNUb0ltYWdlRGF0YSgpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMzg2LDUyICsxMzg2LDUyIEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29weVRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEaW50IGxldmVsCiAgICAgfQogfQogCi1QYXNzUmVmUHRyPFdlYkdMQnVmZmVyPiBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGVCdWZmZXIoKQorUmVmUHRyPFdlYkdMQnVmZmVy
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGVCdWZmZXIoKQogewogICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIFJl
ZlB0cjxXZWJHTEJ1ZmZlcj4gbyA9IFdlYkdMQnVmZmVyOjpjcmVhdGUodGhpcyk7Ci0gICAgYWRk
U2hhcmVkT2JqZWN0KG8uZ2V0KCkpOwotICAgIHJldHVybiBvOworICAgIGF1dG8gYnVmZmVyID0g
V2ViR0xCdWZmZXI6OmNyZWF0ZSh0aGlzKTsKKyAgICBhZGRTaGFyZWRPYmplY3QoYnVmZmVyLnB0
cigpKTsKKyAgICByZXR1cm4gV1RGTW92ZShidWZmZXIpOwogfQogCi1QYXNzUmVmUHRyPFdlYkdM
RnJhbWVidWZmZXI+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZUZyYW1lYnVmZmVy
KCkKK1JlZlB0cjxXZWJHTEZyYW1lYnVmZmVyPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpj
cmVhdGVGcmFtZWJ1ZmZlcigpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgUmVmUHRyPFdlYkdMRnJhbWVidWZmZXI+IG8g
PSBXZWJHTEZyYW1lYnVmZmVyOjpjcmVhdGUodGhpcyk7Ci0gICAgYWRkQ29udGV4dE9iamVjdChv
LmdldCgpKTsKLSAgICByZXR1cm4gbzsKKyAgICBhdXRvIGJ1ZmZlciA9IFdlYkdMRnJhbWVidWZm
ZXI6OmNyZWF0ZSh0aGlzKTsKKyAgICBhZGRDb250ZXh0T2JqZWN0KGJ1ZmZlci5wdHIoKSk7Cisg
ICAgcmV0dXJuIFdURk1vdmUoYnVmZmVyKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJHTFRleHR1cmU+
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZVRleHR1cmUoKQorUmVmUHRyPFdlYkdM
VGV4dHVyZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlVGV4dHVyZSgpCiB7CiAg
ICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgUmVmUHRyPFdlYkdMVGV4dHVyZT4gbyA9IFdlYkdMVGV4dHVyZTo6Y3JlYXRlKHRoaXMp
OwotICAgIGFkZFNoYXJlZE9iamVjdChvLmdldCgpKTsKLSAgICByZXR1cm4gbzsKKyAgICBhdXRv
IHRleHR1cmUgPSBXZWJHTFRleHR1cmU6OmNyZWF0ZSh0aGlzKTsKKyAgICBhZGRTaGFyZWRPYmpl
Y3QodGV4dHVyZS5wdHIoKSk7CisgICAgcmV0dXJuIFdURk1vdmUodGV4dHVyZSk7CiB9CiAKLVBh
c3NSZWZQdHI8V2ViR0xQcm9ncmFtPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGVQ
cm9ncmFtKCkKK1JlZlB0cjxXZWJHTFByb2dyYW0+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmNyZWF0ZVByb2dyYW0oKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIFJlZlB0cjxXZWJHTFByb2dyYW0+IG8gPSBXZWJH
TFByb2dyYW06OmNyZWF0ZSh0aGlzKTsKLSAgICBhZGRTaGFyZWRPYmplY3Qoby5nZXQoKSk7Ci0g
ICAgcmV0dXJuIG87CisgICAgYXV0byBwcm9ncmFtID0gV2ViR0xQcm9ncmFtOjpjcmVhdGUodGhp
cyk7CisgICAgYWRkU2hhcmVkT2JqZWN0KHByb2dyYW0ucHRyKCkpOworICAgIHJldHVybiBXVEZN
b3ZlKHByb2dyYW0pOwogfQogCi1QYXNzUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGVSZW5kZXJidWZmZXIoKQorUmVmUHRyPFdlYkdMUmVu
ZGVyYnVmZmVyPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGVSZW5kZXJidWZmZXIo
KQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIFJlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gbyA9IFdlYkdMUmVuZGVyYnVm
ZmVyOjpjcmVhdGUodGhpcyk7Ci0gICAgYWRkU2hhcmVkT2JqZWN0KG8uZ2V0KCkpOwotICAgIHJl
dHVybiBvOworICAgIGF1dG8gYnVmZmVyID0gV2ViR0xSZW5kZXJidWZmZXI6OmNyZWF0ZSh0aGlz
KTsKKyAgICBhZGRTaGFyZWRPYmplY3QoYnVmZmVyLnB0cigpKTsKKyAgICByZXR1cm4gV1RGTW92
ZShidWZmZXIpOwogfQogCi1QYXNzUmVmUHRyPFdlYkdMU2hhZGVyPiBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpjcmVhdGVTaGFkZXIoR0MzRGVudW0gdHlwZSwgRXhjZXB0aW9uQ29kZSYpCitS
ZWZQdHI8V2ViR0xTaGFkZXI+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZVNoYWRl
cihHQzNEZW51bSB0eXBlLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBpZiAoaXNDb250ZXh0TG9z
dE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE0NDAsOSArMTQ0MCw5
IEBAIFBhc3NSZWZQdHI8V2ViR0xTaGFkZXI+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNy
ZWF0ZVNoYWRlcihHQzNEZW51bSB0eXBlLCBFCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIAotICAgIFJlZlB0cjxXZWJHTFNoYWRlcj4gbyA9IFdlYkdMU2hhZGVyOjpjcmVhdGUodGhp
cywgdHlwZSk7Ci0gICAgYWRkU2hhcmVkT2JqZWN0KG8uZ2V0KCkpOwotICAgIHJldHVybiBvOwor
ICAgIGF1dG8gc2hhZGVyID0gV2ViR0xTaGFkZXI6OmNyZWF0ZSh0aGlzLCB0eXBlKTsKKyAgICBh
ZGRTaGFyZWRPYmplY3Qoc2hhZGVyLnB0cigpKTsKKyAgICByZXR1cm4gV1RGTW92ZShzaGFkZXIp
OwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmN1bGxGYWNlKEdDM0RlbnVt
IG1vZGUpCkBAIC0yMTE2LDcgKzIxMTYsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdlbmVyYXRlTWlwbWFwKEdDM0RlbnVtIHRhcmdldCkKICAgICB0ZXgtPmdlbmVyYXRlTWlw
bWFwTGV2ZWxJbmZvKCk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViR0xBY3RpdmVJbmZvPiBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBY3RpdmVBdHRyaWIoV2ViR0xQcm9ncmFtKiBwcm9ncmFt
LCBHQzNEdWludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpCitSZWZQdHI8V2ViR0xBY3RpdmVJbmZv
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBY3RpdmVBdHRyaWIoV2ViR0xQcm9ncmFt
KiBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgaWYgKGlz
Q29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTE9iamVjdCgiZ2V0QWN0aXZl
QXR0cmliIiwgcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjEyOSwxMCAr
MjEyOSwxMCBAQCBQYXNzUmVmUHRyPFdlYkdMQWN0aXZlSW5mbz4gV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0QWN0aXZlQXR0cmliKFdlYkdMUHJvZwogICAgIHJldHVybiBXZWJHTEFjdGl2
ZUluZm86OmNyZWF0ZShpbmZvLm5hbWUsIGluZm8udHlwZSwgaW5mby5zaXplKTsKIH0KIAotUGFz
c1JlZlB0cjxXZWJHTEFjdGl2ZUluZm8+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEFj
dGl2ZVVuaWZvcm0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwgRXhjZXB0
aW9uQ29kZSYpCitSZWZQdHI8V2ViR0xBY3RpdmVJbmZvPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpnZXRBY3RpdmVVbmlmb3JtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgR0MzRHVpbnQgaW5k
ZXgsIEV4Y2VwdGlvbkNvZGUmKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkg
fHwgIXZhbGlkYXRlV2ViR0xPYmplY3QoImdldEFjdGl2ZVVuaWZvcm0iLCBwcm9ncmFtKSkKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIEFjdGl2ZUluZm8g
aW5mbzsKICAgICBpZiAoIW1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybShvYmplY3RPclplcm8o
cHJvZ3JhbSksIGluZGV4LCBpbmZvKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMzUy
LDcgKzIzNTIsNyBAQCBTdHJpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0U2hhZGVy
SW5mb0xvZyhXZWJHTFNoYWRlciogc2hhZGVyLCBFeGNlcHRpbwogICAgIHJldHVybiBlbnN1cmVO
b3ROdWxsKG1fY29udGV4dC0+Z2V0U2hhZGVySW5mb0xvZyhvYmplY3RPclplcm8oc2hhZGVyKSkp
OwogfQogCi1QYXNzUmVmUHRyPFdlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0PiBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0MzRGVudW0gc2hhZGVy
VHlwZSwgR0MzRGVudW0gcHJlY2lzaW9uVHlwZSwgRXhjZXB0aW9uQ29kZSYpCitSZWZQdHI8V2Vi
R0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNo
YWRlclByZWNpc2lvbkZvcm1hdChHQzNEZW51bSBzaGFkZXJUeXBlLCBHQzNEZW51bSBwcmVjaXNp
b25UeXBlLCBFeGNlcHRpb25Db2RlJikKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI1NDUsNyArMjU0NSw3IEBAIFdlYkdM
R2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlmb3JtKFdlYkdMUHJvZ3Jh
bSogcHJvZ3JhbSwgY29uc3QKICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiB9CiAKLVBhc3NS
ZWZQdHI8V2ViR0xVbmlmb3JtTG9jYXRpb24+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Omdl
dFVuaWZvcm1Mb2NhdGlvbihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFt
ZSwgRXhjZXB0aW9uQ29kZSYpCitSZWZQdHI8V2ViR0xVbmlmb3JtTG9jYXRpb24+IFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTFByb2dyYW0qIHByb2dy
YW0sIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTE9iamVjdCgiZ2V0VW5pZm9ybUxv
Y2F0aW9uIiwgcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzE1Miw3ICsz
MTUyLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZTJEKEdDM0Rl
bnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGUKICAgICAgICAgbV9jb250ZXh0LT5waXhl
bFN0b3JlaShHcmFwaGljc0NvbnRleHQzRDo6VU5QQUNLX0FMSUdOTUVOVCwgbV91bnBhY2tBbGln
bm1lbnQpOwogfQogCi1QYXNzUmVmUHRyPEltYWdlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpkcmF3SW1hZ2VJbnRvQnVmZmVyKEltYWdlJiBpbWFnZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0
LCBpbnQgZGV2aWNlU2NhbGVGYWN0b3IpCitSZWZQdHI8SW1hZ2U+IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmRyYXdJbWFnZUludG9CdWZmZXIoSW1hZ2UmIGltYWdlLCBpbnQgd2lkdGgsIGlu
dCBoZWlnaHQsIGludCBkZXZpY2VTY2FsZUZhY3RvcikKIHsKICAgICBJbnRTaXplIHNpemUod2lk
dGgsIGhlaWdodCk7CiAgICAgc2l6ZS5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7CkBAIC0zMjIw
LDcgKzMyMjAsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlMkQo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZQogfQogCiAjaWYgRU5BQkxFKFZJ
REVPKQotUGFzc1JlZlB0cjxJbWFnZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmlkZW9G
cmFtZVRvSW1hZ2UoSFRNTFZpZGVvRWxlbWVudCogdmlkZW8sIEJhY2tpbmdTdG9yZUNvcHkgYmFj
a2luZ1N0b3JlQ29weSwgRXhjZXB0aW9uQ29kZSYpCitSZWZQdHI8SW1hZ2U+IFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnZpZGVvRnJhbWVUb0ltYWdlKEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVv
LCBCYWNraW5nU3RvcmVDb3B5IGJhY2tpbmdTdG9yZUNvcHksIEV4Y2VwdGlvbkNvZGUmKQogewog
ICAgIEludFNpemUgc2l6ZSh2aWRlby0+dmlkZW9XaWR0aCgpLCB2aWRlby0+dmlkZW9IZWlnaHQo
KSk7CiAgICAgSW1hZ2VCdWZmZXIqIGJ1ZiA9IG1fZ2VuZXJhdGVkSW1hZ2VDYWNoZS5pbWFnZUJ1
ZmZlcihzaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRleCBhNTY3YWFkMDRlOTcwZGY5MDQ5Njk1ZTIyMjhj
Njg2OGU3M2I0YTEyLi43ZDRkZjIyMGJiZDJlNzY5NmY0NTRlNmM2MzY1NmQ5ZTQzNjQ5MDJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5oCkBAIC0xNTgsMTIgKzE1OCwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGNvcHlUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgs
IEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyKSA9IDA7CiAgICAgdm9pZCBjb3B5VGV4
U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNl
dCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRo
LCBHQzNEc2l6ZWkgaGVpZ2h0KTsKIAotICAgIFBhc3NSZWZQdHI8V2ViR0xCdWZmZXI+IGNyZWF0
ZUJ1ZmZlcigpOwotICAgIFBhc3NSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4gY3JlYXRlRnJhbWVi
dWZmZXIoKTsKLSAgICBQYXNzUmVmUHRyPFdlYkdMUHJvZ3JhbT4gY3JlYXRlUHJvZ3JhbSgpOwot
ICAgIFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IGNyZWF0ZVJlbmRlcmJ1ZmZlcigpOwot
ICAgIFBhc3NSZWZQdHI8V2ViR0xTaGFkZXI+IGNyZWF0ZVNoYWRlcihHQzNEZW51bSB0eXBlLCBF
eGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxXZWJHTFRleHR1cmU+IGNyZWF0ZVRleHR1
cmUoKTsKKyAgICBSZWZQdHI8V2ViR0xCdWZmZXI+IGNyZWF0ZUJ1ZmZlcigpOworICAgIFJlZlB0
cjxXZWJHTEZyYW1lYnVmZmVyPiBjcmVhdGVGcmFtZWJ1ZmZlcigpOworICAgIFJlZlB0cjxXZWJH
TFByb2dyYW0+IGNyZWF0ZVByb2dyYW0oKTsKKyAgICBSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+
IGNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgIFJlZlB0cjxXZWJHTFNoYWRlcj4gY3JlYXRlU2hh
ZGVyKEdDM0RlbnVtIHR5cGUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBSZWZQdHI8V2ViR0xUZXh0
dXJlPiBjcmVhdGVUZXh0dXJlKCk7CiAKICAgICB2b2lkIGN1bGxGYWNlKEdDM0RlbnVtIG1vZGUp
OwogCkBAIC0xOTIsOCArMTkyLDggQEAgcHVibGljOgogICAgIHZvaWQgZnJvbnRGYWNlKEdDM0Rl
bnVtIG1vZGUpOwogICAgIHZvaWQgZ2VuZXJhdGVNaXBtYXAoR0MzRGVudW0gdGFyZ2V0KTsKIAot
ICAgIFBhc3NSZWZQdHI8V2ViR0xBY3RpdmVJbmZvPiBnZXRBY3RpdmVBdHRyaWIoV2ViR0xQcm9n
cmFtKiwgR0MzRHVpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPFdl
YkdMQWN0aXZlSW5mbz4gZ2V0QWN0aXZlVW5pZm9ybShXZWJHTFByb2dyYW0qLCBHQzNEdWludCBp
bmRleCwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxXZWJHTEFjdGl2ZUluZm8+IGdldEFj
dGl2ZUF0dHJpYihXZWJHTFByb2dyYW0qLCBHQzNEdWludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYp
OworICAgIFJlZlB0cjxXZWJHTEFjdGl2ZUluZm8+IGdldEFjdGl2ZVVuaWZvcm0oV2ViR0xQcm9n
cmFtKiwgR0MzRHVpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBib29sIGdldEF0dGFj
aGVkU2hhZGVycyhXZWJHTFByb2dyYW0qLCBWZWN0b3I8UmVmUHRyPFdlYkdMU2hhZGVyPj4mLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgR0MzRGludCBnZXRBdHRyaWJMb2NhdGlvbihXZWJHTFByb2dy
YW0qLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIFdlYkdMR2V0SW5mbyBnZXRCdWZmZXJQYXJh
bWV0ZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwpA
QCAtMjA3LDEyICsyMDcsMTIgQEAgcHVibGljOgogICAgIFdlYkdMR2V0SW5mbyBnZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgRXhjZXB0aW9u
Q29kZSYpOwogICAgIFdlYkdMR2V0SW5mbyBnZXRTaGFkZXJQYXJhbWV0ZXIoV2ViR0xTaGFkZXIq
LCBHQzNEZW51bSBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFN0cmluZyBnZXRTaGFkZXJJ
bmZvTG9nKFdlYkdMU2hhZGVyKiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8V2Vi
R0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQ+IGdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQzNEZW51
bSBzaGFkZXJUeXBlLCBHQzNEZW51bSBwcmVjaXNpb25UeXBlLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgUmVmUHRyPFdlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0PiBnZXRTaGFkZXJQcmVjaXNpb25G
b3JtYXQoR0MzRGVudW0gc2hhZGVyVHlwZSwgR0MzRGVudW0gcHJlY2lzaW9uVHlwZSwgRXhjZXB0
aW9uQ29kZSYpOwogICAgIFN0cmluZyBnZXRTaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXIqLCBFeGNl
cHRpb25Db2RlJik7CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBnZXRTdXBwb3J0ZWRFeHRl
bnNpb25zKCkgPSAwOwogICAgIFdlYkdMR2V0SW5mbyBnZXRUZXhQYXJhbWV0ZXIoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFdlYkdMR2V0SW5m
byBnZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSosIGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwg
RXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8V2ViR0xVbmlmb3JtTG9jYXRpb24+IGdl
dFVuaWZvcm1Mb2NhdGlvbihXZWJHTFByb2dyYW0qLCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25D
b2RlJik7CisgICAgUmVmUHRyPFdlYkdMVW5pZm9ybUxvY2F0aW9uPiBnZXRVbmlmb3JtTG9jYXRp
b24oV2ViR0xQcm9ncmFtKiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFdl
YkdMR2V0SW5mbyBnZXRWZXJ0ZXhBdHRyaWIoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBuYW1l
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgbG9uZyBsb25nIGdldFZlcnRleEF0dHJpYk9mZnNldChH
QzNEdWludCBpbmRleCwgR0MzRGVudW0gcG5hbWUpOwogCkBAIC0zNDYsNyArMzQ2LDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBtYXJrTGF5ZXJDb21wb3NpdGVkKCk7CiAgICAgdm9pZCBwYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpIG92ZXJyaWRlOwotICAgIFBhc3NSZWZQdHI8SW1hZ2VE
YXRhPiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpOworICAgIFJlZlB0cjxJbWFn
ZURhdGE+IHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCk7CiAKICAgICB2b2lkIHJl
bW92ZVNoYXJlZE9iamVjdChXZWJHTFNoYXJlZE9iamVjdCopOwogICAgIHZvaWQgcmVtb3ZlQ29u
dGV4dE9iamVjdChXZWJHTENvbnRleHRPYmplY3QqKTsKQEAgLTQyNiwxMCArNDI2LDEwIEBAIHBy
b3RlY3RlZDoKICAgICAvLyBBZGRzIGEgY29tcHJlc3NlZCB0ZXh0dXJlIGZvcm1hdC4KICAgICB2
b2lkIGFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEdDM0RlbnVtKTsKIAotICAgIFBhc3NSZWZQ
dHI8SW1hZ2U+IGRyYXdJbWFnZUludG9CdWZmZXIoSW1hZ2UmLCBpbnQgd2lkdGgsIGludCBoZWln
aHQsIGludCBkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgUmVmUHRyPEltYWdlPiBkcmF3SW1hZ2VJ
bnRvQnVmZmVyKEltYWdlJiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgZGV2aWNlU2NhbGVG
YWN0b3IpOwogCiAjaWYgRU5BQkxFKFZJREVPKQotICAgIFBhc3NSZWZQdHI8SW1hZ2U+IHZpZGVv
RnJhbWVUb0ltYWdlKEhUTUxWaWRlb0VsZW1lbnQqLCBCYWNraW5nU3RvcmVDb3B5LCBFeGNlcHRp
b25Db2RlJik7CisgICAgUmVmUHRyPEltYWdlPiB2aWRlb0ZyYW1lVG9JbWFnZShIVE1MVmlkZW9F
bGVtZW50KiwgQmFja2luZ1N0b3JlQ29weSwgRXhjZXB0aW9uQ29kZSYpOwogI2VuZGlmCiAKICAg
ICBXZWJHTFRleHR1cmU6OlRleHR1cmVFeHRlbnNpb25GbGFnIHRleHR1cmVFeHRlbnNpb25GbGFn
cygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCmlu
ZGV4IGI3ZWUyMjVmNWYxOGQ2NmY1NjliZmFjYTgxYWExNmVkZjgwOThhZDEuLmJhZDllZDNmZGRi
ZmJiODJiOGMxYjU1MTA0Y2FlNTc2NTU3YjIyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFja0N1ZS5jcHAKQEAgLTU1LDEyICs1NSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0YXRpYyBjb25zdCBpbnQgaW52YWxpZEN1ZUluZGV4ID0gLTE7CiAKLVBhc3NSZWZQ
dHI8VGV4dFRyYWNrQ3VlPiBUZXh0VHJhY2tDdWU6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQsIGNvbnN0IFN0cmluZyYgY29u
dGVudCkKK1JlZjxUZXh0VHJhY2tDdWU+IFRleHRUcmFja0N1ZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCwgY29uc3QgU3Ry
aW5nJiBjb250ZW50KQogewogICAgIHJldHVybiBjcmVhdGUoY29udGV4dCwgTWVkaWFUaW1lOjpj
cmVhdGVXaXRoRG91YmxlKHN0YXJ0KSwgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGVuZCks
IGNvbnRlbnQpOwogfQogCi1QYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4gVGV4dFRyYWNrQ3VlOjpj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgTWVkaWFUaW1lJiBz
dGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIGNvbnN0IFN0cmluZyYgY29udGVudCkKK1JlZjxU
ZXh0VHJhY2tDdWU+IFRleHRUcmFja0N1ZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnQpCiB7CiAgICAgcmV0dXJuIFZUVEN1ZTo6Y3JlYXRlKGNvbnRl
eHQsIHN0YXJ0LCBlbmQsIGNvbnRlbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrQ3VlLmgKaW5kZXggMmJmZDE2ZGIwZTA3MzMzNGRiOTc2NjM2ZGVlNmIyYjAxNzQ0ODAw
OC4uNzY0MGJhNGY3MTFhNGRiMWY1MTkxY2MwYWI1NjI0MWY3MDk4YWIxNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCkBAIC00Niw4ICs0Niw4IEBAIGNsYXNzIFRl
eHRUcmFjazsKIAogY2xhc3MgVGV4dFRyYWNrQ3VlIDogcHVibGljIFJlZkNvdW50ZWQ8VGV4dFRy
YWNrQ3VlPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQsIGNvbnN0IFN0cmluZyYgY29udGVudCk7
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5k
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpOworICAgIHN0YXRpYyBSZWY8VGV4dFRyYWNrQ3VlPiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCwg
Y29uc3QgU3RyaW5nJiBjb250ZW50KTsKKyAgICBzdGF0aWMgUmVmPFRleHRUcmFja0N1ZT4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25z
dCBNZWRpYVRpbWUmIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50KTsKIAogICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIGN1ZVNoYWRvd1BzZXVkb0lkKCkKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1ZUVEN1ZS5jcHAKaW5kZXggNmFhYTcwMjYyOWM0OGI2NmIzZWE4NmMzN2VjYTYw
YjlkYzI1MWIyYi4uYzRiOTMyMjMzZGI4YWM0ZTUyM2Y3YTFmN2ZlNGMyNGU4MGI2ZTc4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcApAQCAtMTE5LDEwICsxMTksMTAgQEAgc3Rh
dGljIGNvbnN0IFN0cmluZyYgdmVydGljYWxHcm93aW5nUmlnaHRLZXl3b3JkKCkKIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1QYXNzUmVmUHRyPFZUVEN1ZUJveD4gVlRUQ3Vl
Qm94OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBWVFRDdWUmIGN1ZSkKK1JlZjxWVFRDdWVC
b3g+IFZUVEN1ZUJveDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVlRUQ3VlJiBjdWUpCiB7
Ci0gICAgVlRUQ3VlQm94KiBjdWVCb3ggPSBuZXcgVlRUQ3VlQm94KGRvY3VtZW50LCBjdWUpOwot
ICAgIGN1ZUJveC0+c2V0UHNldWRvKFZUVEN1ZUJveDo6dnR0Q3VlQm94U2hhZG93UHNldWRvSWQo
KSk7CisgICAgVlRUQ3VlQm94JiBjdWVCb3ggPSAqbmV3IFZUVEN1ZUJveChkb2N1bWVudCwgY3Vl
KTsKKyAgICBjdWVCb3guc2V0UHNldWRvKFZUVEN1ZUJveDo6dnR0Q3VlQm94U2hhZG93UHNldWRv
SWQoKSk7CiAgICAgcmV0dXJuIGFkb3B0UmVmKGN1ZUJveCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1ZUVEN1ZS5oCmluZGV4IGRjZWRiMjZmZjJiNTczMzc1MzkxOGNhZmZlYzUwNWM5NmVlZTAx
NjIuLjllZmZkOWEyYjY4ODNiZGVhN2UzYjhiNWY3M2YxZTYxNjZhZjI5ZDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9WVFRDdWUuaApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBXZWJWVFRDdWVEYXRh
OwogCiBjbGFzcyBWVFRDdWVCb3ggOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFZUVEN1ZUJveD4gY3JlYXRlKERvY3VtZW50JiwgVlRUQ3VlJik7
CisgICAgc3RhdGljIFJlZjxWVFRDdWVCb3g+IGNyZWF0ZShEb2N1bWVudCYsIFZUVEN1ZSYpOwog
CiAgICAgVlRUQ3VlKiBnZXRDdWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlDU1NQ
cm9wZXJ0aWVzKGNvbnN0IEludFNpemUmIHZpZGVvU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNl
bGVjdGlvbi5jcHAKaW5kZXggNTJjZTBhOTU2NDRlZmJiYTgzODEwMDYxNThkNDNiNzNhZGQyZjk3
NS4uODFlZmM0ZDkwMjg2OGMwOTc5YzBlZjJiYWZhNDAwMTgzZGEwZTRlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NU2VsZWN0aW9uLmNwcApAQCAtMzQ0LDE0ICszNDQsMTQgQEAgdm9pZCBET01TZWxl
Y3Rpb246OmV4dGVuZChOb2RlJiBub2RlLCBpbnQgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJiBlYykK
ICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS5zZXRFeHRlbnQoY3JlYXRlTGVnYWN5RWRpdGluZ1Bv
c2l0aW9uKCZub2RlLCBvZmZzZXQpLCBET1dOU1RSRUFNKTsKIH0KIAotUGFzc1JlZlB0cjxSYW5n
ZT4gRE9NU2VsZWN0aW9uOjpnZXRSYW5nZUF0KGludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMp
CitSZWZQdHI8UmFuZ2U+IERPTVNlbGVjdGlvbjo6Z2V0UmFuZ2VBdChpbnQgaW5kZXgsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIGlmICghbV9mcmFtZSkKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBy
YW5nZUNvdW50KCkpIHsKICAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIC8vIElmIHlvdSdy
ZSBoaXR0aW5nIHRoaXMsIHlvdSd2ZSBhZGRlZCBicm9rZW4gbXVsdGktcmFuZ2Ugc2VsZWN0aW9u
IHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5oCmluZGV4IGFjMjhhZjU0NWQ4Y2I0
ZTQ1ZmU0NTU5MTE3MmJhODkxOGEyYTQ1NzkuLjEwOTUwNWIwNThmMDg3Mjg2MDkxY2MwY2VkYmNm
ZTE0YTVhZmUyNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uaApAQCAtODAsNyArODAs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgY29sbGFwc2VUb0VuZChFeGNl
cHRpb25Db2RlJik7CiAgICAgICAgIHZvaWQgY29sbGFwc2VUb1N0YXJ0KEV4Y2VwdGlvbkNvZGUm
KTsKICAgICAgICAgdm9pZCBleHRlbmQoTm9kZSYsIGludCBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUm
KTsKLSAgICAgICAgUGFzc1JlZlB0cjxSYW5nZT4gZ2V0UmFuZ2VBdChpbnQsIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICAgICAgUmVmUHRyPFJhbmdlPiBnZXRSYW5nZUF0KGludCwgRXhjZXB0aW9uQ29k
ZSYpOwogICAgICAgICB2b2lkIHJlbW92ZUFsbFJhbmdlcygpOwogICAgICAgICB2b2lkIGFkZFJh
bmdlKFJhbmdlKik7CiAgICAgICAgIHZvaWQgZGVsZXRlRnJvbURvY3VtZW50KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggYzliY2NmMGFmZTdiYWRlY2ZiZDQ1ODM3OTRkZmUxN2Iy
MThhNjAxZS4uMmI1OWEzMzI0YWY3M2NkNjU1NmU5YzZjNzhkYmU5MThiZjBjMmNlYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtNDYzLDkgKzQ2Myw5IEBAIERPTVdpbmRvdyogRE9N
V2luZG93Ojp0b0RPTVdpbmRvdygpCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKLVBhc3NSZWZQdHI8
TWVkaWFRdWVyeUxpc3Q+IERPTVdpbmRvdzo6bWF0Y2hNZWRpYShjb25zdCBTdHJpbmcmIG1lZGlh
KQorUmVmUHRyPE1lZGlhUXVlcnlMaXN0PiBET01XaW5kb3c6Om1hdGNoTWVkaWEoY29uc3QgU3Ry
aW5nJiBtZWRpYSkKIHsKLSAgICByZXR1cm4gZG9jdW1lbnQoKSA/IGRvY3VtZW50KCktPm1lZGlh
UXVlcnlNYXRjaGVyKCkubWF0Y2hNZWRpYShtZWRpYSkgOiAwOworICAgIHJldHVybiBkb2N1bWVu
dCgpID8gZG9jdW1lbnQoKS0+bWVkaWFRdWVyeU1hdGNoZXIoKS5tYXRjaE1lZGlhKG1lZGlhKSA6
IG51bGxwdHI7CiB9CiAKIFBhZ2UqIERPTVdpbmRvdzo6cGFnZSgpCkBAIC0xNDA1LDE2ICsxNDA1
LDE2IEBAIERvY3VtZW50KiBET01XaW5kb3c6OmRvY3VtZW50KCkgY29uc3QKICAgICByZXR1cm4g
ZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpOwogfQogCi1QYXNzUmVmUHRyPFN0eWxlTWVkaWE+
IERPTVdpbmRvdzo6c3R5bGVNZWRpYSgpIGNvbnN0CitSZWZQdHI8U3R5bGVNZWRpYT4gRE9NV2lu
ZG93OjpzdHlsZU1lZGlhKCkgY29uc3QKIHsKICAgICBpZiAoIWlzQ3VycmVudGx5RGlzcGxheWVk
SW5GcmFtZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIW1fbWVkaWEpCiAg
ICAgICAgIG1fbWVkaWEgPSBTdHlsZU1lZGlhOjpjcmVhdGUobV9mcmFtZSk7Ci0gICAgcmV0dXJu
IG1fbWVkaWEuZ2V0KCk7CisgICAgcmV0dXJuIG1fbWVkaWE7CiB9CiAKLVBhc3NSZWZQdHI8Q1NT
U3R5bGVEZWNsYXJhdGlvbj4gRE9NV2luZG93OjpnZXRDb21wdXRlZFN0eWxlKEVsZW1lbnQqIGVs
ZW1lbnQsIGNvbnN0IFN0cmluZyYgcHNldWRvRWx0KSBjb25zdAorUmVmUHRyPENTU1N0eWxlRGVj
bGFyYXRpb24+IERPTVdpbmRvdzo6Z2V0Q29tcHV0ZWRTdHlsZShFbGVtZW50KiBlbGVtZW50LCBj
b25zdCBTdHJpbmcmIHBzZXVkb0VsdCkgY29uc3QKIHsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMTQyMiwxNSArMTQyMiwxNSBAQCBQYXNzUmVmUHRyPENT
U1N0eWxlRGVjbGFyYXRpb24+IERPTVdpbmRvdzo6Z2V0Q29tcHV0ZWRTdHlsZShFbGVtZW50KiBl
bGVtZW50LCBjbwogICAgIHJldHVybiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNyZWF0
ZShlbGVtZW50LCBmYWxzZSwgcHNldWRvRWx0KTsKIH0KIAotUGFzc1JlZlB0cjxDU1NSdWxlTGlz
dD4gRE9NV2luZG93OjpnZXRNYXRjaGVkQ1NTUnVsZXMoRWxlbWVudCogZWxlbWVudCwgY29uc3Qg
U3RyaW5nJiBwc2V1ZG9FbGVtZW50LCBib29sIGF1dGhvck9ubHkpIGNvbnN0CitSZWZQdHI8Q1NT
UnVsZUxpc3Q+IERPTVdpbmRvdzo6Z2V0TWF0Y2hlZENTU1J1bGVzKEVsZW1lbnQqIGVsZW1lbnQs
IGNvbnN0IFN0cmluZyYgcHNldWRvRWxlbWVudCwgYm9vbCBhdXRob3JPbmx5KSBjb25zdAogewog
ICAgIGlmICghaXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHVuc2lnbmVkIGNvbG9uU3RhcnQgPSBw
c2V1ZG9FbGVtZW50WzBdID09ICc6JyA/IChwc2V1ZG9FbGVtZW50WzFdID09ICc6JyA/IDIgOiAx
KSA6IDA7CiAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRUeXBlIHBzZXVkb1R5cGUgPSBD
U1NTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9FbGVtZW50VHlwZShwc2V1ZG9FbGVtZW50LnN1YnN0cmlu
Z1NoYXJpbmdJbXBsKGNvbG9uU3RhcnQpKTsKICAgICBpZiAocHNldWRvVHlwZSA9PSBDU1NTZWxl
Y3Rvcjo6UHNldWRvRWxlbWVudFVua25vd24gJiYgIXBzZXVkb0VsZW1lbnQuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICB1bnNpZ25l
ZCBydWxlc1RvSW5jbHVkZSA9IFN0eWxlUmVzb2x2ZXI6OkF1dGhvckNTU1J1bGVzOwogICAgIGlm
ICghYXV0aG9yT25seSkKQEAgLTE0NDIsMjIgKzE0NDIsMjIgQEAgUGFzc1JlZlB0cjxDU1NSdWxl
TGlzdD4gRE9NV2luZG93OjpnZXRNYXRjaGVkQ1NTUnVsZXMoRWxlbWVudCogZWxlbWVudCwgY29u
c3QgU3QKIAogICAgIGF1dG8gbWF0Y2hlZFJ1bGVzID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZW5z
dXJlU3R5bGVSZXNvbHZlcigpLnBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQsIHBz
ZXVkb0lkLCBydWxlc1RvSW5jbHVkZSk7CiAgICAgaWYgKG1hdGNoZWRSdWxlcy5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlZlB0
cjxTdGF0aWNDU1NSdWxlTGlzdD4gcnVsZUxpc3QgPSBTdGF0aWNDU1NSdWxlTGlzdDo6Y3JlYXRl
KCk7CiAgICAgZm9yIChhdXRvJiBydWxlIDogbWF0Y2hlZFJ1bGVzKQogICAgICAgICBydWxlTGlz
dC0+cnVsZXMoKS5hcHBlbmQocnVsZS0+Y3JlYXRlQ1NTT01XcmFwcGVyKCkpOwogCi0gICAgcmV0
dXJuIHJ1bGVMaXN0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gcnVsZUxpc3Q7CiB9CiAKLVBhc3NS
ZWZQdHI8V2ViS2l0UG9pbnQ+IERPTVdpbmRvdzo6d2Via2l0Q29udmVydFBvaW50RnJvbU5vZGVU
b1BhZ2UoTm9kZSogbm9kZSwgY29uc3QgV2ViS2l0UG9pbnQqIHApIGNvbnN0CitSZWZQdHI8V2Vi
S2l0UG9pbnQ+IERPTVdpbmRvdzo6d2Via2l0Q29udmVydFBvaW50RnJvbU5vZGVUb1BhZ2UoTm9k
ZSogbm9kZSwgY29uc3QgV2ViS2l0UG9pbnQqIHApIGNvbnN0CiB7CiAgICAgaWYgKCFub2RlIHx8
ICFwKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBp
ZiAoIWRvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0
cygpOwogCkBAIC0xNDY2LDEzICsxNDY2LDEzIEBAIFBhc3NSZWZQdHI8V2ViS2l0UG9pbnQ+IERP
TVdpbmRvdzo6d2Via2l0Q29udmVydFBvaW50RnJvbU5vZGVUb1BhZ2UoTm9kZSogbm9kZSwKICAg
ICByZXR1cm4gV2ViS2l0UG9pbnQ6OmNyZWF0ZShwYWdlUG9pbnQueCgpLCBwYWdlUG9pbnQueSgp
KTsKIH0KIAotUGFzc1JlZlB0cjxXZWJLaXRQb2ludD4gRE9NV2luZG93Ojp3ZWJraXRDb252ZXJ0
UG9pbnRGcm9tUGFnZVRvTm9kZShOb2RlKiBub2RlLCBjb25zdCBXZWJLaXRQb2ludCogcCkgY29u
c3QKK1JlZlB0cjxXZWJLaXRQb2ludD4gRE9NV2luZG93Ojp3ZWJraXRDb252ZXJ0UG9pbnRGcm9t
UGFnZVRvTm9kZShOb2RlKiBub2RlLCBjb25zdCBXZWJLaXRQb2ludCogcCkgY29uc3QKIHsKICAg
ICBpZiAoIW5vZGUgfHwgIXApCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIGlmICghZG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVu
ZGluZ1N0eWxlc2hlZXRzKCk7CiAKQEAgLTIxNDAsNyArMjE0MCw3IEBAIFJlZlB0cjxGcmFtZT4g
RE9NV2luZG93OjpjcmVhdGVXaW5kb3coY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEF0
b21pY1N0cmluCiAgICAgcmV0dXJuIG5ld0ZyYW1lOwogfQogCi1QYXNzUmVmUHRyPERPTVdpbmRv
dz4gRE9NV2luZG93OjpvcGVuKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBBdG9taWNT
dHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgU3RyaW5nJiB3aW5kb3dGZWF0dXJlc1N0cmluZywKK1Jl
ZlB0cjxET01XaW5kb3c+IERPTVdpbmRvdzo6b3Blbihjb25zdCBTdHJpbmcmIHVybFN0cmluZywg
Y29uc3QgQXRvbWljU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFN0cmluZyYgd2luZG93RmVhdHVy
ZXNTdHJpbmcsCiAgICAgRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RX
aW5kb3cpCiB7CiAgICAgaWYgKCFpc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5oCmluZGV4IGZhYTJjZGRiMjE5Y2NkOGE3ZTRkNGRiZDNhZTU3NDZjMzQy
OWFlODEuLmQ1M2UyYTM4MmQwNjI0N2UxYTk2MzQ4ZjM1ZDhmNGE5OGMyZTdlYTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaApAQCAtMTIzLDcgKzEyMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdm9pZCBzdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCk7CiAgICAgICAgIHZv
aWQgcmVzdW1lRnJvbURvY3VtZW50U3VzcGVuc2lvbigpOwogCi0gICAgICAgIFBhc3NSZWZQdHI8
TWVkaWFRdWVyeUxpc3Q+IG1hdGNoTWVkaWEoY29uc3QgU3RyaW5nJik7CisgICAgICAgIFJlZlB0
cjxNZWRpYVF1ZXJ5TGlzdD4gbWF0Y2hNZWRpYShjb25zdCBTdHJpbmcmKTsKIAogICAgICAgICBX
RUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBwZW5kaW5nVW5sb2FkRXZlbnRMaXN0ZW5lcnMoKSBjb25z
dDsKIApAQCAtMTY3LDcgKzE2Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9p
ZCBwcmludCgpOwogICAgICAgICB2b2lkIHN0b3AoKTsKIAotICAgICAgICBXRUJDT1JFX0VYUE9S
VCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gb3Blbihjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29u
c3QgQXRvbWljU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFN0cmluZyYgd2luZG93RmVhdHVyZXNT
dHJpbmcsCisgICAgICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxET01XaW5kb3c+IG9wZW4oY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEF0b21pY1N0cmluZyYgZnJhbWVOYW1lLCBjb25z
dCBTdHJpbmcmIHdpbmRvd0ZlYXR1cmVzU3RyaW5nLAogICAgICAgICAgICAgRE9NV2luZG93JiBh
Y3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3cpOwogCiAgICAgICAgIHZvaWQgc2hv
d01vZGFsRGlhbG9nKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRpYWxv
Z0ZlYXR1cmVzU3RyaW5nLCBET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJz
dFdpbmRvdywgc3RkOjpmdW5jdGlvbjx2b2lkIChET01XaW5kb3cmKT4gcHJlcGFyZURpYWxvZ0Z1
bmN0aW9uKTsKQEAgLTIyMywxOSArMjIzLDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
ICAgICAvLyBDU1NPTSBWaWV3IE1vZHVsZQogCi0gICAgICAgIFBhc3NSZWZQdHI8U3R5bGVNZWRp
YT4gc3R5bGVNZWRpYSgpIGNvbnN0OworICAgICAgICBSZWZQdHI8U3R5bGVNZWRpYT4gc3R5bGVN
ZWRpYSgpIGNvbnN0OwogCiAgICAgICAgIC8vIERPTSBMZXZlbCAyIFN0eWxlIEludGVyZmFjZQog
Ci0gICAgICAgIFBhc3NSZWZQdHI8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gZ2V0Q29tcHV0ZWRTdHls
ZShFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbHQpIGNvbnN0OworICAgICAgICBSZWZQ
dHI8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gZ2V0Q29tcHV0ZWRTdHlsZShFbGVtZW50KiwgY29uc3Qg
U3RyaW5nJiBwc2V1ZG9FbHQpIGNvbnN0OwogCiAgICAgICAgIC8vIFdlYktpdCBleHRlbnNpb25z
CiAKLSAgICAgICAgUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gZ2V0TWF0Y2hlZENTU1J1bGVzKEVs
ZW1lbnQqLCBjb25zdCBTdHJpbmcmIHBzZXVkb0VsdCwgYm9vbCBhdXRob3JPbmx5ID0gdHJ1ZSkg
Y29uc3Q7CisgICAgICAgIFJlZlB0cjxDU1NSdWxlTGlzdD4gZ2V0TWF0Y2hlZENTU1J1bGVzKEVs
ZW1lbnQqLCBjb25zdCBTdHJpbmcmIHBzZXVkb0VsdCwgYm9vbCBhdXRob3JPbmx5ID0gdHJ1ZSkg
Y29uc3Q7CiAgICAgICAgIGRvdWJsZSBkZXZpY2VQaXhlbFJhdGlvKCkgY29uc3Q7CiAKLSAgICAg
ICAgUGFzc1JlZlB0cjxXZWJLaXRQb2ludD4gd2Via2l0Q29udmVydFBvaW50RnJvbVBhZ2VUb05v
ZGUoTm9kZSosIGNvbnN0IFdlYktpdFBvaW50KikgY29uc3Q7Ci0gICAgICAgIFBhc3NSZWZQdHI8
V2ViS2l0UG9pbnQ+IHdlYmtpdENvbnZlcnRQb2ludEZyb21Ob2RlVG9QYWdlKE5vZGUqLCBjb25z
dCBXZWJLaXRQb2ludCopIGNvbnN0OworICAgICAgICBSZWZQdHI8V2ViS2l0UG9pbnQ+IHdlYmtp
dENvbnZlcnRQb2ludEZyb21QYWdlVG9Ob2RlKE5vZGUqLCBjb25zdCBXZWJLaXRQb2ludCopIGNv
bnN0OworICAgICAgICBSZWZQdHI8V2ViS2l0UG9pbnQ+IHdlYmtpdENvbnZlcnRQb2ludEZyb21O
b2RlVG9QYWdlKE5vZGUqLCBjb25zdCBXZWJLaXRQb2ludCopIGNvbnN0OwogCiAgICAgICAgIFBh
Z2VDb25zb2xlQ2xpZW50KiBjb25zb2xlKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5j
cHAKaW5kZXggZmVhNTRlNGFmOWU3ZTM2ZTIzZjYzYTU3ZWYyMTI2MTcxMjZmNWUyMC4uZjI3NzQw
MjJhNDIzODdhYTQ4NTliOWM3OTIwMmFhYWZiNDQ3ZTljYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlv
bi5jcHAKQEAgLTEyNCwxNCArMTI0LDE0IEBAIFN0cmluZyBMb2NhdGlvbjo6b3JpZ2luKCkgY29u
c3QKICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwoKSktPnRvU3RyaW5nKCk7
CiB9CiAKLVBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gTG9jYXRpb246OmFuY2VzdG9yT3JpZ2lu
cygpIGNvbnN0CitSZWY8RE9NU3RyaW5nTGlzdD4gTG9jYXRpb246OmFuY2VzdG9yT3JpZ2lucygp
IGNvbnN0CiB7Ci0gICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9yaWdpbnMgPSBET01TdHJpbmdM
aXN0OjpjcmVhdGUoKTsKKyAgICBhdXRvIG9yaWdpbnMgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUo
KTsKICAgICBpZiAoIW1fZnJhbWUpCi0gICAgICAgIHJldHVybiBvcmlnaW5zLnJlbGVhc2UoKTsK
KyAgICAgICAgcmV0dXJuIG9yaWdpbnM7CiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX2ZyYW1l
LT50cmVlKCkucGFyZW50KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkucGFyZW50KCkp
CiAgICAgICAgIG9yaWdpbnMtPmFwcGVuZChmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmln
aW4oKS0+dG9TdHJpbmcoKSk7Ci0gICAgcmV0dXJuIG9yaWdpbnMucmVsZWFzZSgpOworICAgIHJl
dHVybiBvcmlnaW5zOwogfQogCiBTdHJpbmcgTG9jYXRpb246Omhhc2goKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Mb2NhdGlvbi5oCmluZGV4IDIwNGFlYmVlZTNlZjIyMzdiMmQxMWY2Y2VjODhjYzg4OTdlNmQy
NmQuLmM2ZTU5YTY5MzUxMWJjN2U5MDcyODZhMDI0MzYwMjc0OWQ4ZTA2ZDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0xvY2F0aW9uLmgKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIHRvU3Ry
aW5nKCkgY29uc3QgeyByZXR1cm4gaHJlZigpOyB9CiAKLSAgICBQYXNzUmVmUHRyPERPTVN0cmlu
Z0xpc3Q+IGFuY2VzdG9yT3JpZ2lucygpIGNvbnN0OworICAgIFJlZjxET01TdHJpbmdMaXN0PiBh
bmNlc3Rvck9yaWdpbnMoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBMb2NhdGlv
bihGcmFtZSopOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>