<?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>171831</bug_id>
          
          <creation_ts>2017-05-08 14:45:57 -0700</creation_ts>
          <short_desc>Modernize WebKit2 code</short_desc>
          <delta_ts>2017-05-08 19:23:02 -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>New Bugs</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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1306066</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-05-08 14:45:57 -0700</bug_when>
    <thetext>Modernize WebKit2 code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306070</commentid>
    <comment_count>1</comment_count>
      <attachid>309416</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-05-08 14:49:23 -0700</bug_when>
    <thetext>Created attachment 309416
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306074</commentid>
    <comment_count>2</comment_count>
      <attachid>309416</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-08 14:54:33 -0700</bug_when>
    <thetext>Comment on attachment 309416
Patch

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

r=me

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:3045
&gt; +    Function&lt;void(CallbackBase::Error)&gt; didForceRepaintCallback = [this, callback = WTFMove(callback)](CallbackBase::Error error) mutable {

Could use auto no ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306075</commentid>
    <comment_count>3</comment_count>
      <attachid>309416</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-05-08 14:55:02 -0700</bug_when>
    <thetext>Comment on attachment 309416
Patch

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

&gt; Source/WebKit2/ChangeLog:3
&gt; +        Modernize WebKit2 code

Modernize how? A bit more detail would be nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306125</commentid>
    <comment_count>4</comment_count>
      <attachid>309434</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-05-08 16:12:50 -0700</bug_when>
    <thetext>Created attachment 309434
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306126</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-05-08 16:13:46 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #2)
&gt; Comment on attachment 309416 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=309416&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:3045
&gt; &gt; +    Function&lt;void(CallbackBase::Error)&gt; didForceRepaintCallback = [this, callback = WTFMove(callback)](CallbackBase::Error error) mutable {
&gt; 
&gt; Could use auto no ?
No, for some reason that causes a compiler error.  Something about constructors and lambdas and copies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306167</commentid>
    <comment_count>6</comment_count>
      <attachid>309445</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-05-08 17:24:57 -0700</bug_when>
    <thetext>Created attachment 309445
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1306216</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-05-08 19:23:02 -0700</bug_when>
    <thetext>http://trac.webkit.org/r216473</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309416</attachid>
            <date>2017-05-08 14:49:23 -0700</date>
            <delta_ts>2017-05-08 16:12:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171831-20170508144922.patch</filename>
            <type>text/plain</type>
            <size>51847</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNjQ1MikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBACisyMDE3LTA1LTA4ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9kZXJuaXpl
IFdlYktpdDIgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTcxODMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwOgorICAgICAgICAoV0tQYWdl
R3JvdXBDcmVhdGVXaXRoSWRlbnRpZmllcik6CisgICAgICAgICogVUlQcm9jZXNzL0dlbmVyaWND
YWxsYmFjay5oOgorICAgICAgICAoV2ViS2l0OjpHZW5lcmljQ2FsbGJhY2s6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkNhbGxiYWNrTWFwOjpwdXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9T
dGF0aXN0aWNzUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0YXRpc3RpY3NSZXF1ZXN0
OjpTdGF0aXN0aWNzUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1N0YXRpc3RpY3NSZXF1
ZXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OlN0YXRpc3RpY3NSZXF1ZXN0OjpjcmVhdGUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9UZXh0Q2hlY2tlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9UZXh0
Q2hlY2tlckNvbXBsZXRpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpUZXh0Q2hlY2tlckNvbXBs
ZXRpb246OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1RleHRDaGVja2VyQ29tcGxldGlv
bi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb2xvclBpY2tlci5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb2xvclBpY2tlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dEluamVjdGVkQnVu
ZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dEluamVjdGVkQnVuZGxl
Q2xpZW50OjpnZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5Lmg6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbnRleHRNZW51TGlzdGVuZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29v
a2llTWFuYWdlclByb3h5OjpjcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb29raWVN
YW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRWRpdENvbW1hbmRQcm94eS5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0Q29tbWFuZFByb3h5OjpjcmVhdGUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkuaDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5OjpjcmVhdGUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJGcmFtZUxpc3RlbmVyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViRnJhbWVQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVByb3h5OjpjcmVh
dGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpjcmVhdGUpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJJY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJY29uRGF0YWJhc2U6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkljb25EYXRhYmFzZTo6aWNvbkRhdGFGb3JQYWdl
VVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUdyb3VwOjpjcmVh
dGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpm
b3JjZVJlcGFpbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdl
c0ZvclByaW50aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3UmVjdFRv
SW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYXdQYWdlc1RvUERGKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2FsbEFmdGVyTmV4dFByZXNlbnRhdGlvblVw
ZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvVGV4dENoZWNrZXJJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlRleHRDaGVj
a2VyOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9U
ZXh0Q2hlY2tlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6VGV4dENoZWNrZXI6OnJlcXVlc3RD
aGVja2luZ09mU3RyaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLRnVsbFNj
cmVlbldpbmRvd0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIgZmluaXNoZWRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbjpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tOgorICAgICAgICAoLVtXS1ByaW50aW5nVmll
dyBfcHJlcGFyZVBERkRhdGFGb3JQcmludGluZ09uU2Vjb25kYXJ5VGhyZWFkXSk6CisgICAgICAg
ICgtW1dLUHJpbnRpbmdWaWV3IF9kcmF3UHJldmlldzpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXRzY2FwZVBsdWdpbjo6bG9hZFVSTCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
OjptYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHNjYXBlUGx1Z2luU3RyZWFtOjpOZXRzY2FwZVBsdWdpblN0cmVhbSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmg6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luU3RyZWFtOjpjcmVhdGUpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OnRvRm9ybURhdGEpOgorCiAyMDE3LTA1LTA4ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVkdWNlIFBhc3NSZWZQ
dHIgdXNlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5o
CShyZXZpc2lvbiAyMTY0NDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0Nh
bGxiYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEdlbmVyaWNDYWxsYmFja19oCi0j
ZGVmaW5lIEdlbmVyaWNDYWxsYmFja19oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFQSUVy
cm9yLmgiCiAjaW5jbHVkZSAiQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCkBAIC0zNCw3ICsz
Myw2IEBACiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCkBA
IC05NSw5ICs5Myw5IEBAIGNsYXNzIEdlbmVyaWNDYWxsYmFjayA6IHB1YmxpYyBDYWxsYmFja0IK
IHB1YmxpYzoKICAgICB0eXBlZGVmIEZ1bmN0aW9uPHZvaWQgKFQuLi4sIEVycm9yKT4gQ2FsbGJh
Y2tGdW5jdGlvbjsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdlbmVyaWNDYWxsYmFjaz4gY3Jl
YXRlKENhbGxiYWNrRnVuY3Rpb24mJiBjYWxsYmFjaywgY29uc3QgUHJvY2Vzc1Rocm90dGxlcjo6
QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4mIGFjdGl2aXR5VG9rZW4gPSBudWxscHRyKQorICAgIHN0
YXRpYyBSZWY8R2VuZXJpY0NhbGxiYWNrPiBjcmVhdGUoQ2FsbGJhY2tGdW5jdGlvbiYmIGNhbGxi
YWNrLCBjb25zdCBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiYgYWN0
aXZpdHlUb2tlbiA9IG51bGxwdHIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEdlbmVyaWNDYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSwgYWN0aXZpdHlUb2tlbikpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHZW5lcmljQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFj
ayksIGFjdGl2aXR5VG9rZW4pKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5HZW5lcmljQ2FsbGJh
Y2soKQpAQCAtMTcyLDEyICsxNzAsMTIgQEAgdm9pZCBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAoSGFz
aE1hcDx1aW50NgogCiBjbGFzcyBDYWxsYmFja01hcCB7CiBwdWJsaWM6Ci0gICAgdWludDY0X3Qg
cHV0KFBhc3NSZWZQdHI8Q2FsbGJhY2tCYXNlPiBjYWxsYmFjaykKKyAgICB1aW50NjRfdCBwdXQo
UmVmPENhbGxiYWNrQmFzZT4mJiBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9t
YXAuY29udGFpbnMoY2FsbGJhY2stPmNhbGxiYWNrSUQoKSkpOwogCiAgICAgICAgIHVpbnQ2NF90
IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwotICAgICAgICBtX21hcC5zZXQo
Y2FsbGJhY2tJRCwgY2FsbGJhY2spOworICAgICAgICBtX21hcC5zZXQoY2FsbGJhY2tJRCwgV1RG
TW92ZShjYWxsYmFjaykpOwogICAgICAgICByZXR1cm4gY2FsbGJhY2tJRDsKICAgICB9CiAKQEAg
LTE5MiwxNyArMTkwLDE3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUuLi4gVD4KLSAgICB1aW50NjRfdCBwdXQoc3RkOjpmdW5jdGlvbjx2b2lkIChULi4uKT4gZnVu
Y3Rpb24sIGNvbnN0IFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuJiBh
Y3Rpdml0eVRva2VuKQorICAgIHVpbnQ2NF90IHB1dChzdGQ6OmZ1bmN0aW9uPHZvaWQoVC4uLik+
JiYgZnVuY3Rpb24sIGNvbnN0IFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRv
a2VuJiBhY3Rpdml0eVRva2VuKQogICAgIHsKICAgICAgICAgYXV0byBjYWxsYmFjayA9IEdlbmVy
aWNDYWxsYmFja1R5cGU8c2l6ZW9mLi4uKFQpLCBULi4uPjo6dHlwZTo6Y3JlYXRlKFdURk1vdmUo
ZnVuY3Rpb24pLCBhY3Rpdml0eVRva2VuKTsKLSAgICAgICAgcmV0dXJuIHB1dChjYWxsYmFjayk7
CisgICAgICAgIHJldHVybiBwdXQoV1RGTW92ZShjYWxsYmFjaykpOwogICAgIH0KIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lLi4uIFQ+Ci0gICAgdWludDY0X3QgcHV0KEZ1bmN0aW9uPHZvaWQgKFQu
Li4pPiYmIGZ1bmN0aW9uLCBjb25zdCBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbiYgYWN0aXZpdHlUb2tlbikKKyAgICB1aW50NjRfdCBwdXQoRnVuY3Rpb248dm9pZChU
Li4uKT4mJiBmdW5jdGlvbiwgY29uc3QgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4mIGFjdGl2aXR5VG9rZW4pCiAgICAgewogICAgICAgICBhdXRvIGNhbGxiYWNrID0g
R2VuZXJpY0NhbGxiYWNrVHlwZTxzaXplb2YuLi4oVCksIFQuLi4+Ojp0eXBlOjpjcmVhdGUoV1RG
TW92ZShmdW5jdGlvbiksIGFjdGl2aXR5VG9rZW4pOwotICAgICAgICByZXR1cm4gcHV0KGNhbGxi
YWNrKTsKKyAgICAgICAgcmV0dXJuIHB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgfQogCiAg
ICAgdGVtcGxhdGU8Y2xhc3MgVD4KQEAgLTIyNSw1ICsyMjMsMyBAQCBwcml2YXRlOgogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBHZW5lcmljQ2FsbGJhY2tfaApJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0YXRpc3RpY3NSZXF1ZXN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RhdGlzdGljc1JlcXVlc3QuY3BwCShy
ZXZpc2lvbiAyMTY0NDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RhdGlzdGljc1Jl
cXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSw4IEBACiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1TdGF0aXN0aWNzUmVxdWVzdDo6U3RhdGlzdGljc1JlcXVlc3QoUGFzc1JlZlB0
cjxEaWN0aW9uYXJ5Q2FsbGJhY2s+IGNhbGxiYWNrKQotICAgIDogbV9jYWxsYmFjayhjYWxsYmFj
aykKK1N0YXRpc3RpY3NSZXF1ZXN0OjpTdGF0aXN0aWNzUmVxdWVzdChSZWY8RGljdGlvbmFyeUNh
bGxiYWNrPiYmIGNhbGxiYWNrKQorICAgIDogbV9jYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkK
IHsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0YXRpc3RpY3NSZXF1ZXN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0YXRpc3RpY3NSZXF1
ZXN0LmgJKHJldmlzaW9uIDIxNjQ0OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdGF0
aXN0aWNzUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBTdGF0aXN0aWNzUmVx
dWVzdF9oCi0jZGVmaW5lIFN0YXRpc3RpY3NSZXF1ZXN0X2gKKyNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiR2VuZXJpY0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiU3RhdGlzdGljc0RhdGEuaCIKQEAg
LTQ0LDkgKzQzLDkgQEAgZW51bSBTdGF0aXN0aWNzUmVxdWVzdFR5cGUgewogCiBjbGFzcyBTdGF0
aXN0aWNzUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFN0YXRpc3RpY3NSZXF1ZXN0PiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3RhdGlzdGljc1JlcXVlc3Q+IGNyZWF0ZShQ
YXNzUmVmUHRyPERpY3Rpb25hcnlDYWxsYmFjaz4gY2FsbGJhY2spCisgICAgc3RhdGljIFJlZjxT
dGF0aXN0aWNzUmVxdWVzdD4gY3JlYXRlKFJlZjxEaWN0aW9uYXJ5Q2FsbGJhY2s+JiYgY2FsbGJh
Y2spCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0YXRpc3RpY3NSZXF1ZXN0
KGNhbGxiYWNrKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0YXRpc3RpY3NSZXF1
ZXN0KFdURk1vdmUoY2FsbGJhY2spKSk7CiAgICAgfQogCiAgICAgflN0YXRpc3RpY3NSZXF1ZXN0
KCk7CkBAIC01Niw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBsZXRlZFJlcXVlc3Qo
dWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdGF0aXN0aWNzRGF0YSYpOwogCiBwcml2YXRlOgot
ICAgIFN0YXRpc3RpY3NSZXF1ZXN0KFBhc3NSZWZQdHI8RGljdGlvbmFyeUNhbGxiYWNrPik7Cisg
ICAgU3RhdGlzdGljc1JlcXVlc3QoUmVmPERpY3Rpb25hcnlDYWxsYmFjaz4mJik7CiAKICAgICBI
YXNoU2V0PHVpbnQ2NF90PiBtX291dHN0YW5kaW5nUmVxdWVzdHM7CiAgICAgUmVmUHRyPERpY3Rp
b25hcnlDYWxsYmFjaz4gbV9jYWxsYmFjazsKQEAgLTY1LDUgKzY0LDMgQEAgcHJpdmF0ZToKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gU3RhdGlzdGljc1JlcXVlc3Rf
aApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1RleHRDaGVja2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1RleHRDaGVja2VyLmgJKHJldmlzaW9uIDIx
NjQ0OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9UZXh0Q2hlY2tlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBUZXh0Q2hlY2tlcl9oCi0jZGVmaW5lIFRleHRDaGVja2VyX2gK
KyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiVGV4dENoZWNrZXJDb21wbGV0aW9uLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9FZGl0b3JDbGllbnQuaD4KQEAgLTg2LDkgKzg1LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGludDY0X3Qgc3BlbGxEb2N1bWVudFRh
ZywgY29uc3QgU3RyaW5nJiB3b3JkLCBjb25zdCBTdHJpbmcmIGNvbnRleHQsIGludDMyX3QgaW5z
ZXJ0aW9uUG9pbnQsIFZlY3RvcjxTdHJpbmc+JiBndWVzc2VzLCBib29sIGluaXRpYWxDYXBpdGFs
aXphdGlvbkVuYWJsZWQpOwogICAgIHN0YXRpYyB2b2lkIGxlYXJuV29yZChpbnQ2NF90IHNwZWxs
RG9jdW1lbnRUYWcsIGNvbnN0IFN0cmluZyYgd29yZCk7CiAgICAgc3RhdGljIHZvaWQgaWdub3Jl
V29yZChpbnQ2NF90IHNwZWxsRG9jdW1lbnRUYWcsIGNvbnN0IFN0cmluZyYgd29yZCk7Ci0gICAg
c3RhdGljIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoUGFzc1JlZlB0cjxUZXh0Q2hlY2tl
ckNvbXBsZXRpb24+LCBpbnQzMl90IGluc2VydGlvblBvaW50KTsKKyAgICBzdGF0aWMgdm9pZCBy
ZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhSZWY8VGV4dENoZWNrZXJDb21wbGV0aW9uPiYmLCBpbnQz
Ml90IGluc2VydGlvblBvaW50KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5k
aWYgLy8gVGV4dENoZWNrZXJfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1RleHRD
aGVja2VyQ29tcGxldGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1RleHRDaGVja2VyQ29tcGxldGlvbi5jcHAJKHJldmlzaW9uIDIxNjQ0OCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9UZXh0Q2hlY2tlckNvbXBsZXRpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw5ICszMCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotUGFzc1JlZlB0cjxUZXh0Q2hlY2tlckNvbXBsZXRpb24+IFRleHRDaGVj
a2VyQ29tcGxldGlvbjo6Y3JlYXRlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgVGV4dENoZWNr
aW5nUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBXZWJQYWdlUHJveHkqIHBhZ2UpCitSZWY8VGV4
dENoZWNrZXJDb21wbGV0aW9uPiBUZXh0Q2hlY2tlckNvbXBsZXRpb246OmNyZWF0ZSh1aW50NjRf
dCByZXF1ZXN0SUQsIGNvbnN0IFRleHRDaGVja2luZ1JlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwg
V2ViUGFnZVByb3h5KiBwYWdlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dENoZWNr
ZXJDb21wbGV0aW9uKHJlcXVlc3RJRCwgcmVxdWVzdERhdGEsIHBhZ2UpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBUZXh0Q2hlY2tlckNvbXBsZXRpb24ocmVxdWVzdElELCByZXF1ZXN0RGF0
YSwgcGFnZSkpOwogfQogCiBUZXh0Q2hlY2tlckNvbXBsZXRpb246OlRleHRDaGVja2VyQ29tcGxl
dGlvbih1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFRleHRDaGVja2luZ1JlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwgV2ViUGFnZVByb3h5KiBwYWdlKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1RleHRDaGVja2VyQ29tcGxldGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9UZXh0Q2hlY2tlckNvbXBsZXRpb24uaAkocmV2aXNpb24gMjE2NDQ4KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1RleHRDaGVja2VyQ29tcGxldGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFRleHRD
aGVja2VyQ29tcGxldGlvbl9oCi0jZGVmaW5lIFRleHRDaGVja2VyQ29tcGxldGlvbl9oCisjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
VGV4dENoZWNraW5nLmg+CkBAIC0zNCw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBUZXh0Q2hlY2tlckNvbXBsZXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0Q2hlY2tl
ckNvbXBsZXRpb24+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0Q2hlY2tl
ckNvbXBsZXRpb24+IGNyZWF0ZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdlYkNvcmU6OlRl
eHRDaGVja2luZ1JlcXVlc3REYXRhJiwgV2ViUGFnZVByb3h5Kik7CisgICAgc3RhdGljIFJlZjxU
ZXh0Q2hlY2tlckNvbXBsZXRpb24+IGNyZWF0ZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdl
YkNvcmU6OlRleHRDaGVja2luZ1JlcXVlc3REYXRhJiwgV2ViUGFnZVByb3h5Kik7CiAKICAgICBj
b25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YSYgdGV4dENoZWNraW5nUmVxdWVz
dERhdGEoKSBjb25zdDsKICAgICBpbnQ2NF90IHNwZWxsRG9jdW1lbnRUYWcoKTsKQEAgLTUwLDUg
KzQ5LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYg
Ly8gVGV4dENoZWNrZXJDb21wbGV0aW9uX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb2xvclBpY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb2xvclBpY2tlci5oCShyZXZpc2lvbiAyMTY0NDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29sb3JQaWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2Vi
Q29sb3JQaWNrZXJfaAotI2RlZmluZSBXZWJDb2xvclBpY2tlcl9oCisjcHJhZ21hIG9uY2UKIAog
I2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQogCkBAIC01MCw5ICs0OSw5IEBAIHB1YmxpYzoK
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEVuZENvbG9yUGlja2VyKCkgPSAwOwogICAgIH07CiAK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb2xvclBpY2tlcj4gY3JlYXRlKENsaWVudCogY2xp
ZW50KQorICAgIHN0YXRpYyBSZWY8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZShDbGllbnQqIGNsaWVu
dCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29sb3JQaWNrZXIoY2xp
ZW50KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkNvbG9yUGlja2VyKGNsaWVu
dCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgfldlYkNvbG9yUGlja2VyKCk7CkBAIC03Miw1ICs3
MSwzIEBAIHByb3RlY3RlZDoKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5B
QkxFKElOUFVUX1RZUEVfQ09MT1IpCi0KLSNlbmRpZiAvLyBXZWJDb2xvclBpY2tlcl9oCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyMTY0NDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDkg
KzMxLDkgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NSZWZQdHI8V2ViQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcz4gV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlKFdlYlByb2Nl
c3NQcm94eSogcHJvY2VzcykKK1JlZjxXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBXZWJDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogewot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhwcm9jZXNz
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhw
cm9jZXNzKSk7CiB9CiAKIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OldlYkNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCShyZXZp
c2lvbiAyMTY0NDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzX2gKLSNkZWZpbmUgV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzc19oCisjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIldlYkNvbm5lY3Rpb24uaCIKIApAQCAtMzQsNyArMzMsNyBAQCBj
bGFzcyBXZWJQcm9jZXNzUHJveHk7CiAKIGNsYXNzIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mg
OiBwdWJsaWMgV2ViQ29ubmVjdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
V2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY3JlYXRlKFdlYlByb2Nlc3NQcm94eSopOworICAg
IHN0YXRpYyBSZWY8V2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gY3JlYXRlKFdlYlByb2Nlc3NQ
cm94eSopOwogCiAgICAgV2ViUHJvY2Vzc1Byb3h5KiB3ZWJQcm9jZXNzUHJveHkoKSBjb25zdCB7
IHJldHVybiBtX3Byb2Nlc3M7IH0KIApAQCAtNTYsNSArNTUsMyBAQCBwcml2YXRlOgogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRC
dW5kbGVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCShyZXZpc2lvbiAyMTY0NDgpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTIsMTAgKzUyLDEwIEBAIHZvaWQgV2ViQ29udGV4dEluamVj
dGVkQnVuZGxlQ2xpZW50OjpkaWQKICAgICByZXR1cm5EYXRhID0gYWRvcHRSZWYodG9JbXBsKHJl
dHVybkRhdGFSZWYpKTsKIH0KIAotUGFzc1JlZlB0cjxBUEk6Ok9iamVjdD4gV2ViQ29udGV4dElu
amVjdGVkQnVuZGxlQ2xpZW50OjpnZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRh
dGEoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQorUmVmUHRyPEFQSTo6T2JqZWN0PiBXZWJD
b250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQ6OmdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRp
b25Vc2VyRGF0YShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCiB7CiAgICAgaWYgKCFtX2Ns
aWVudC5nZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEpCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBhZG9wdFJlZih0
b0ltcGwobV9jbGllbnQuZ2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhKHRv
QVBJKHByb2Nlc3NQb29sKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSkpOwogfQpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0
ZWRCdW5kbGVDbGllbnQuaAkocmV2aXNpb24gMjE2NDQ4KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmbmRlZiBXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRfaAotI2RlZmluZSBXZWJD
b250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJB
UElDbGllbnQuaCIKICNpbmNsdWRlICJXS0NvbnRleHQuaCIKQEAgLTQ2LDkgKzQ1LDcgQEAgY2xh
c3MgV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50IDogcAogcHVibGljOgogICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2ViUHJvY2Vzc1Bvb2wqLCBjb25z
dCBTdHJpbmcmLCBBUEk6Ok9iamVjdCopOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNocm9ub3Vz
TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJQcm9jZXNzUG9vbCosIGNvbnN0IFN0cmluZyYs
IEFQSTo6T2JqZWN0KiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgcmV0dXJuRGF0YSk7Ci0gICAgUGFz
c1JlZlB0cjxBUEk6Ok9iamVjdD4gZ2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJE
YXRhKFdlYlByb2Nlc3NQb29sKik7CisgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiBnZXRJbmplY3Rl
ZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEoV2ViUHJvY2Vzc1Bvb2wqKTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViQ29udGV4dEluamVjdGVkQnVuZGxl
Q2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0TWVudUxp
c3RlbmVyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29udGV4dE1lbnVMaXN0ZW5lclByb3h5LmgJKHJldmlzaW9uIDIxNjQ0OCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkuaAkod29ya2luZyBj
b3B5KQpAQCAtMzgsOSArMzgsOSBAQCBjbGFzcyBXZWJDb250ZXh0TWVudVByb3h5TWFjOwogCiBj
bGFzcyBXZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBs
PEFQSTo6T2JqZWN0OjpUeXBlOjpDb250ZXh0TWVudUxpc3RlbmVyPiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5PiBjcmVhdGUoV2Vi
Q29udGV4dE1lbnVQcm94eSogY29udGV4dE1lbnVNYWMpCisgICAgc3RhdGljIFJlZjxXZWJDb250
ZXh0TWVudUxpc3RlbmVyUHJveHk+IGNyZWF0ZShXZWJDb250ZXh0TWVudVByb3h5KiBjb250ZXh0
TWVudU1hYykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29udGV4dE1l
bnVMaXN0ZW5lclByb3h5KGNvbnRleHRNZW51TWFjKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYkNvbnRleHRNZW51TGlzdGVuZXJQcm94eShjb250ZXh0TWVudU1hYykpOwogICAg
IH0KIAogICAgIHZpcnR1YWwgfldlYkNvbnRleHRNZW51TGlzdGVuZXJQcm94eSgpOwpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5j
cHAJKHJldmlzaW9uIDIxNjQ0OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29r
aWVNYW5hZ2VyUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw5ICs0NCw5IEBAIGNvbnN0
IGNoYXIqIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c3VwcGwKICAgICByZXR1cm4gIldlYkNvb2tp
ZU1hbmFnZXJQcm94eSI7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29va2llTWFuYWdlclByb3h5PiBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wp
CitSZWY8V2ViQ29va2llTWFuYWdlclByb3h5PiBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmNyZWF0
ZShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJDb29raWVNYW5hZ2VyUHJveHkocHJvY2Vzc1Bvb2wpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJDb29raWVNYW5hZ2VyUHJveHkocHJvY2Vzc1Bvb2wpKTsKIH0KIAogV2ViQ29v
a2llTWFuYWdlclByb3h5OjpXZWJDb29raWVNYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqIHBy
b2Nlc3NQb29sKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFn
ZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29r
aWVNYW5hZ2VyUHJveHkuaAkocmV2aXNpb24gMjE2NDQ4KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsy
Myw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRl
ZiBXZWJDb29raWVNYW5hZ2VyUHJveHlfaAotI2RlZmluZSBXZWJDb29raWVNYW5hZ2VyUHJveHlf
aAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJHZW5l
cmljQ2FsbGJhY2suaCIKQEAgLTYxLDcgKzYwLDcgQEAgY2xhc3MgV2ViQ29va2llTWFuYWdlclBy
b3h5IDogcHVibGljIEFQSQogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVt
ZW50TmFtZSgpOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29va2llTWFuYWdlclByb3h5
PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wqKTsKKyAgICBzdGF0aWMgUmVmPFdlYkNvb2tpZU1hbmFn
ZXJQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sKik7CiAgICAgdmlydHVhbCB+V2ViQ29va2ll
TWFuYWdlclByb3h5KCk7CiAKICAgICB2b2lkIGluaXRpYWxpemVDbGllbnQoY29uc3QgV0tDb29r
aWVNYW5hZ2VyQ2xpZW50QmFzZSopOwpAQCAtMTUwLDUgKzE0OSwzIEBAIHByaXZhdGU6CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYkNvb2tpZU1hbmFnZXJQcm94
eV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRWRpdENvbW1hbmRQcm94eS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFBy
b3h5LmgJKHJldmlzaW9uIDIxNjQ0OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJF
ZGl0Q29tbWFuZFByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkVkaXRDb21t
YW5kUHJveHlfaAotI2RlZmluZSBXZWJFZGl0Q29tbWFuZFByb3h5X2gKKyNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0QWN0aW9uLmg+
CkBAIC0zOCw5ICszNyw5IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgV2ViRWRpdENv
bW1hbmRQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkVk
aXRDb21tYW5kUHJveHk+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJFZGl0
Q29tbWFuZFByb3h5PiBjcmVhdGUodWludDY0X3QgY29tbWFuZElELCBXZWJDb3JlOjpFZGl0QWN0
aW9uIGVkaXRBY3Rpb24sIFdlYlBhZ2VQcm94eSogcGFnZSkKKyAgICBzdGF0aWMgUmVmPFdlYkVk
aXRDb21tYW5kUHJveHk+IGNyZWF0ZSh1aW50NjRfdCBjb21tYW5kSUQsIFdlYkNvcmU6OkVkaXRB
Y3Rpb24gZWRpdEFjdGlvbiwgV2ViUGFnZVByb3h5KiBwYWdlKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJFZGl0Q29tbWFuZFByb3h5KGNvbW1hbmRJRCwgZWRpdEFjdGlv
biwgcGFnZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJFZGl0Q29tbWFuZFBy
b3h5KGNvbW1hbmRJRCwgZWRpdEFjdGlvbiwgcGFnZSkpOwogICAgIH0KICAgICB+V2ViRWRpdENv
bW1hbmRQcm94eSgpOwogCkBAIC02Myw1ICs2MiwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYkVkaXRDb21tYW5kUHJveHlfaApJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGb3JtU3VibWlzc2lv
bkxpc3RlbmVyUHJveHkuaAkocmV2aXNpb24gMjE2NDQ4KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Miw5ICs0Miw5IEBAIGNsYXNzIFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eSA6IHAK
IHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZTo6Rm9ybVN1Ym1p
c3Npb25MaXN0ZW5lcjsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkZvcm1TdWJtaXNzaW9u
TGlzdGVuZXJQcm94eT4gY3JlYXRlKFdlYkZyYW1lUHJveHkqIGZyYW1lLCB1aW50NjRfdCBsaXN0
ZW5lcklEKQorICAgIHN0YXRpYyBSZWY8V2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5PiBj
cmVhdGUoV2ViRnJhbWVQcm94eSogZnJhbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94
eShmcmFtZSwgbGlzdGVuZXJJRCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJG
b3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkoZnJhbWUsIGxpc3RlbmVySUQpKTsKICAgICB9CiAK
ICAgICB2b2lkIGNvbnRpbnVlU3VibWlzc2lvbigpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkZyYW1lTGlzdGVuZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJGcmFtZUxpc3RlbmVyUHJveHkuaAkocmV2aXNpb24gMjE2NDQ4KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lTGlzdGVuZXJQcm94eS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiQVBJTmF2aWdhdGlvbi5oIgog
I2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBl
cy5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkZyYW1lUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViRnJhbWVQcm94eS5oCShyZXZpc2lvbiAyMTY0NDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViRnJhbWVQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HKQpAQCAtNTksOSArNTgsOSBAQCB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxB
UEk6OkRhdGEqPiBEYXRhCiAKIGNsYXNzIFdlYkZyYW1lUHJveHkgOiBwdWJsaWMgQVBJOjpPYmpl
Y3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpGcmFtZT4gewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFdlYkZyYW1lUHJveHk+IGNyZWF0ZShXZWJQYWdlUHJveHkqIHBhZ2UsIHVpbnQ2
NF90IGZyYW1lSUQpCisgICAgc3RhdGljIFJlZjxXZWJGcmFtZVByb3h5PiBjcmVhdGUoV2ViUGFn
ZVByb3h5KiBwYWdlLCB1aW50NjRfdCBmcmFtZUlEKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBXZWJGcmFtZVByb3h5KHBhZ2UsIGZyYW1lSUQpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViRnJhbWVQcm94eShwYWdlLCBmcmFtZUlEKSk7CiAgICAgfQogCiAg
ICAgdmlydHVhbCB+V2ViRnJhbWVQcm94eSgpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcAkocmV2aXNpb24g
MjE2NDQ4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw5ICszOSw5IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc1JlZlB0cjxXZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5PiBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUGFn
ZVByb3h5JiBwYWdlLCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50JiBjbGllbnQpCitS
ZWY8V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eT4gV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6
Y3JlYXRlKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVu
dCYgY2xpZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eShwYWdlLCBjbGllbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJGdWxs
U2NyZWVuTWFuYWdlclByb3h5KHBhZ2UsIGNsaWVudCkpOwogfQogCiBXZWJGdWxsU2NyZWVuTWFu
YWdlclByb3h5OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwg
V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCYgY2xpZW50KQpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oCShy
ZXZpc2lvbiAyMTY0NDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMyArMjMsMTEgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHlfaAotI2RlZmluZSBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5X2gKKyNw
cmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogCiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNTUsNyArNTMs
NyBAQCBwdWJsaWM6CiAKIGNsYXNzIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkgOiBwdWJsaWMg
UmVmQ291bnRlZDxXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5PiwgcHVibGljIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5PiBjcmVhdGUoV2ViUGFnZVByb3h5JiwgV2ViRnVsbFNjcmVlbk1hbmFnZXJQ
cm94eUNsaWVudCYpOworICAgIHN0YXRpYyBSZWY8V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eT4g
Y3JlYXRlKFdlYlBhZ2VQcm94eSYsIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQmKTsK
ICAgICB2aXJ0dWFsIH5XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5KCk7CiAKICAgICB2b2lkIGlu
dmFsaWRhdGUoKTsKQEAgLTkxLDUgKzg5LDMgQEAgcHJpdmF0ZToKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotCi0jZW5kaWYgLy8gV2Vi
RnVsbFNjcmVlbk1hbmFnZXJQcm94eV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAJKHJldmlzaW9uIDIx
NjQ0OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDkgKzM3LDkgQEAgY29uc3QgY2hhciogV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OgogICAgIHJldHVybiAiV2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHkiOwogfQogCi1QYXNzUmVmUHRyPFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PiBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNz
UG9vbCkKK1JlZjxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4gV2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eShwcm9jZXNzUG9vbCkp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5KHBy
b2Nlc3NQb29sKSk7CiB9CiAKIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHkuaAkocmV2aXNpb24gMjE2NDQ4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5X2gKLSNkZWZpbmUgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHlfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJD
b25uZWN0aW9uLmgiCkBAIC00Myw3ICs0Miw3IEBAIGNsYXNzIFdlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5IDogcHVibGkKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVu
dE5hbWUoKTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wqKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wqKTsKIAogICAgIHZvaWQgaW5p
dGlhbGl6ZVByb3ZpZGVyKGNvbnN0IFdLR2VvbG9jYXRpb25Qcm92aWRlckJhc2UqKTsKIApAQCAt
ODMsNSArODIsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNl
bmRpZiAvLyBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmNwcAkocmV2aXNpb24gMjE2NDQ4KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDkgKzM5LDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1QYXNzUmVmUHRyPFdlYkljb25EYXRhYmFzZT4gV2ViSWNvbkRhdGFiYXNl
OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQorUmVmPFdlYkljb25EYXRhYmFz
ZT4gV2ViSWNvbkRhdGFiYXNlOjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQog
ewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViSWNvbkRhdGFiYXNlKCpwcm9jZXNzUG9vbCkp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkljb25EYXRhYmFzZSgqcHJvY2Vzc1Bvb2wp
KTsKIH0KIAogV2ViSWNvbkRhdGFiYXNlOjp+V2ViSWNvbkRhdGFiYXNlKCkKQEAgLTMxNSw3ICsz
MTUsNyBAQCB2b2lkIFdlYkljb25EYXRhYmFzZTo6c2V0UHJpdmF0ZUJyb3dzaW5nCiAgICAgICAg
IG1faWNvbkRhdGFiYXNlSW1wbC0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChwcml2YXRlQnJv
d3NpbmdFbmFibGVkKTsKIH0KIAotUGFzc1JlZlB0cjxBUEk6OkRhdGE+IFdlYkljb25EYXRhYmFz
ZTo6aWNvbkRhdGFGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCkKK1JlZlB0cjxBUEk6
OkRhdGE+IFdlYkljb25EYXRhYmFzZTo6aWNvbkRhdGFGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYg
cGFnZVVSTCkKIHsKICAgICBhdXRvKiBpbWFnZSA9IGltYWdlRm9yUGFnZVVSTChwYWdlVVJMKTsK
ICAgICBpZiAoIWltYWdlKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkljb25E
YXRhYmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJY29u
RGF0YWJhc2UuaAkocmV2aXNpb24gMjE2NDQ4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkljb25EYXRhYmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIGNsYXNz
IFdlYlByb2Nlc3NQb29sOwogCiBjbGFzcyBXZWJJY29uRGF0YWJhc2UgOiBwdWJsaWMgQVBJOjpP
YmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpJY29uRGF0YWJhc2U+LCBwcml2YXRlIFdlYkNv
cmU6Okljb25EYXRhYmFzZUNsaWVudCwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSWNvbkRhdGFiYXNlPiBjcmVhdGUoV2Vi
UHJvY2Vzc1Bvb2wqKTsKKyAgICBzdGF0aWMgUmVmPFdlYkljb25EYXRhYmFzZT4gY3JlYXRlKFdl
YlByb2Nlc3NQb29sKik7CiAgICAgdmlydHVhbCB+V2ViSWNvbkRhdGFiYXNlKCk7CiAKICAgICB2
b2lkIGludmFsaWRhdGUoKTsKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogCiAgICAgV2ViQ29y
ZTo6SW1hZ2UqIGltYWdlRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiBpY29uU2l6ZSA9IFdlYkNvcmU6OkludFNpemUoMzIsIDMyKSk7CiAgICAgV2ViQ29y
ZTo6TmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIGljb25TaXplID0gV2ViQ29yZTo6SW50U2l6ZSgzMiwgMzIp
KTsKLSAgICBQYXNzUmVmUHRyPEFQSTo6RGF0YT4gaWNvbkRhdGFGb3JQYWdlVVJMKGNvbnN0IFN0
cmluZyYgcGFnZVVSTCk7CisgICAgUmVmUHRyPEFQSTo6RGF0YT4gaWNvbkRhdGFGb3JQYWdlVVJM
KGNvbnN0IFN0cmluZyYgcGFnZVVSTCk7CiAKICAgICBib29sIGlzT3BlbigpOwogICAgIGJvb2wg
aXNVcmxJbXBvcnRDb21wbGV0ZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwCShyZXZpc2lvbiAy
MTY0NDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNN
YW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsOSArMzcsOSBAQCBjb25zdCBjaGFyKiBX
ZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6CiAgICAgcmV0dXJuICJXZWJNZWRpYVNlc3Npb25G
b2N1c01hbmFnZXIiOwogfQogCi1QYXNzUmVmUHRyPFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdl
cj4gV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wqIHBy
b2Nlc3NQb29sKQorUmVmPFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcj4gV2ViTWVkaWFTZXNz
aW9uRm9jdXNNYW5hZ2VyOjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQogewot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyKHByb2Nl
c3NQb29sKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViTWVkaWFTZXNzaW9uRm9jdXNN
YW5hZ2VyKHByb2Nlc3NQb29sKSk7CiB9CiAKIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6
V2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFn
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTWVkaWFTZXNz
aW9uRm9jdXNNYW5hZ2VyLmgJKHJldmlzaW9uIDIxNjQ0OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZm5kZWYgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyX2gKLSNkZWZpbmUgV2ViTWVkaWFT
ZXNzaW9uRm9jdXNNYW5hZ2VyX2gKKyNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKE1FRElBX1NF
U1NJT04pCiAKQEAgLTQxLDcgKzQwLDcgQEAgY2xhc3MgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5h
Z2VyIDogcHVibAogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFt
ZSgpOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2Vy
PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wqKTsKKyAgICBzdGF0aWMgUmVmPFdlYk1lZGlhU2Vzc2lv
bkZvY3VzTWFuYWdlcj4gY3JlYXRlKFdlYlByb2Nlc3NQb29sKik7CiAKICAgICB2b2lkIGluaXRp
YWxpemVDbGllbnQoY29uc3QgV0tNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXJDbGllbnRCYXNlKik7
CiAKQEAgLTcyLDUgKzcxLDMgQEAgcHJpdmF0ZToKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pCi0KLSNlbmRpZiAvKiBXZWJNZWRpYVNlc3Np
b25Gb2N1c01hbmFnZXJfaCAqLwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oCShyZXZpc2lvbiAy
MTY0NDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMiArMjMsMTAgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyUHJveHlfaAotI2RlZmluZSBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclBy
b3h5X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTQ0LDkgKzQyLDkgQEAg
Y2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFzcyBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclBy
b3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6RnJhbWVQb2xp
Y3lMaXN0ZW5lcj4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyUHJveHk+IGNyZWF0ZShXZWJQYWdlUHJveHkqIHBhZ2UpCisgICAgc3Rh
dGljIFJlZjxXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5PiBjcmVhdGUoV2ViUGFnZVBy
b3h5KiBwYWdlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lclByb3h5KHBhZ2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eShwYWdlKSk7CiAgICAgfQogCiAgICAg
dmlydHVhbCB+V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSgpOwpAQCAtNjYsNSArNjQs
MyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBX
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlR3JvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlR3JvdXAuY3BwCShyZXZpc2lvbiAyMTY0NDgpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsOSAr
NTQsOSBAQCBzdGF0aWMgV2ViUGFnZUdyb3VwTWFwJiB3ZWJQYWdlR3JvdXBNYXAoCiAgICAgcmV0
dXJuIG1hcDsKIH0KIAotUGFzc1JlZlB0cjxXZWJQYWdlR3JvdXA+IFdlYlBhZ2VHcm91cDo6Y3Jl
YXRlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgYm9vbCB2aXNpYmxlVG9JbmplY3RlZEJ1bmRs
ZSwgYm9vbCB2aXNpYmxlVG9IaXN0b3J5Q2xpZW50KQorUmVmPFdlYlBhZ2VHcm91cD4gV2ViUGFn
ZUdyb3VwOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBib29sIHZpc2libGVUb0lu
amVjdGVkQnVuZGxlLCBib29sIHZpc2libGVUb0hpc3RvcnlDbGllbnQpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBXZWJQYWdlR3JvdXAoaWRlbnRpZmllciwgdmlzaWJsZVRvSW5qZWN0ZWRC
dW5kbGUsIHZpc2libGVUb0hpc3RvcnlDbGllbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJQYWdlR3JvdXAoaWRlbnRpZmllciwgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUsIHZpc2li
bGVUb0hpc3RvcnlDbGllbnQpKTsKIH0KIAogUmVmPFdlYlBhZ2VHcm91cD4gV2ViUGFnZUdyb3Vw
OjpjcmVhdGVOb25OdWxsKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgYm9vbCB2aXNpYmxlVG9J
bmplY3RlZEJ1bmRsZSwgYm9vbCB2aXNpYmxlVG9IaXN0b3J5Q2xpZW50KQpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuaAkocmV2aXNpb24gMjE2NDQ4KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Myw3ICs0Myw3IEBAIGNsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OwogY2xhc3Mg
V2ViUGFnZUdyb3VwIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6
UGFnZUdyb3VwPiB7CiBwdWJsaWM6CiAgICAgV2ViUGFnZUdyb3VwKGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllciA9IFN0cmluZygpLCBib29sIHZpc2libGVUb0luamVjdGVkQnVuZGxlID0gdHJ1ZSwg
Ym9vbCB2aXNpYmxlVG9IaXN0b3J5Q2xpZW50ID0gdHJ1ZSk7Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8V2ViUGFnZUdyb3VwPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyID0gU3RyaW5n
KCksIGJvb2wgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUgPSB0cnVlLCBib29sIHZpc2libGVUb0hp
c3RvcnlDbGllbnQgPSB0cnVlKTsKKyAgICBzdGF0aWMgUmVmPFdlYlBhZ2VHcm91cD4gY3JlYXRl
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciA9IFN0cmluZygpLCBib29sIHZpc2libGVUb0luamVj
dGVkQnVuZGxlID0gdHJ1ZSwgYm9vbCB2aXNpYmxlVG9IaXN0b3J5Q2xpZW50ID0gdHJ1ZSk7CiAg
ICAgc3RhdGljIFJlZjxXZWJQYWdlR3JvdXA+IGNyZWF0ZU5vbk51bGwoY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyID0gU3RyaW5nKCksIGJvb2wgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUgPSB0cnVl
LCBib29sIHZpc2libGVUb0hpc3RvcnlDbGllbnQgPSB0cnVlKTsKICAgICBzdGF0aWMgV2ViUGFn
ZUdyb3VwKiBnZXQodWludDY0X3QgcGFnZUdyb3VwSUQpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjE2NDQ4KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMw
MzQsMTYgKzMwMzQsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFdlYkFyY2hpdmVPZkZyYW1l
KAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0V2ViQXJjaGl2ZU9m
RnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludChQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gcHJw
Q2FsbGJhY2spCit2b2lkIFdlYlBhZ2VQcm94eTo6Zm9yY2VSZXBhaW50KFJlZlB0cjxWb2lkQ2Fs
bGJhY2s+JiYgY2FsbGJhY2spCiB7Ci0gICAgUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2sg
PSBwcnBDYWxsYmFjazsKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICAvLyBGSVhNRTog
SWYgdGhlIHBhZ2UgaXMgaW52YWxpZCB3ZSBzaG91bGQgbm90IGNhbGwgdGhlIGNhbGxiYWNrLiBJ
dCdkIGJlIGJldHRlciB0byBqdXN0IHJldHVybiBmYWxzZSBmcm9tIGZvcmNlUmVwYWludC4KICAg
ICAgICAgY2FsbGJhY2stPmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJ
bnZhbGlkYXRlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiBkaWRGb3JjZVJlcGFpbnRDYWxsYmFjayA9IFt0
aGlzLCBjYWxsYmFja10oQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgIEZ1bmN0aW9u
PHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGRpZEZvcmNlUmVwYWludENhbGxiYWNrID0gW3Ro
aXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJy
b3IpIG11dGFibGUgewogICAgICAgICBpZiAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6
Tm9uZSkgewogICAgICAgICAgICAgY2FsbGJhY2stPmludmFsaWRhdGUoZXJyb3IpOwogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMzA1NCw3ICszMDUzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZv
cmNlUmVwYWludChQYXNzUmVmUAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
Ci0gICAgICAgIGNhbGxBZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGUoW2NhbGxiYWNrXShDYWxs
YmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGNhbGxBZnRlck5leHRQcmVzZW50YXRp
b25VcGRhdGUoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKENhbGxiYWNrQmFzZTo6RXJy
b3IgZXJyb3IpIHsKICAgICAgICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9y
OjpOb25lKSB7CiAgICAgICAgICAgICAgICAgY2FsbGJhY2stPmludmFsaWRhdGUoZXJyb3IpOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTMwNjQsNyArMzA2Myw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojpmb3JjZVJlcGFpbnQoUGFzc1JlZlAKICAgICAgICAgfSk7CiAgICAgfTsKIAotICAg
IHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoZGlkRm9yY2VSZXBhaW50Q2Fs
bGJhY2ssIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGRpZEZv
cmNlUmVwYWludENhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbigpKTsKICAgICBtX2RyYXdpbmdBcmVhLT53YWl0Rm9yQmFja2luZ1N0b3JlVXBk
YXRlT25OZXh0UGFpbnQoKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkZvcmNlUmVwYWludChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOyAKIH0KQEAgLTU5OTIsNTcgKzU5
OTEsNTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmVuZFByaW50aW5nKCkKICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkVuZFByaW50aW5nKCksIG1fcGFnZUlELCBwcmludGlu
Z1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1lUHJveHkqIGZy
YW1lLCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgUGFzc1JlZlB0cjxDb21wdXRlZFBhZ2Vz
Q2FsbGJhY2s+IHBycENhbGxiYWNrKQordm9pZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0Zv
clByaW50aW5nKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHByaW50SW5m
bywgUmVmPENvbXB1dGVkUGFnZXNDYWxsYmFjaz4mJiBjYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8
Q29tcHV0ZWRQYWdlc0NhbGxiYWNrPiBjYWxsYmFjayA9IHBycENhbGxiYWNrOwogICAgIGlmICgh
aXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxi
YWNrSUQoKTsKLSAgICBtX2NhbGxiYWNrcy5wdXQoY2FsbGJhY2spOworICAgIG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgbV9pc0luUHJpbnRpbmdNb2RlID0gdHJ1ZTsK
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclBy
aW50aW5nKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgY2FsbGJhY2tJRCksIG1fcGFnZUlE
LCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsK
IH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdSZWN0VG9J
bWFnZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIGNv
bnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGltYWdlU2l6ZSwgUGFz
c1JlZlB0cjxJbWFnZUNhbGxiYWNrPiBwcnBDYWxsYmFjaykKK3ZvaWQgV2ViUGFnZVByb3h5Ojpk
cmF3UmVjdFRvSW1hZ2UoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJp
bnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBpbWFn
ZVNpemUsIFJlZjxJbWFnZUNhbGxiYWNrPiYmIGNhbGxiYWNrKQogewotICAgIFJlZlB0cjxJbWFn
ZUNhbGxiYWNrPiBjYWxsYmFjayA9IHBycENhbGxiYWNrOwogICAgIGlmICghaXNWYWxpZCgpKSB7
CiAgICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgCiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7
Ci0gICAgbV9jYWxsYmFja3MucHV0KGNhbGxiYWNrKTsKKyAgICBtX2NhbGxiYWNrcy5wdXQoV1RG
TW92ZShjYWxsYmFjaykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RHJhd1JlY3RUb0ltYWdlKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgcmVjdCwgaW1hZ2VT
aXplLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZv
cm1pbmdET01QcmludE9wZXJhdGlvbikpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1Bh
Z2VzVG9QREYoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZv
LCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIFBhc3NSZWZQdHI8RGF0YUNhbGxiYWNr
PiBwcnBDYWxsYmFjaykKK3ZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNUb1BERihXZWJGcmFt
ZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0
LCB1aW50MzJfdCBjb3VudCwgUmVmPERhdGFDYWxsYmFjaz4mJiBjYWxsYmFjaykKIHsKLSAgICBS
ZWZQdHI8RGF0YUNhbGxiYWNrPiBjYWxsYmFjayA9IHBycENhbGxiYWNrOwogICAgIGlmICghaXNW
YWxpZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgCiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxs
YmFja0lEKCk7Ci0gICAgbV9jYWxsYmFja3MucHV0KGNhbGxiYWNrKTsKKyAgICBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFjaykpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RHJhd1BhZ2VzVG9QREYoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBmaXJz
dCwgY291bnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lz
UGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CiB9CiAjZWxpZiBQTEFURk9STShHVEspCi12
b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSogZnJh
bWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBQYXNzUmVmUHRyPFByaW50RmluaXNoZWRD
YWxsYmFjaz4gZGlkUHJpbnRDYWxsYmFjaykKK3ZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNG
b3JQcmludGluZyhXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludElu
Zm8sIFJlZjxQcmludEZpbmlzaGVkQ2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7Ci0gICAgUmVmUHRy
PFByaW50RmluaXNoZWRDYWxsYmFjaz4gY2FsbGJhY2sgPSBkaWRQcmludENhbGxiYWNrOwogICAg
IGlmICghaXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2st
PmNhbGxiYWNrSUQoKTsKLSAgICBtX2NhbGxiYWNrcy5wdXQoY2FsbGJhY2spOworICAgIG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgbV9pc0luUHJpbnRpbmdNb2RlID0g
dHJ1ZTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdQYWdlc0Zv
clByaW50aW5nKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgY2FsbGJhY2tJRCksIG1fcGFn
ZUlELCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24p
KTsKIH0KQEAgLTY3NDQsNyArNjczOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjYWxsQWZ0ZXJO
ZXh0UHJlc2VudGEKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZHJhd2luZ0FyZWEt
PmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcoY2FsbGJhY2spOworICAgIG1fZHJhd2luZ0Fy
ZWEtPmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcoV1RGTW92ZShjYWxsYmFjaykpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudChib29s
IHNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyMTY0NDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTgwNyw3ICs4MDcsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBnZXRTb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5Kiwgc3Rk
OjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwog
ICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQcm94eSosIEZ1bmN0aW9uPHZv
aWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIHJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IFdlYkNv
cmU6OkV4Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5j
dGlvbik7Ci0gICAgdm9pZCBmb3JjZVJlcGFpbnQoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+KTsK
KyAgICB2b2lkIGZvcmNlUmVwYWludChSZWZQdHI8Vm9pZENhbGxiYWNrPiYmKTsKIAogICAgIGZs
b2F0IGhlYWRlckhlaWdodChXZWJGcmFtZVByb3h5Kik7CiAgICAgZmxvYXQgZm9vdGVySGVpZ2h0
KFdlYkZyYW1lUHJveHkqKTsKQEAgLTkzNiwxMCArOTM2LDEwIEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgYmVnaW5QcmludGluZyhXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJik7CiAgICAg
dm9pZCBlbmRQcmludGluZygpOwotICAgIHZvaWQgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoV2Vi
RnJhbWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIFBhc3NSZWZQdHI8Q29tcHV0ZWRQYWdlc0Nh
bGxiYWNrPik7CisgICAgdm9pZCBjb21wdXRlUGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVByb3h5
KiwgY29uc3QgUHJpbnRJbmZvJiwgUmVmPENvbXB1dGVkUGFnZXNDYWxsYmFjaz4mJik7CiAjaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBkcmF3UmVjdFRvSW1hZ2UoV2ViRnJhbWVQcm94eSos
IGNvbnN0IFByaW50SW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiwgUGFzc1JlZlB0cjxJbWFnZUNhbGxiYWNrPik7Ci0gICAgdm9pZCBkcmF3UGFn
ZXNUb1BERihXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3Qs
IHVpbnQzMl90IGNvdW50LCBQYXNzUmVmUHRyPERhdGFDYWxsYmFjaz4pOworICAgIHZvaWQgZHJh
d1JlY3RUb0ltYWdlKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQcmludEluZm8mLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFJlZjxJbWFnZUNhbGxiYWNr
PiYmKTsKKyAgICB2b2lkIGRyYXdQYWdlc1RvUERGKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQcmlu
dEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIFJlZjxEYXRhQ2FsbGJhY2s+
JiYpOwogI2lmIFBMQVRGT1JNKElPUykKICAgICB1aW50MzJfdCBjb21wdXRlUGFnZXNGb3JQcmlu
dGluZ0FuZERyYXdUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCBEcmF3
VG9QREZDYWxsYmFjazo6Q2FsbGJhY2tGdW5jdGlvbiYmKTsKICAgICB2b2lkIGRyYXdUb1BERkNh
bGxiYWNrKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcGRmRGF0YSwgdWludDY0X3QgY2FsbGJh
Y2tJRCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VH
cm91cC5jcHAJKHJldmlzaW9uIDIxNjQ0OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2VHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgV0tU
eXBlSUQgV0tQYWdlR3JvdXBHZXRUeXBlSUQoKQogV0tQYWdlR3JvdXBSZWYgV0tQYWdlR3JvdXBD
cmVhdGVXaXRoSWRlbnRpZmllcihXS1N0cmluZ1JlZiBpZGVudGlmaWVyKQogewogICAgIGF1dG8g
cGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpjcmVhdGUodG9XVEZTdHJpbmcoaWRlbnRpZmllcikp
OwotICAgIHJldHVybiB0b0FQSShwYWdlR3JvdXAubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9B
UEkoJnBhZ2VHcm91cC5sZWFrUmVmKCkpOwogfQogCiB2b2lkIFdLUGFnZUdyb3VwU2V0UHJlZmVy
ZW5jZXMoV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmLCBXS1ByZWZlcmVuY2VzUmVmIHByZWZl
cmVuY2VzUmVmKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9UZXh0Q2hlY2tl
cklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1RleHRD
aGVja2VySU9TLm1tCShyZXZpc2lvbiAyMTY0NDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1RleHRDaGVja2VySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksNyArMTk5LDcg
QEAgdm9pZCBUZXh0Q2hlY2tlcjo6aWdub3JlV29yZChpbnQ2NF90LCBjbwogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CiAKLXZvaWQgVGV4dENoZWNrZXI6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5n
KFBhc3NSZWZQdHI8VGV4dENoZWNrZXJDb21wbGV0aW9uPiwgaW50MzJfdCkKK3ZvaWQgVGV4dENo
ZWNrZXI6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFJlZjxUZXh0Q2hlY2tlckNvbXBsZXRpb24+
JiYsIGludDMyX3QpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbQkocmV2aXNpb24gMjE2
NDQ4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtNTAwLDcgKzUwMCw3IEBAIHZvaWQgVGV4dENoZWNrZXI6Omlnbm9y
ZVdvcmQoaW50NjRfdCBzcGUKICAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tl
cl0gaWdub3JlV29yZDp3b3JkIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6c3BlbGxEb2N1bWVudFRh
Z107CiB9CiAKLXZvaWQgVGV4dENoZWNrZXI6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFBhc3NS
ZWZQdHI8VGV4dENoZWNrZXJDb21wbGV0aW9uPiwgaW50MzJfdCkKK3ZvaWQgVGV4dENoZWNrZXI6
OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFJlZjxUZXh0Q2hlY2tlckNvbXBsZXRpb24+JiYsIGlu
dDMyX3QpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWFQcm94eS5oCShyZXZpc2lvbiAyMTY0NDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpZm5kZWYgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eV9o
Ci0jZGVmaW5lIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHlfaAorI3ByYWdtYSBv
bmNlCiAKICNpZiAhUExBVEZPUk0oSU9TKQogCkBAIC04MCw1ICs3OSwzIEBAIHByaXZhdGU6CiBT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RSQVdJTkdfQVJFQV9QUk9YWShUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYVByb3h5LCBEcmF3aW5nQXJlYVR5cGVUaWxlZENvcmVBbmltYXRpb24pCiAK
ICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQotCi0jZW5kaWYgLy8gVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWFQcm94eV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dL
RnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tCShyZXZpc2lv
biAyMTY0NDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyNiw3ICs0MjYsNyBAQCAtICh2
b2lkKWZpbmlzaGVkRXhpdEZ1bGxTY3JlZW5BbmltYXRpb246CiAgICAgX3JlcGFpbnRDYWxsYmFj
ayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFtzZWxmXShXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJy
b3IpIHsKICAgICAgICAgW3NlbGYgY29tcGxldGVGaW5pc2hFeGl0RnVsbFNjcmVlbkFuaW1hdGlv
bkFmdGVyUmVwYWludF07CiAgICAgfSk7Ci0gICAgX3BhZ2UtPmZvcmNlUmVwYWludChfcmVwYWlu
dENhbGxiYWNrKTsKKyAgICBfcGFnZS0+Zm9yY2VSZXBhaW50KF9yZXBhaW50Q2FsbGJhY2suY29w
eVJlZigpKTsKIH0KIAogLSAodm9pZCljb21wbGV0ZUZpbmlzaEV4aXRGdWxsU2NyZWVuQW5pbWF0
aW9uQWZ0ZXJSZXBhaW50CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLUHJp
bnRpbmdWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
V0tQcmludGluZ1ZpZXcubW0JKHJldmlzaW9uIDIxNjQ0OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2NSw3ICsy
NjUsNyBAQCAtICh2b2lkKV9wcmVwYXJlUERGRGF0YUZvclByaW50aW5nT25TZWNvCiAgICAgX3dl
YkZyYW1lLT5wYWdlKCktPmJlZ2luUHJpbnRpbmcoX3dlYkZyYW1lLmdldCgpLCBwcmludEluZm8p
OwogCiAgICAgSVBDQ2FsbGJhY2tDb250ZXh0KiBjb250ZXh0ID0gbmV3IElQQ0NhbGxiYWNrQ29u
dGV4dDsKLSAgICBSZWZQdHI8RGF0YUNhbGxiYWNrPiBjYWxsYmFjayA9IERhdGFDYWxsYmFjazo6
Y3JlYXRlKFtjb250ZXh0XShBUEk6OkRhdGEqIGRhdGEsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpF
cnJvcikgeworICAgIGF1dG8gY2FsbGJhY2sgPSBEYXRhQ2FsbGJhY2s6OmNyZWF0ZShbY29udGV4
dF0oQVBJOjpEYXRhKiBkYXRhLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKICAgICAg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SVBDQ2FsbGJhY2tDb250ZXh0PiBjb250ZXh0RGVsZXRlcihjb250ZXh0KTsKQEAgLTI4Niw3ICsy
ODYsNyBAQCAtICh2b2lkKV9wcmVwYXJlUERGRGF0YUZvclByaW50aW5nT25TZWNvCiAgICAgY29u
dGV4dC0+dmlldyA9IHNlbGY7CiAgICAgY29udGV4dC0+Y2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5j
YWxsYmFja0lEKCk7CiAKLSAgICBfd2ViRnJhbWUtPnBhZ2UoKS0+ZHJhd1BhZ2VzVG9QREYoX3dl
YkZyYW1lLmdldCgpLCBwcmludEluZm8sIGZpcnN0UGFnZSAtIDEsIGxhc3RQYWdlIC0gZmlyc3RQ
YWdlICsgMSwgY2FsbGJhY2suZ2V0KCkpOworICAgIF93ZWJGcmFtZS0+cGFnZSgpLT5kcmF3UGFn
ZXNUb1BERihfd2ViRnJhbWUuZ2V0KCksIHByaW50SW5mbywgZmlyc3RQYWdlIC0gMSwgbGFzdFBh
Z2UgLSBmaXJzdFBhZ2UgKyAxLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKIHN0YXRpYyB2b2lk
IHBhZ2VEaWRDb21wdXRlUGFnZVJlY3RzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYg
cGFnZVJlY3RzLCBkb3VibGUgdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBJUENDYWxsYmFj
a0NvbnRleHQqIGNvbnRleHQpCkBAIC01MTcsNyArNTE3LDcgQEAgLSAodm9pZClfZHJhd1ByZXZp
ZXc6KE5TUmVjdCluc1JlY3QKICAgICAgICAgICAgICAgICBfd2ViRnJhbWUtPnBhZ2UoKS0+YmVn
aW5QcmludGluZyhfd2ViRnJhbWUuZ2V0KCksIFByaW50SW5mbyhbX3ByaW50T3BlcmF0aW9uIHBy
aW50SW5mb10pKTsKIAogICAgICAgICAgICAgICAgIElQQ0NhbGxiYWNrQ29udGV4dCogY29udGV4
dCA9IG5ldyBJUENDYWxsYmFja0NvbnRleHQ7Ci0gICAgICAgICAgICAgICAgUmVmUHRyPEltYWdl
Q2FsbGJhY2s+IGNhbGxiYWNrID0gSW1hZ2VDYWxsYmFjazo6Y3JlYXRlKFtjb250ZXh0XShjb25z
dCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2VIYW5kbGUsIFdlYktpdDo6Q2FsbGJhY2tC
YXNlOjpFcnJvcikgeworICAgICAgICAgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBJbWFnZUNhbGxi
YWNrOjpjcmVhdGUoW2NvbnRleHRdKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFn
ZUhhbmRsZSwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CiAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJUENDYWxsYmFja0NvbnRleHQ+IGNvbnRleHREZWxldGVyKGNv
bnRleHQpOwogICAgICAgICAgICAgICAgICAgICBwYWdlRGlkRHJhd1RvSW1hZ2UoaW1hZ2VIYW5k
bGUsIGNvbnRleHQpOwogICAgICAgICAgICAgICAgIH0pOwpAQCAtNTI3LDcgKzUyNyw3IEBAIC0g
KHZvaWQpX2RyYXdQcmV2aWV3OihOU1JlY3QpbnNSZWN0CiAgICAgICAgICAgICAgICAgY29udGV4
dC0+dmlldyA9IHNlbGY7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+Y2FsbGJhY2tJRCA9IGNh
bGxiYWNrLT5jYWxsYmFja0lEKCk7CiAKLSAgICAgICAgICAgICAgICBfd2ViRnJhbWUtPnBhZ2Uo
KS0+ZHJhd1JlY3RUb0ltYWdlKF93ZWJGcmFtZS5nZXQoKSwgUHJpbnRJbmZvKFtfcHJpbnRPcGVy
YXRpb24gcHJpbnRJbmZvXSksIHNjYWxlZFByaW50aW5nUmVjdCwgaW1hZ2VTaXplLCBjYWxsYmFj
ay5nZXQoKSk7CisgICAgICAgICAgICAgICAgX3dlYkZyYW1lLT5wYWdlKCktPmRyYXdSZWN0VG9J
bWFnZShfd2ViRnJhbWUuZ2V0KCksIFByaW50SW5mbyhbX3ByaW50T3BlcmF0aW9uIHByaW50SW5m
b10pLCBzY2FsZWRQcmludGluZ1JlY3QsIGltYWdlU2l6ZSwgV1RGTW92ZShjYWxsYmFjaykpOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCShyZXZpc2lvbiAyMTY0NDgpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6bG9hZFVS
TChjb25zdCBTdHJpbgogCiAgICAgaWYgKHRhcmdldC5pc051bGwoKSkgewogICAgICAgICAvLyBU
aGUgYnJvd3NlciBpcyBnb2luZyB0byBzZW5kIHRoZSBkYXRhIGluIGEgc3RyZWFtLCBjcmVhdGUg
YSBwbHVnLWluIHN0cmVhbS4KLSAgICAgICAgYXV0byBwbHVnaW5TdHJlYW0gPSBOZXRzY2FwZVBs
dWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMsIHJlcXVlc3RJRCwgdXJsU3RyaW5nLCBzZW5kTm90aWZp
Y2F0aW9uLCBub3RpZmljYXRpb25EYXRhKTsKKyAgICAgICAgYXV0byBwbHVnaW5TdHJlYW0gPSBO
ZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKCp0aGlzLCByZXF1ZXN0SUQsIHVybFN0cmluZywg
c2VuZE5vdGlmaWNhdGlvbiwgbm90aWZpY2F0aW9uRGF0YSk7CiAgICAgICAgIEFTU0VSVCghbV9z
dHJlYW1zLmNvbnRhaW5zKHJlcXVlc3RJRCkpOwogCiAgICAgICAgIG1fc3RyZWFtcy5zZXQocmVx
dWVzdElELCBXVEZNb3ZlKHBsdWdpblN0cmVhbSkpOwpAQCAtODk3LDcgKzg5Nyw3IEBAIHZvaWQg
TmV0c2NhcGVQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2UKICAgICBBU1NFUlQobV9zaG91bGRV
c2VNYW51YWxMb2FkZXIpOwogICAgIEFTU0VSVCghbV9tYW51YWxTdHJlYW0pOwogICAgIAotICAg
IG1fbWFudWFsU3RyZWFtID0gTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCAwLCBy
ZXNwb25zZVVSTC5zdHJpbmcoKSwgZmFsc2UsIDApOworICAgIG1fbWFudWFsU3RyZWFtID0gTmV0
c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZSgqdGhpcywgMCwgcmVzcG9uc2VVUkwuc3RyaW5nKCks
IGZhbHNlLCAwKTsKICAgICBtX21hbnVhbFN0cmVhbS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3Bv
bnNlVVJMLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZFRpbWUsIG1pbWVUeXBlLCBoZWFkZXJz
KTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCShyZXZp
c2lvbiAyMTY0NDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiw4
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotTmV0
c2NhcGVQbHVnaW5TdHJlYW06Ok5ldHNjYXBlUGx1Z2luU3RyZWFtKFBhc3NSZWZQdHI8TmV0c2Nh
cGVQbHVnaW4+IHBsdWdpbiwgdWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFN0cmluZyYgcmVxdWVz
dFVSTFN0cmluZywgYm9vbCBzZW5kTm90aWZpY2F0aW9uLCB2b2lkKiBub3RpZmljYXRpb25EYXRh
KQotICAgIDogbV9wbHVnaW4ocGx1Z2luKQorTmV0c2NhcGVQbHVnaW5TdHJlYW06Ok5ldHNjYXBl
UGx1Z2luU3RyZWFtKFJlZjxOZXRzY2FwZVBsdWdpbj4mJiBwbHVnaW4sIHVpbnQ2NF90IHN0cmVh
bUlELCBjb25zdCBTdHJpbmcmIHJlcXVlc3RVUkxTdHJpbmcsIGJvb2wgc2VuZE5vdGlmaWNhdGlv
biwgdm9pZCogbm90aWZpY2F0aW9uRGF0YSkKKyAgICA6IG1fcGx1Z2luKFdURk1vdmUocGx1Z2lu
KSkKICAgICAsIG1fc3RyZWFtSUQoc3RyZWFtSUQpCiAgICAgLCBtX3JlcXVlc3RVUkxTdHJpbmco
cmVxdWVzdFVSTFN0cmluZykKICAgICAsIG1fc2VuZE5vdGlmaWNhdGlvbihzZW5kTm90aWZpY2F0
aW9uKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luU3RyZWFtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgJKHJldmlzaW9uIDIx
NjQ0OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpblN0cmVhbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBOZXRzY2FwZVBs
dWdpblN0cmVhbV9oCi0jZGVmaW5lIE5ldHNjYXBlUGx1Z2luU3RyZWFtX2gKKyNwcmFnbWEgb25j
ZQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKQEAgLTMyLDcgKzMxLDYgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL25wcnVudGltZV9pbnRlcm5hbC5oPgogI2luY2x1ZGUgPG1lbW9y
eT4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTQ4LDkgKzQ2LDkgQEAgY2xhc3MgTmV0c2NhcGVQ
bHVnaW47CiAKIGNsYXNzIE5ldHNjYXBlUGx1Z2luU3RyZWFtIDogcHVibGljIFJlZkNvdW50ZWQ8
TmV0c2NhcGVQbHVnaW5TdHJlYW0+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE5ldHNjYXBl
UGx1Z2luU3RyZWFtPiBjcmVhdGUoUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdpbj4gcGx1Z2luLCB1
aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgU3RyaW5nJiByZXF1ZXN0VVJMU3RyaW5nLCBib29sIHNl
bmROb3RpZmljYXRpb24sIHZvaWQqIG5vdGlmaWNhdGlvbkRhdGEpCisgICAgc3RhdGljIFJlZjxO
ZXRzY2FwZVBsdWdpblN0cmVhbT4gY3JlYXRlKFJlZjxOZXRzY2FwZVBsdWdpbj4mJiBwbHVnaW4s
IHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBTdHJpbmcmIHJlcXVlc3RVUkxTdHJpbmcsIGJvb2wg
c2VuZE5vdGlmaWNhdGlvbiwgdm9pZCogbm90aWZpY2F0aW9uRGF0YSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHNjYXBlUGx1Z2luU3RyZWFtKHBsdWdpbiwgc3RyZWFt
SUQsIHJlcXVlc3RVUkxTdHJpbmcsIHNlbmROb3RpZmljYXRpb24sIG5vdGlmaWNhdGlvbkRhdGEp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0c2NhcGVQbHVnaW5TdHJlYW0oV1RG
TW92ZShwbHVnaW4pLCBzdHJlYW1JRCwgcmVxdWVzdFVSTFN0cmluZywgc2VuZE5vdGlmaWNhdGlv
biwgbm90aWZpY2F0aW9uRGF0YSkpOwogICAgIH0KICAgICB+TmV0c2NhcGVQbHVnaW5TdHJlYW0o
KTsKIApAQCAtNzEsNyArNjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVUkwoY29uc3QgU3Ry
aW5nJiBuZXdVUkxTdHJpbmcpOwogCiBwcml2YXRlOgotICAgIE5ldHNjYXBlUGx1Z2luU3RyZWFt
KFBhc3NSZWZQdHI8TmV0c2NhcGVQbHVnaW4+LCB1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgU3Ry
aW5nJiByZXF1ZXN0VVJMU3RyaW5nLCBib29sIHNlbmROb3RpZmljYXRpb24sIHZvaWQqIG5vdGlm
aWNhdGlvbkRhdGEpOworICAgIE5ldHNjYXBlUGx1Z2luU3RyZWFtKFJlZjxOZXRzY2FwZVBsdWdp
bj4mJiwgdWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFN0cmluZyYgcmVxdWVzdFVSTFN0cmluZywg
Ym9vbCBzZW5kTm90aWZpY2F0aW9uLCB2b2lkKiBub3RpZmljYXRpb25EYXRhKTsKIAogICAgIGJv
b2wgc3RhcnQoY29uc3QgU3RyaW5nJiByZXNwb25zZVVSTFN0cmluZywgdWludDMyX3Qgc3RyZWFt
TGVuZ3RoLCAKICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycyk7CkBAIC04Myw3ICs4MSw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWxpdmVyRGF0YVRvUGx1Z2luKCk7CiAgICAgdm9pZCBk
ZWxpdmVyRGF0YVRvRmlsZShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCk7CiAKLSAgICBS
ZWZQdHI8TmV0c2NhcGVQbHVnaW4+IG1fcGx1Z2luOworICAgIFJlZjxOZXRzY2FwZVBsdWdpbj4g
bV9wbHVnaW47CiAgICAgdWludDY0X3QgbV9zdHJlYW1JRDsKIAogICAgIFN0cmluZyBtX3JlcXVl
c3RVUkxTdHJpbmc7CkBAIC0xMTYsNSArMTE0LDMgQEAgcHJpdmF0ZToKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0KLSNlbmRp
ZiAvLyBOZXRzY2FwZVBsdWdpblN0cmVhbV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRl
Q29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDIxNjQ0OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyMiw3ICsxMjIsNyBAQCBQYWdlU3RhdGUgdG9QYWdlU3RhdGUoY29uc3QgV2Vi
Q29yZTo6SGlzCiAgICAgcmV0dXJuIHBhZ2VTdGF0ZTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8
Rm9ybURhdGE+IHRvRm9ybURhdGEoY29uc3QgSFRUUEJvZHkmIGh0dHBCb2R5KQorc3RhdGljIFJl
ZjxGb3JtRGF0YT4gdG9Gb3JtRGF0YShjb25zdCBIVFRQQm9keSYgaHR0cEJvZHkpCiB7CiAgICAg
YXV0byBmb3JtRGF0YSA9IEZvcm1EYXRhOjpjcmVhdGUoKTsKIApAQCAtMTQyLDcgKzE0Miw3IEBA
IHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRhPiB0b0Zvcm1EYXRhKGMKICAgICAgICAgfQogICAg
IH0KIAotICAgIHJldHVybiBXVEZNb3ZlKGZvcm1EYXRhKTsKKyAgICByZXR1cm4gZm9ybURhdGE7
CiB9CiAKIHN0YXRpYyB2b2lkIGFwcGx5RnJhbWVTdGF0ZShIaXN0b3J5SXRlbSYgaGlzdG9yeUl0
ZW0sIGNvbnN0IEZyYW1lU3RhdGUmIGZyYW1lU3RhdGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309434</attachid>
            <date>2017-05-08 16:12:50 -0700</date>
            <delta_ts>2017-05-08 17:24:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171831-20170508161249.patch</filename>
            <type>text/plain</type>
            <size>52154</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNjQ2MCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBACisyMDE3LTA1LTA4ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIFBh
c3NSZWZQdHIgdXNlIGluIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3MTgzMQorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcDoKKyAgICAgICAg
KFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9H
ZW5lcmljQ2FsbGJhY2suaDoKKyAgICAgICAgKFdlYktpdDo6R2VuZXJpY0NhbGxiYWNrOjpjcmVh
dGUpOgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja01hcDo6cHV0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvU3RhdGlzdGljc1JlcXVlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdGF0aXN0aWNz
UmVxdWVzdDo6U3RhdGlzdGljc1JlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdGF0aXN0
aWNzUmVxdWVzdC5oOgorICAgICAgICAoV2ViS2l0OjpTdGF0aXN0aWNzUmVxdWVzdDo6Y3JlYXRl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvVGV4dENoZWNrZXIuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvVGV4dENoZWNrZXJDb21wbGV0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGV4dENoZWNr
ZXJDb21wbGV0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9UZXh0Q2hlY2tlckNv
bXBsZXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXIuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29sb3JQaWNrZXI6OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHRJbmpl
Y3RlZEJ1bmRsZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRJbmplY3Rl
ZEJ1bmRsZUNsaWVudDo6Z2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHRNZW51TGlzdGVuZXJQcm94eS5oOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHk6OmNyZWF0ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
Q29va2llTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5k
UHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdENvbW1hbmRQcm94eTo6Y3JlYXRlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eTo6Y3JlYXRlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVMaXN0ZW5lclByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQcm94
eTo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmNyZWF0
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSWNvbkRhdGFi
YXNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJY29uRGF0YWJhc2U6Omljb25EYXRh
Rm9yUGFnZVVSTCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OmNyZWF0ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5Lmg6CisgICAgICAgIChXZWJL
aXQ6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VHcm91
cDo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6Zm9yY2VSZXBhaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb21w
dXRlUGFnZXNGb3JQcmludGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJh
d1JlY3RUb0ltYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3UGFnZXNU
b1BERik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzRm9yUHJpbnRp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNhbGxBZnRlck5leHRQcmVzZW50
YXRpb25VcGRhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1RleHRDaGVja2VySU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpU
ZXh0Q2hlY2tlcjo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9tYWMvVGV4dENoZWNrZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlRleHRDaGVja2VyOjpy
ZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9X
S0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5X
aW5kb3dDb250cm9sbGVyIGZpbmlzaGVkRXhpdEZ1bGxTY3JlZW5BbmltYXRpb246XSk6CisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbToKKyAgICAgICAgKC1bV0tQcmlu
dGluZ1ZpZXcgX3ByZXBhcmVQREZEYXRhRm9yUHJpbnRpbmdPblNlY29uZGFyeVRocmVhZF0pOgor
ICAgICAgICAoLVtXS1ByaW50aW5nVmlldyBfZHJhd1ByZXZpZXc6XSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW46OmxvYWRVUkwpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2Fw
ZVBsdWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6TmV0c2NhcGVQbHVnaW5TdHJlYW0pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVh
bS5oOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0Ojp0b0Zvcm1EYXRhKToKKwogMjAxNy0wNS0wOCAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlZHVjZSBQ
YXNzUmVmUHRyIHVzZQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlbmVyaWNDYWxs
YmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2Fs
bGJhY2suaAkocmV2aXNpb24gMjE2NDQ4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dl
bmVyaWNDYWxsYmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBHZW5lcmljQ2FsbGJh
Y2tfaAotI2RlZmluZSBHZW5lcmljQ2FsbGJhY2tfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJBUElFcnJvci5oIgogI2luY2x1ZGUgIkFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgpAQCAt
MzQsNyArMzMsNiBAQAogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0
aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KIApAQCAtOTUsOSArOTMsOSBAQCBjbGFzcyBHZW5lcmljQ2FsbGJhY2sgOiBwdWJsaWMgQ2Fs
bGJhY2tCCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBGdW5jdGlvbjx2b2lkIChULi4uLCBFcnJvcik+
IENhbGxiYWNrRnVuY3Rpb247CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxHZW5lcmljQ2FsbGJh
Y2s+IGNyZWF0ZShDYWxsYmFja0Z1bmN0aW9uJiYgY2FsbGJhY2ssIGNvbnN0IFByb2Nlc3NUaHJv
dHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuJiBhY3Rpdml0eVRva2VuID0gbnVsbHB0cikK
KyAgICBzdGF0aWMgUmVmPEdlbmVyaWNDYWxsYmFjaz4gY3JlYXRlKENhbGxiYWNrRnVuY3Rpb24m
JiBjYWxsYmFjaywgY29uc3QgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4mIGFjdGl2aXR5VG9rZW4gPSBudWxscHRyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBHZW5lcmljQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFjayksIGFjdGl2aXR5VG9rZW4p
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2VuZXJpY0NhbGxiYWNrKFdURk1vdmUo
Y2FsbGJhY2spLCBhY3Rpdml0eVRva2VuKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+R2VuZXJp
Y0NhbGxiYWNrKCkKQEAgLTE3MiwxMiArMTcwLDEyIEBAIHZvaWQgaW52YWxpZGF0ZUNhbGxiYWNr
TWFwKEhhc2hNYXA8dWludDYKIAogY2xhc3MgQ2FsbGJhY2tNYXAgewogcHVibGljOgotICAgIHVp
bnQ2NF90IHB1dChQYXNzUmVmUHRyPENhbGxiYWNrQmFzZT4gY2FsbGJhY2spCisgICAgdWludDY0
X3QgcHV0KFJlZjxDYWxsYmFja0Jhc2U+JiYgY2FsbGJhY2spCiAgICAgewogICAgICAgICBBU1NF
UlQoIW1fbWFwLmNvbnRhaW5zKGNhbGxiYWNrLT5jYWxsYmFja0lEKCkpKTsKIAogICAgICAgICB1
aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICAgICAgbV9t
YXAuc2V0KGNhbGxiYWNrSUQsIGNhbGxiYWNrKTsKKyAgICAgICAgbV9tYXAuc2V0KGNhbGxiYWNr
SUQsIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICAgICAgcmV0dXJuIGNhbGxiYWNrSUQ7CiAgICAg
fQogCkBAIC0xOTIsMTcgKzE5MCwxNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lLi4uIFQ+Ci0gICAgdWludDY0X3QgcHV0KHN0ZDo6ZnVuY3Rpb248dm9pZCAoVC4u
Lik+IGZ1bmN0aW9uLCBjb25zdCBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbiYgYWN0aXZpdHlUb2tlbikKKyAgICB1aW50NjRfdCBwdXQoc3RkOjpmdW5jdGlvbjx2b2lk
KFQuLi4pPiYmIGZ1bmN0aW9uLCBjb25zdCBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbiYgYWN0aXZpdHlUb2tlbikKICAgICB7CiAgICAgICAgIGF1dG8gY2FsbGJhY2sg
PSBHZW5lcmljQ2FsbGJhY2tUeXBlPHNpemVvZi4uLihUKSwgVC4uLj46OnR5cGU6OmNyZWF0ZShX
VEZNb3ZlKGZ1bmN0aW9uKSwgYWN0aXZpdHlUb2tlbik7Ci0gICAgICAgIHJldHVybiBwdXQoY2Fs
bGJhY2spOworICAgICAgICByZXR1cm4gcHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICB9CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUPgotICAgIHVpbnQ2NF90IHB1dChGdW5jdGlvbjx2
b2lkIChULi4uKT4mJiBmdW5jdGlvbiwgY29uc3QgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4mIGFjdGl2aXR5VG9rZW4pCisgICAgdWludDY0X3QgcHV0KEZ1bmN0aW9u
PHZvaWQoVC4uLik+JiYgZnVuY3Rpb24sIGNvbnN0IFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91
bmRBY3Rpdml0eVRva2VuJiBhY3Rpdml0eVRva2VuKQogICAgIHsKICAgICAgICAgYXV0byBjYWxs
YmFjayA9IEdlbmVyaWNDYWxsYmFja1R5cGU8c2l6ZW9mLi4uKFQpLCBULi4uPjo6dHlwZTo6Y3Jl
YXRlKFdURk1vdmUoZnVuY3Rpb24pLCBhY3Rpdml0eVRva2VuKTsKLSAgICAgICAgcmV0dXJuIHB1
dChjYWxsYmFjayk7CisgICAgICAgIHJldHVybiBwdXQoV1RGTW92ZShjYWxsYmFjaykpOwogICAg
IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIFQ+CkBAIC0yMjUsNSArMjIzLDMgQEAgcHJpdmF0ZToK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gR2VuZXJpY0NhbGxiYWNr
X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdGF0aXN0aWNzUmVxdWVzdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0YXRpc3RpY3NSZXF1ZXN0
LmNwcAkocmV2aXNpb24gMjE2NDQ4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0YXRp
c3RpY3NSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsOCBAQAogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotU3RhdGlzdGljc1JlcXVlc3Q6OlN0YXRpc3RpY3NSZXF1ZXN0KFBh
c3NSZWZQdHI8RGljdGlvbmFyeUNhbGxiYWNrPiBjYWxsYmFjaykKLSAgICA6IG1fY2FsbGJhY2so
Y2FsbGJhY2spCitTdGF0aXN0aWNzUmVxdWVzdDo6U3RhdGlzdGljc1JlcXVlc3QoUmVmPERpY3Rp
b25hcnlDYWxsYmFjaz4mJiBjYWxsYmFjaykKKyAgICA6IG1fY2FsbGJhY2soV1RGTW92ZShjYWxs
YmFjaykpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdGF0aXN0aWNz
UmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdGF0aXN0
aWNzUmVxdWVzdC5oCShyZXZpc2lvbiAyMTY0NDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvU3RhdGlzdGljc1JlcXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgU3RhdGlz
dGljc1JlcXVlc3RfaAotI2RlZmluZSBTdGF0aXN0aWNzUmVxdWVzdF9oCisjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIkdlbmVyaWNDYWxsYmFjay5oIgogI2luY2x1ZGUgIlN0YXRpc3RpY3NEYXRh
LmgiCkBAIC00NCw5ICs0Myw5IEBAIGVudW0gU3RhdGlzdGljc1JlcXVlc3RUeXBlIHsKIAogY2xh
c3MgU3RhdGlzdGljc1JlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxTdGF0aXN0aWNzUmVxdWVz
dD4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0YXRpc3RpY3NSZXF1ZXN0PiBj
cmVhdGUoUGFzc1JlZlB0cjxEaWN0aW9uYXJ5Q2FsbGJhY2s+IGNhbGxiYWNrKQorICAgIHN0YXRp
YyBSZWY8U3RhdGlzdGljc1JlcXVlc3Q+IGNyZWF0ZShSZWY8RGljdGlvbmFyeUNhbGxiYWNrPiYm
IGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdGF0aXN0aWNz
UmVxdWVzdChjYWxsYmFjaykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdGF0aXN0
aWNzUmVxdWVzdChXVEZNb3ZlKGNhbGxiYWNrKSkpOwogICAgIH0KIAogICAgIH5TdGF0aXN0aWNz
UmVxdWVzdCgpOwpAQCAtNTYsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21wbGV0ZWRS
ZXF1ZXN0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RhdGlzdGljc0RhdGEmKTsKIAogcHJp
dmF0ZToKLSAgICBTdGF0aXN0aWNzUmVxdWVzdChQYXNzUmVmUHRyPERpY3Rpb25hcnlDYWxsYmFj
az4pOworICAgIFN0YXRpc3RpY3NSZXF1ZXN0KFJlZjxEaWN0aW9uYXJ5Q2FsbGJhY2s+JiYpOwog
CiAgICAgSGFzaFNldDx1aW50NjRfdD4gbV9vdXRzdGFuZGluZ1JlcXVlc3RzOwogICAgIFJlZlB0
cjxEaWN0aW9uYXJ5Q2FsbGJhY2s+IG1fY2FsbGJhY2s7CkBAIC02NSw1ICs2NCwzIEBAIHByaXZh
dGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFN0YXRpc3RpY3NS
ZXF1ZXN0X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9UZXh0Q2hlY2tlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9UZXh0Q2hlY2tlci5oCShyZXZp
c2lvbiAyMTY0NDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVGV4dENoZWNrZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgVGV4dENoZWNrZXJfaAotI2RlZmluZSBUZXh0Q2hl
Y2tlcl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlRleHRDaGVja2VyQ29tcGxldGlvbi5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yQ2xpZW50Lmg+CkBAIC04Niw5ICs4NSw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChpbnQ2NF90IHNwZWxsRG9j
dW1lbnRUYWcsIGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBpbnQz
Ml90IGluc2VydGlvblBvaW50LCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3NlcywgYm9vbCBpbml0aWFs
Q2FwaXRhbGl6YXRpb25FbmFibGVkKTsKICAgICBzdGF0aWMgdm9pZCBsZWFybldvcmQoaW50NjRf
dCBzcGVsbERvY3VtZW50VGFnLCBjb25zdCBTdHJpbmcmIHdvcmQpOwogICAgIHN0YXRpYyB2b2lk
IGlnbm9yZVdvcmQoaW50NjRfdCBzcGVsbERvY3VtZW50VGFnLCBjb25zdCBTdHJpbmcmIHdvcmQp
OwotICAgIHN0YXRpYyB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFBhc3NSZWZQdHI8VGV4
dENoZWNrZXJDb21wbGV0aW9uPiwgaW50MzJfdCBpbnNlcnRpb25Qb2ludCk7CisgICAgc3RhdGlj
IHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoUmVmPFRleHRDaGVja2VyQ29tcGxldGlvbj4m
JiwgaW50MzJfdCBpbnNlcnRpb25Qb2ludCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQotI2VuZGlmIC8vIFRleHRDaGVja2VyX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9UZXh0Q2hlY2tlckNvbXBsZXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9UZXh0Q2hlY2tlckNvbXBsZXRpb24uY3BwCShyZXZpc2lvbiAyMTY0NDgpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVGV4dENoZWNrZXJDb21wbGV0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzAsOSArMzAsOSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NSZWZQdHI8VGV4dENoZWNrZXJDb21wbGV0aW9uPiBU
ZXh0Q2hlY2tlckNvbXBsZXRpb246OmNyZWF0ZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFRl
eHRDaGVja2luZ1JlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgV2ViUGFnZVByb3h5KiBwYWdlKQor
UmVmPFRleHRDaGVja2VyQ29tcGxldGlvbj4gVGV4dENoZWNrZXJDb21wbGV0aW9uOjpjcmVhdGUo
dWludDY0X3QgcmVxdWVzdElELCBjb25zdCBUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEsIFdlYlBhZ2VQcm94eSogcGFnZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRl
eHRDaGVja2VyQ29tcGxldGlvbihyZXF1ZXN0SUQsIHJlcXVlc3REYXRhLCBwYWdlKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dENoZWNrZXJDb21wbGV0aW9uKHJlcXVlc3RJRCwgcmVx
dWVzdERhdGEsIHBhZ2UpKTsKIH0KIAogVGV4dENoZWNrZXJDb21wbGV0aW9uOjpUZXh0Q2hlY2tl
ckNvbXBsZXRpb24odWludDY0X3QgcmVxdWVzdElELCBjb25zdCBUZXh0Q2hlY2tpbmdSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdGEsIFdlYlBhZ2VQcm94eSogcGFnZSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9UZXh0Q2hlY2tlckNvbXBsZXRpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvVGV4dENoZWNrZXJDb21wbGV0aW9uLmgJKHJldmlzaW9uIDIx
NjQ0OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9UZXh0Q2hlY2tlckNvbXBsZXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRl
ZiBUZXh0Q2hlY2tlckNvbXBsZXRpb25faAotI2RlZmluZSBUZXh0Q2hlY2tlckNvbXBsZXRpb25f
aAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL1RleHRDaGVja2luZy5oPgpAQCAtMzQsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgVGV4dENoZWNrZXJDb21wbGV0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8VGV4
dENoZWNrZXJDb21wbGV0aW9uPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4
dENoZWNrZXJDb21wbGV0aW9uPiBjcmVhdGUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJD
b3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YSYsIFdlYlBhZ2VQcm94eSopOworICAgIHN0YXRp
YyBSZWY8VGV4dENoZWNrZXJDb21wbGV0aW9uPiBjcmVhdGUodWludDY0X3QgcmVxdWVzdElELCBj
b25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YSYsIFdlYlBhZ2VQcm94eSopOwog
CiAgICAgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nUmVxdWVzdERhdGEmIHRleHRDaGVja2lu
Z1JlcXVlc3REYXRhKCkgY29uc3Q7CiAgICAgaW50NjRfdCBzcGVsbERvY3VtZW50VGFnKCk7CkBA
IC01MCw1ICs0OSwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmIC8vIFRleHRDaGVja2VyQ29tcGxldGlvbl9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29sb3JQaWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29sb3JQaWNrZXIuaAkocmV2aXNpb24gMjE2NDQ4KQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDgg
KzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZu
ZGVmIFdlYkNvbG9yUGlja2VyX2gKLSNkZWZpbmUgV2ViQ29sb3JQaWNrZXJfaAorI3ByYWdtYSBv
bmNlCiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKIApAQCAtNTAsOSArNDksOSBAQCBw
dWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRDb2xvclBpY2tlcigpID0gMDsKICAg
ICB9OwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZShDbGll
bnQqIGNsaWVudCkKKyAgICBzdGF0aWMgUmVmPFdlYkNvbG9yUGlja2VyPiBjcmVhdGUoQ2xpZW50
KiBjbGllbnQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvbG9yUGlj
a2VyKGNsaWVudCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJDb2xvclBpY2tl
cihjbGllbnQpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5XZWJDb2xvclBpY2tlcigpOwpAQCAt
NzIsNSArNzEsMyBAQCBwcm90ZWN0ZWQ6CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlm
IC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotCi0jZW5kaWYgLy8gV2ViQ29sb3JQaWNrZXJf
aApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjE2NDQ4KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw5ICszMSw5IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QYXNzUmVmUHRyPFdlYkNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M+IFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShX
ZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCitSZWY8V2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4g
V2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlKFdlYlByb2Nlc3NQcm94eSogcHJvY2Vz
cykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
cHJvY2VzcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MocHJvY2VzcykpOwogfQogCiBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpXZWJDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aAkocmV2aXNpb24gMjE2NDQ4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViQ29ubmVj
dGlvblRvV2ViUHJvY2Vzc19oCi0jZGVmaW5lIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NfaAor
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJXZWJDb25uZWN0aW9uLmgiCiAKQEAgLTM0LDcgKzMz
LDcgQEAgY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogCiBjbGFzcyBXZWJDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzIDogcHVibGljIFdlYkNvbm5lY3Rpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IGNyZWF0ZShXZWJQcm9jZXNzUHJveHkq
KTsKKyAgICBzdGF0aWMgUmVmPFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IGNyZWF0ZShXZWJQ
cm9jZXNzUHJveHkqKTsKIAogICAgIFdlYlByb2Nlc3NQcm94eSogd2ViUHJvY2Vzc1Byb3h5KCkg
Y29uc3QgeyByZXR1cm4gbV9wcm9jZXNzOyB9CiAKQEAgLTU2LDUgKzU1LDMgQEAgcHJpdmF0ZToK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViQ29ubmVjdGlvblRv
V2ViUHJvY2Vzc19oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dElu
amVjdGVkQnVuZGxlQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcAkocmV2aXNpb24gMjE2NDQ4
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNs
aWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDEwICs1MiwxMCBAQCB2b2lkIFdlYkNvbnRl
eHRJbmplY3RlZEJ1bmRsZUNsaWVudDo6ZGlkCiAgICAgcmV0dXJuRGF0YSA9IGFkb3B0UmVmKHRv
SW1wbChyZXR1cm5EYXRhUmVmKSk7CiB9CiAKLVBhc3NSZWZQdHI8QVBJOjpPYmplY3Q+IFdlYkNv
bnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudDo6Z2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlv
blVzZXJEYXRhKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKK1JlZlB0cjxBUEk6Ok9iamVj
dD4gV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50OjpnZXRJbmplY3RlZEJ1bmRsZUluaXRp
YWxpemF0aW9uVXNlckRhdGEoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQogewogICAgIGlm
ICghbV9jbGllbnQuZ2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhKQotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gYWRv
cHRSZWYodG9JbXBsKG1fY2xpZW50LmdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2Vy
RGF0YSh0b0FQSShwcm9jZXNzUG9vbCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpKTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dEluamVjdGVkQnVuZGxlQ2xpZW50LmgJKHJldmlzaW9uIDIxNjQ0OCkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZm5kZWYgV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50X2gKLSNkZWZp
bmUgV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50X2gKKyNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiQVBJQ2xpZW50LmgiCiAjaW5jbHVkZSAiV0tDb250ZXh0LmgiCkBAIC00Niw5ICs0NSw3
IEBAIGNsYXNzIFdlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudCA6IHAKIHB1YmxpYzoKICAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYlByb2Nlc3NQb29s
KiwgY29uc3QgU3RyaW5nJiwgQVBJOjpPYmplY3QqKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5j
aHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2ViUHJvY2Vzc1Bvb2wqLCBjb25zdCBT
dHJpbmcmLCBBUEk6Ok9iamVjdCosIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHJldHVybkRhdGEpOwot
ICAgIFBhc3NSZWZQdHI8QVBJOjpPYmplY3Q+IGdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRp
b25Vc2VyRGF0YShXZWJQcm9jZXNzUG9vbCopOworICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gZ2V0
SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhKFdlYlByb2Nlc3NQb29sKik7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYkNvbnRleHRJbmplY3Rl
ZEJ1bmRsZUNsaWVudF9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dE1lbnVMaXN0ZW5lclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHRNZW51TGlzdGVuZXJQcm94eS5oCShyZXZpc2lvbiAyMTY0NDgpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDkgKzM4LDkgQEAgY2xhc3MgV2ViQ29udGV4dE1lbnVQcm94eU1h
YzsKIAogY2xhc3MgV2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5IDogcHVibGljIEFQSTo6T2Jq
ZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6Q29udGV4dE1lbnVMaXN0ZW5lcj4gewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51TGlzdGVuZXJQcm94eT4gY3Jl
YXRlKFdlYkNvbnRleHRNZW51UHJveHkqIGNvbnRleHRNZW51TWFjKQorICAgIHN0YXRpYyBSZWY8
V2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5PiBjcmVhdGUoV2ViQ29udGV4dE1lbnVQcm94eSog
Y29udGV4dE1lbnVNYWMpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNv
bnRleHRNZW51TGlzdGVuZXJQcm94eShjb250ZXh0TWVudU1hYykpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkoY29udGV4dE1lbnVNYWMp
KTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5XZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkoKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2Vy
UHJveHkuY3BwCShyZXZpc2lvbiAyMTY0NDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29va2llTWFuYWdlclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsOSArNDQsOSBA
QCBjb25zdCBjaGFyKiBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnN1cHBsCiAgICAgcmV0dXJuICJX
ZWJDb29raWVNYW5hZ2VyUHJveHkiOwogfQogCi1QYXNzUmVmUHRyPFdlYkNvb2tpZU1hbmFnZXJQ
cm94eT4gV2ViQ29va2llTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nl
c3NQb29sKQorUmVmPFdlYkNvb2tpZU1hbmFnZXJQcm94eT4gV2ViQ29va2llTWFuYWdlclByb3h5
OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQogewotICAgIHJldHVybiBhZG9w
dFJlZihuZXcgV2ViQ29va2llTWFuYWdlclByb3h5KHByb2Nlc3NQb29sKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViQ29va2llTWFuYWdlclByb3h5KHByb2Nlc3NQb29sKSk7CiB9CiAK
IFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6V2ViQ29va2llTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQ
b29sKiBwcm9jZXNzUG9vbCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29r
aWVNYW5hZ2VyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29va2llTWFuYWdlclByb3h5LmgJKHJldmlzaW9uIDIxNjQ0OCkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAt
MjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZm5kZWYgV2ViQ29va2llTWFuYWdlclByb3h5X2gKLSNkZWZpbmUgV2ViQ29va2llTWFuYWdl
clByb3h5X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiR2VuZXJpY0NhbGxiYWNrLmgiCkBAIC02MSw3ICs2MCw3IEBAIGNsYXNzIFdlYkNvb2tpZU1h
bmFnZXJQcm94eSA6IHB1YmxpYyBBUEkKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgY2hhciog
c3VwcGxlbWVudE5hbWUoKTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvb2tpZU1hbmFn
ZXJQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sKik7CisgICAgc3RhdGljIFJlZjxXZWJDb29r
aWVNYW5hZ2VyUHJveHk+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCopOwogICAgIHZpcnR1YWwgfldl
YkNvb2tpZU1hbmFnZXJQcm94eSgpOwogCiAgICAgdm9pZCBpbml0aWFsaXplQ2xpZW50KGNvbnN0
IFdLQ29va2llTWFuYWdlckNsaWVudEJhc2UqKTsKQEAgLTE1MCw1ICsxNDksMyBAQCBwcml2YXRl
OgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJDb29raWVNYW5h
Z2VyUHJveHlfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5k
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRWRpdENv
bW1hbmRQcm94eS5oCShyZXZpc2lvbiAyMTY0NDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViRWRpdENvbW1hbmRQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJF
ZGl0Q29tbWFuZFByb3h5X2gKLSNkZWZpbmUgV2ViRWRpdENvbW1hbmRQcm94eV9oCisjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdEFj
dGlvbi5oPgpAQCAtMzgsOSArMzcsOSBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiAKIGNsYXNzIFdl
YkVkaXRDb21tYW5kUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpU
eXBlOjpFZGl0Q29tbWFuZFByb3h5PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
V2ViRWRpdENvbW1hbmRQcm94eT4gY3JlYXRlKHVpbnQ2NF90IGNvbW1hbmRJRCwgV2ViQ29yZTo6
RWRpdEFjdGlvbiBlZGl0QWN0aW9uLCBXZWJQYWdlUHJveHkqIHBhZ2UpCisgICAgc3RhdGljIFJl
ZjxXZWJFZGl0Q29tbWFuZFByb3h5PiBjcmVhdGUodWludDY0X3QgY29tbWFuZElELCBXZWJDb3Jl
OjpFZGl0QWN0aW9uIGVkaXRBY3Rpb24sIFdlYlBhZ2VQcm94eSogcGFnZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViRWRpdENvbW1hbmRQcm94eShjb21tYW5kSUQsIGVk
aXRBY3Rpb24sIHBhZ2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViRWRpdENv
bW1hbmRQcm94eShjb21tYW5kSUQsIGVkaXRBY3Rpb24sIHBhZ2UpKTsKICAgICB9CiAgICAgfldl
YkVkaXRDb21tYW5kUHJveHkoKTsKIApAQCAtNjMsNSArNjIsMyBAQCBwcml2YXRlOgogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJFZGl0Q29tbWFuZFByb3h5X2gK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVy
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRm9ybVN1
Ym1pc3Npb25MaXN0ZW5lclByb3h5LmgJKHJldmlzaW9uIDIxNjQ0OCkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkuaAkod29ya2luZyBj
b3B5KQpAQCAtNDIsOSArNDIsOSBAQCBjbGFzcyBXZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJv
eHkgOiBwCiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGU6OkZv
cm1TdWJtaXNzaW9uTGlzdGVuZXI7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJGb3JtU3Vi
bWlzc2lvbkxpc3RlbmVyUHJveHk+IGNyZWF0ZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgdWludDY0
X3QgbGlzdGVuZXJJRCkKKyAgICBzdGF0aWMgUmVmPFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQ
cm94eT4gY3JlYXRlKFdlYkZyYW1lUHJveHkqIGZyYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklEKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJGb3JtU3VibWlzc2lvbkxpc3Rl
bmVyUHJveHkoZnJhbWUsIGxpc3RlbmVySUQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5KGZyYW1lLCBsaXN0ZW5lcklEKSk7CiAg
ICAgfQogCiAgICAgdm9pZCBjb250aW51ZVN1Ym1pc3Npb24oKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJGcmFtZUxpc3RlbmVyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVMaXN0ZW5lclByb3h5LmgJKHJldmlzaW9uIDIx
NjQ0OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZUxpc3RlbmVyUHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIkFQSU5hdmlnYXRp
b24uaCIKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9h
ZGVyVHlwZXMuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkZyYW1lUHJveHkuaAkocmV2aXNpb24gMjE2NDQ4KQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIs
NiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklORykKQEAgLTU5LDkgKzU4LDkgQEAgdHlwZWRlZiBHZW5lcmljQ2Fs
bGJhY2s8QVBJOjpEYXRhKj4gRGF0YQogCiBjbGFzcyBXZWJGcmFtZVByb3h5IDogcHVibGljIEFQ
STo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6RnJhbWU+IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJGcmFtZVByb3h5PiBjcmVhdGUoV2ViUGFnZVByb3h5KiBwYWdl
LCB1aW50NjRfdCBmcmFtZUlEKQorICAgIHN0YXRpYyBSZWY8V2ViRnJhbWVQcm94eT4gY3JlYXRl
KFdlYlBhZ2VQcm94eSogcGFnZSwgdWludDY0X3QgZnJhbWVJRCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgV2ViRnJhbWVQcm94eShwYWdlLCBmcmFtZUlEKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkZyYW1lUHJveHkocGFnZSwgZnJhbWVJRCkpOwogICAg
IH0KIAogICAgIHZpcnR1YWwgfldlYkZyYW1lUHJveHkoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAJKHJl
dmlzaW9uIDIxNjQ0OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksOSArMzksOSBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NSZWZQdHI8V2Vi
RnVsbFNjcmVlbk1hbmFnZXJQcm94eT4gV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRl
KFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCYgY2xp
ZW50KQorUmVmPFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk+IFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHk6OmNyZWF0ZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHlDbGllbnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHkocGFnZSwgY2xpZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eShwYWdlLCBjbGllbnQpKTsKIH0KIAogV2ViRnVsbFNj
cmVlbk1hbmFnZXJQcm94eTo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkm
IHBhZ2UsIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQmIGNsaWVudCkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHkuaAkocmV2aXNpb24gMjE2NDQ4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTMgKzIzLDExIEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJG
dWxsU2NyZWVuTWFuYWdlclByb3h5X2gKLSNkZWZpbmUgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94
eV9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKIAogI2luY2x1
ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTU1
LDcgKzUzLDcgQEAgcHVibGljOgogCiBjbGFzcyBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5IDog
cHVibGljIFJlZkNvdW50ZWQ8V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eT4sIHB1YmxpYyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViRnVs
bFNjcmVlbk1hbmFnZXJQcm94eT4gY3JlYXRlKFdlYlBhZ2VQcm94eSYsIFdlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHlDbGllbnQmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHk+IGNyZWF0ZShXZWJQYWdlUHJveHkmLCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xp
ZW50Jik7CiAgICAgdmlydHVhbCB+V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSgpOwogCiAgICAg
dm9pZCBpbnZhbGlkYXRlKCk7CkBAIC05MSw1ICs4OSwzIEBAIHByaXZhdGU6CiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLQotI2VuZGlm
IC8vIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwCShyZXZp
c2lvbiAyMTY0NDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw5ICszNyw5IEBAIGNvbnN0IGNo
YXIqIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjoKICAgICByZXR1cm4gIldlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5IjsKIH0KIAotUGFzc1JlZlB0cjxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eT4gV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUG9vbCog
cHJvY2Vzc1Bvb2wpCitSZWY8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+IFdlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQogewot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkocHJvY2Vz
c1Bvb2wpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eShwcm9jZXNzUG9vbCkpOwogfQogCiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5LmgJKHJldmlzaW9uIDIxNjQ0OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsy
Myw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRl
ZiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eV9oCi0jZGVmaW5lIFdlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5j
bHVkZSAiQ29ubmVjdGlvbi5oIgpAQCAtNDMsNyArNDIsNyBAQCBjbGFzcyBXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eSA6IHB1YmxpCiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1
cHBsZW1lbnROYW1lKCk7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sKik7CisgICAgc3RhdGljIFJlZjxXZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sKik7CiAKICAgICB2
b2lkIGluaXRpYWxpemVQcm92aWRlcihjb25zdCBXS0dlb2xvY2F0aW9uUHJvdmlkZXJCYXNlKik7
CiAKQEAgLTgzLDUgKzgyLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAotCi0jZW5kaWYgLy8gV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlfaApJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHAJKHJldmlzaW9uIDIxNjQ0
OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw5ICszOSw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc1JlZlB0cjxXZWJJY29uRGF0YWJhc2U+IFdlYkljb25E
YXRhYmFzZTo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKK1JlZjxXZWJJY29u
RGF0YWJhc2U+IFdlYkljb25EYXRhYmFzZTo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNz
UG9vbCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkljb25EYXRhYmFzZSgqcHJvY2Vz
c1Bvb2wpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJJY29uRGF0YWJhc2UoKnByb2Nl
c3NQb29sKSk7CiB9CiAKIFdlYkljb25EYXRhYmFzZTo6fldlYkljb25EYXRhYmFzZSgpCkBAIC0z
MTUsNyArMzE1LDcgQEAgdm9pZCBXZWJJY29uRGF0YWJhc2U6OnNldFByaXZhdGVCcm93c2luZwog
ICAgICAgICBtX2ljb25EYXRhYmFzZUltcGwtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQocHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCk7CiB9CiAKLVBhc3NSZWZQdHI8QVBJOjpEYXRhPiBXZWJJY29u
RGF0YWJhc2U6Omljb25EYXRhRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwpCitSZWZQ
dHI8QVBJOjpEYXRhPiBXZWJJY29uRGF0YWJhc2U6Omljb25EYXRhRm9yUGFnZVVSTChjb25zdCBT
dHJpbmcmIHBhZ2VVUkwpCiB7CiAgICAgYXV0byogaW1hZ2UgPSBpbWFnZUZvclBhZ2VVUkwocGFn
ZVVSTCk7CiAgICAgaWYgKCFpbWFnZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJJY29uRGF0YWJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViSWNvbkRhdGFiYXNlLmgJKHJldmlzaW9uIDIxNjQ0OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBA
QCBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIAogY2xhc3MgV2ViSWNvbkRhdGFiYXNlIDogcHVibGlj
IEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6SWNvbkRhdGFiYXNlPiwgcHJpdmF0
ZSBXZWJDb3JlOjpJY29uRGF0YWJhc2VDbGllbnQsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkljb25EYXRhYmFzZT4gY3Jl
YXRlKFdlYlByb2Nlc3NQb29sKik7CisgICAgc3RhdGljIFJlZjxXZWJJY29uRGF0YWJhc2U+IGNy
ZWF0ZShXZWJQcm9jZXNzUG9vbCopOwogICAgIHZpcnR1YWwgfldlYkljb25EYXRhYmFzZSgpOwog
CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKIAogICAg
IFdlYkNvcmU6OkltYWdlKiBpbWFnZUZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgaWNvblNpemUgPSBXZWJDb3JlOjpJbnRTaXplKDMyLCAzMikpOwogICAg
IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yUGFnZVVSTChjb25zdCBTdHJp
bmcmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBpY29uU2l6ZSA9IFdlYkNvcmU6OkludFNpemUo
MzIsIDMyKSk7Ci0gICAgUGFzc1JlZlB0cjxBUEk6OkRhdGE+IGljb25EYXRhRm9yUGFnZVVSTChj
b25zdCBTdHJpbmcmIHBhZ2VVUkwpOworICAgIFJlZlB0cjxBUEk6OkRhdGE+IGljb25EYXRhRm9y
UGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwpOwogCiAgICAgYm9vbCBpc09wZW4oKTsKICAg
ICBib29sIGlzVXJsSW1wb3J0Q29tcGxldGVkKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcAkocmV2
aXNpb24gMjE2NDQ4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lv
bkZvY3VzTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDkgKzM3LDkgQEAgY29uc3Qg
Y2hhciogV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOgogICAgIHJldHVybiAiV2ViTWVkaWFT
ZXNzaW9uRm9jdXNNYW5hZ2VyIjsKIH0KIAotUGFzc1JlZlB0cjxXZWJNZWRpYVNlc3Npb25Gb2N1
c01hbmFnZXI+IFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6Y3JlYXRlKFdlYlByb2Nlc3NQ
b29sKiBwcm9jZXNzUG9vbCkKK1JlZjxXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI+IFdlYk1l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9v
bCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdl
cihwcm9jZXNzUG9vbCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYk1lZGlhU2Vzc2lv
bkZvY3VzTWFuYWdlcihwcm9jZXNzUG9vbCkpOwogfQogCiBXZWJNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXI6OldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcihXZWJQcm9jZXNzUG9vbCogcHJvY2Vz
c1Bvb2wpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9j
dXNNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk1l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oCShyZXZpc2lvbiAyMTY0NDgpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi0jaWZuZGVmIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcl9oCi0jZGVmaW5lIFdl
Yk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcl9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShN
RURJQV9TRVNTSU9OKQogCkBAIC00MSw3ICs0MCw3IEBAIGNsYXNzIFdlYk1lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlciA6IHB1YmwKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxl
bWVudE5hbWUoKTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYk1lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlcj4gY3JlYXRlKFdlYlByb2Nlc3NQb29sKik7CisgICAgc3RhdGljIFJlZjxXZWJNZWRp
YVNlc3Npb25Gb2N1c01hbmFnZXI+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCopOwogCiAgICAgdm9p
ZCBpbml0aWFsaXplQ2xpZW50KGNvbnN0IFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50
QmFzZSopOwogCkBAIC03Miw1ICs3MSwzIEBAIHByaXZhdGU6CiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi0jZW5kaWYgLyogV2ViTWVk
aWFTZXNzaW9uRm9jdXNNYW5hZ2VyX2ggKi8KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaAkocmV2
aXNpb24gMjE2NDQ4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTIgKzIzLDEwIEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5X2gKLSNkZWZpbmUgV2ViT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXJQcm94eV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00NCw5ICs0
Miw5IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgV2ViT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXJQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkZy
YW1lUG9saWN5TGlzdGVuZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5PiBjcmVhdGUoV2ViUGFnZVByb3h5KiBwYWdlKQor
ICAgIHN0YXRpYyBSZWY8V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eT4gY3JlYXRlKFdl
YlBhZ2VQcm94eSogcGFnZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eShwYWdlKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkocGFnZSkpOwogICAgIH0K
IAogICAgIHZpcnR1YWwgfldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkoKTsKQEAgLTY2
LDUgKzY0LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5k
aWYgLy8gV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eV9oCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcAkocmV2aXNpb24gMjE2NDQ4KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU0LDkgKzU0LDkgQEAgc3RhdGljIFdlYlBhZ2VHcm91cE1hcCYgd2ViUGFnZUdyb3VwTWFwKAog
ICAgIHJldHVybiBtYXA7CiB9CiAKLVBhc3NSZWZQdHI8V2ViUGFnZUdyb3VwPiBXZWJQYWdlR3Jv
dXA6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGJvb2wgdmlzaWJsZVRvSW5qZWN0
ZWRCdW5kbGUsIGJvb2wgdmlzaWJsZVRvSGlzdG9yeUNsaWVudCkKK1JlZjxXZWJQYWdlR3JvdXA+
IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgYm9vbCB2aXNp
YmxlVG9JbmplY3RlZEJ1bmRsZSwgYm9vbCB2aXNpYmxlVG9IaXN0b3J5Q2xpZW50KQogewotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgV2ViUGFnZUdyb3VwKGlkZW50aWZpZXIsIHZpc2libGVUb0lu
amVjdGVkQnVuZGxlLCB2aXNpYmxlVG9IaXN0b3J5Q2xpZW50KSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgV2ViUGFnZUdyb3VwKGlkZW50aWZpZXIsIHZpc2libGVUb0luamVjdGVkQnVuZGxl
LCB2aXNpYmxlVG9IaXN0b3J5Q2xpZW50KSk7CiB9CiAKIFJlZjxXZWJQYWdlR3JvdXA+IFdlYlBh
Z2VHcm91cDo6Y3JlYXRlTm9uTnVsbChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGJvb2wgdmlz
aWJsZVRvSW5qZWN0ZWRCdW5kbGUsIGJvb2wgdmlzaWJsZVRvSGlzdG9yeUNsaWVudCkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmgJKHJldmlzaW9uIDIxNjQ0OCkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuaAkod29ya2luZyBjb3B5
KQpAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsK
IGNsYXNzIFdlYlBhZ2VHcm91cCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6
OlR5cGU6OlBhZ2VHcm91cD4gewogcHVibGljOgogICAgIFdlYlBhZ2VHcm91cChjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIgPSBTdHJpbmcoKSwgYm9vbCB2aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSA9
IHRydWUsIGJvb2wgdmlzaWJsZVRvSGlzdG9yeUNsaWVudCA9IHRydWUpOwotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFdlYlBhZ2VHcm91cD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciA9
IFN0cmluZygpLCBib29sIHZpc2libGVUb0luamVjdGVkQnVuZGxlID0gdHJ1ZSwgYm9vbCB2aXNp
YmxlVG9IaXN0b3J5Q2xpZW50ID0gdHJ1ZSk7CisgICAgc3RhdGljIFJlZjxXZWJQYWdlR3JvdXA+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIgPSBTdHJpbmcoKSwgYm9vbCB2aXNpYmxl
VG9JbmplY3RlZEJ1bmRsZSA9IHRydWUsIGJvb2wgdmlzaWJsZVRvSGlzdG9yeUNsaWVudCA9IHRy
dWUpOwogICAgIHN0YXRpYyBSZWY8V2ViUGFnZUdyb3VwPiBjcmVhdGVOb25OdWxsKGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllciA9IFN0cmluZygpLCBib29sIHZpc2libGVUb0luamVjdGVkQnVuZGxl
ID0gdHJ1ZSwgYm9vbCB2aXNpYmxlVG9IaXN0b3J5Q2xpZW50ID0gdHJ1ZSk7CiAgICAgc3RhdGlj
IFdlYlBhZ2VHcm91cCogZ2V0KHVpbnQ2NF90IHBhZ2VHcm91cElEKTsKIApJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIxNjQ0OCkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMDM0LDE2ICszMDM0LDE1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRXZWJBcmNoaXZl
T2ZGcmFtZSgKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFdlYkFy
Y2hpdmVPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpmb3JjZVJlcGFpbnQoUGFzc1JlZlB0cjxWb2lkQ2FsbGJh
Y2s+IHBycENhbGxiYWNrKQordm9pZCBXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludChSZWZQdHI8
Vm9pZENhbGxiYWNrPiYmIGNhbGxiYWNrKQogewotICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IGNh
bGxiYWNrID0gcHJwQ2FsbGJhY2s7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAgICAgLy8g
RklYTUU6IElmIHRoZSBwYWdlIGlzIGludmFsaWQgd2Ugc2hvdWxkIG5vdCBjYWxsIHRoZSBjYWxs
YmFjay4gSXQnZCBiZSBiZXR0ZXIgdG8ganVzdCByZXR1cm4gZmFsc2UgZnJvbSBmb3JjZVJlcGFp
bnQuCiAgICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93
bmVyV2FzSW52YWxpZGF0ZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc3RkOjpm
dW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4gZGlkRm9yY2VSZXBhaW50Q2FsbGJh
Y2sgPSBbdGhpcywgY2FsbGJhY2tdKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICBG
dW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiBkaWRGb3JjZVJlcGFpbnRDYWxsYmFj
ayA9IFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShDYWxsYmFja0Jhc2U6OkVy
cm9yIGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGVycm9yICE9IENhbGxiYWNrQmFzZTo6
RXJyb3I6Ok5vbmUpIHsKICAgICAgICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKGVycm9yKTsK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTMwNTQsNyArMzA1Myw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpmb3JjZVJlcGFpbnQoUGFzc1JlZlAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgIAotICAgICAgICBjYWxsQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlKFtjYWxsYmFj
a10oQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBjYWxsQWZ0ZXJOZXh0UHJl
c2VudGF0aW9uVXBkYXRlKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShDYWxsYmFja0Jh
c2U6OkVycm9yIGVycm9yKSB7CiAgICAgICAgICAgICBpZiAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNl
OjpFcnJvcjo6Tm9uZSkgewogICAgICAgICAgICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKGVy
cm9yKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0zMDY0LDcgKzMwNjMsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Zm9yY2VSZXBhaW50KFBhc3NSZWZQCiAgICAgICAgIH0pOwogICAgIH07
CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KGRpZEZvcmNlUmVw
YWludENhbGxiYWNrLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRv
a2VuKCkpOworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShkaWRGb3JjZVJlcGFpbnRDYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9kcmF3aW5nQXJlYS0+d2FpdEZvckJhY2tpbmdT
dG9yZVVwZGF0ZU9uTmV4dFBhaW50KCk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpGb3JjZVJlcGFpbnQoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsgCiB9CkBAIC01OTky
LDU3ICs1OTkxLDUzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjplbmRQcmludGluZygpCiAgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFbmRQcmludGluZygpLCBtX3BhZ2VJRCwg
cHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpjb21wdXRlUGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVBy
b3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIFBhc3NSZWZQdHI8Q29tcHV0
ZWRQYWdlc0NhbGxiYWNrPiBwcnBDYWxsYmFjaykKK3ZvaWQgV2ViUGFnZVByb3h5Ojpjb21wdXRl
UGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBw
cmludEluZm8sIFJlZjxDb21wdXRlZFBhZ2VzQ2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7Ci0gICAg
UmVmUHRyPENvbXB1dGVkUGFnZXNDYWxsYmFjaz4gY2FsbGJhY2sgPSBwcnBDYWxsYmFjazsKICAg
ICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNr
LT5jYWxsYmFja0lEKCk7Ci0gICAgbV9jYWxsYmFja3MucHV0KGNhbGxiYWNrKTsKKyAgICBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjaykpOwogICAgIG1faXNJblByaW50aW5nTW9kZSA9
IHRydWU7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21wdXRlUGFn
ZXNGb3JQcmludGluZyhmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIGNhbGxiYWNrSUQpLCBt
X3BhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0
aW9uKSk7CiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgV2ViUGFnZVByb3h5OjpkcmF3
UmVjdFRvSW1hZ2UoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJ
bmZvLCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBpbWFnZVNp
emUsIFBhc3NSZWZQdHI8SW1hZ2VDYWxsYmFjaz4gcHJwQ2FsbGJhY2spCit2b2lkIFdlYlBhZ2VQ
cm94eTo6ZHJhd1JlY3RUb0ltYWdlKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludElu
Zm8mIHByaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgaW1hZ2VTaXplLCBSZWY8SW1hZ2VDYWxsYmFjaz4mJiBjYWxsYmFjaykKIHsKLSAgICBSZWZQ
dHI8SW1hZ2VDYWxsYmFjaz4gY2FsbGJhY2sgPSBwcnBDYWxsYmFjazsKICAgICBpZiAoIWlzVmFs
aWQoKSkgewogICAgICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIAogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJh
Y2tJRCgpOwotICAgIG1fY2FsbGJhY2tzLnB1dChjYWxsYmFjayk7CisgICAgbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRyYXdSZWN0VG9JbWFnZShmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIHJlY3Qs
IGltYWdlU2l6ZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlELCBwcmludGluZ1NlbmRPcHRpb25zKG1f
aXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OmRyYXdQYWdlc1RvUERGKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHBy
aW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBQYXNzUmVmUHRyPERhdGFD
YWxsYmFjaz4gcHJwQ2FsbGJhY2spCit2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzVG9QREYo
V2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1aW50MzJf
dCBmaXJzdCwgdWludDMyX3QgY291bnQsIFJlZjxEYXRhQ2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7
Ci0gICAgUmVmUHRyPERhdGFDYWxsYmFjaz4gY2FsbGJhY2sgPSBwcnBDYWxsYmFjazsKICAgICBp
ZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIAogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFj
ay0+Y2FsbGJhY2tJRCgpOwotICAgIG1fY2FsbGJhY2tzLnB1dChjYWxsYmFjayk7CisgICAgbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkRyYXdQYWdlc1RvUERGKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5m
bywgZmlyc3QsIGNvdW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9wdGlv
bnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwogfQogI2VsaWYgUExBVEZPUk0o
R1RLKQotdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1lUHJv
eHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgUGFzc1JlZlB0cjxQcmludEZp
bmlzaGVkQ2FsbGJhY2s+IGRpZFByaW50Q2FsbGJhY2spCit2b2lkIFdlYlBhZ2VQcm94eTo6ZHJh
d1BhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYg
cHJpbnRJbmZvLCBSZWY8UHJpbnRGaW5pc2hlZENhbGxiYWNrPiYmIGNhbGxiYWNrKQogewotICAg
IFJlZlB0cjxQcmludEZpbmlzaGVkQ2FsbGJhY2s+IGNhbGxiYWNrID0gZGlkUHJpbnRDYWxsYmFj
azsKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNh
bGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0gICAgbV9jYWxsYmFja3MucHV0KGNhbGxiYWNrKTsKKyAg
ICBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjaykpOwogICAgIG1faXNJblByaW50aW5n
TW9kZSA9IHRydWU7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3
UGFnZXNGb3JQcmludGluZyhmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIGNhbGxiYWNrSUQp
LCBtX3BhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3Bl
cmF0aW9uKSk7CiB9CkBAIC02NzQ0LDcgKzY3MzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2Fs
bEFmdGVyTmV4dFByZXNlbnRhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2RyYXdp
bmdBcmVhLT5kaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKGNhbGxiYWNrKTsKKyAgICBtX2Ry
YXdpbmdBcmVhLT5kaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKFdURk1vdmUoY2FsbGJhY2sp
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1l
bnQoYm9vbCBzaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50KQpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjE2NDQ4KQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC04MDcsNyAr
ODA3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94
eSosIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+KTsKICAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJveHkqLCBGdW5j
dGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9p
ZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiwgc3RkOjpmdW5jdGlvbjx2
b2lkIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25z
dCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxi
YWNrRnVuY3Rpb24pOwotICAgIHZvaWQgZm9yY2VSZXBhaW50KFBhc3NSZWZQdHI8Vm9pZENhbGxi
YWNrPik7CisgICAgdm9pZCBmb3JjZVJlcGFpbnQoUmVmUHRyPFZvaWRDYWxsYmFjaz4mJik7CiAK
ICAgICBmbG9hdCBoZWFkZXJIZWlnaHQoV2ViRnJhbWVQcm94eSopOwogICAgIGZsb2F0IGZvb3Rl
ckhlaWdodChXZWJGcmFtZVByb3h5Kik7CkBAIC05MzYsMTYgKzkzNiwxNiBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGJlZ2luUHJpbnRpbmcoV2ViRnJhbWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYp
OwogICAgIHZvaWQgZW5kUHJpbnRpbmcoKTsKLSAgICB2b2lkIGNvbXB1dGVQYWdlc0ZvclByaW50
aW5nKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQcmludEluZm8mLCBQYXNzUmVmUHRyPENvbXB1dGVk
UGFnZXNDYWxsYmFjaz4pOworICAgIHZvaWQgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoV2ViRnJh
bWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIFJlZjxDb21wdXRlZFBhZ2VzQ2FsbGJhY2s+JiYp
OwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgZHJhd1JlY3RUb0ltYWdlKFdlYkZyYW1l
UHJveHkqLCBjb25zdCBQcmludEluZm8mLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYsIFBhc3NSZWZQdHI8SW1hZ2VDYWxsYmFjaz4pOwotICAgIHZvaWQg
ZHJhd1BhZ2VzVG9QREYoV2ViRnJhbWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90
IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgUGFzc1JlZlB0cjxEYXRhQ2FsbGJhY2s+KTsKKyAgICB2
b2lkIGRyYXdSZWN0VG9JbWFnZShXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBSZWY8SW1hZ2VD
YWxsYmFjaz4mJik7CisgICAgdm9pZCBkcmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5KiwgY29u
c3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBSZWY8RGF0YUNh
bGxiYWNrPiYmKTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgdWludDMyX3QgY29tcHV0ZVBhZ2Vz
Rm9yUHJpbnRpbmdBbmREcmF3VG9QREYodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZv
JiwgRHJhd1RvUERGQ2FsbGJhY2s6OkNhbGxiYWNrRnVuY3Rpb24mJik7CiAgICAgdm9pZCBkcmF3
VG9QREZDYWxsYmFjayhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpOwogI2VuZGlmCiAjZWxpZiBQTEFURk9STShHVEspCi0gICAgdm9pZCBkcmF3
UGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgUGFzc1Jl
ZlB0cjxQcmludEZpbmlzaGVkQ2FsbGJhY2s+KTsKKyAgICB2b2lkIGRyYXdQYWdlc0ZvclByaW50
aW5nKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQcmludEluZm8mLCBSZWY8UHJpbnRGaW5pc2hlZENh
bGxiYWNrPiYmKTsKICNlbmRpZgogCiAgICAgUGFnZUxvYWRTdGF0ZSYgcGFnZUxvYWRTdGF0ZSgp
IHsgcmV0dXJuIG1fcGFnZUxvYWRTdGF0ZTsgfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwCShyZXZpc2lvbiAyMTY0NDgpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NSw3ICs0NSw3IEBAIFdLVHlwZUlEIFdLUGFnZUdyb3VwR2V0VHlwZUlEKCkKIFdLUGFn
ZUdyb3VwUmVmIFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIoV0tTdHJpbmdSZWYgaWRl
bnRpZmllcikKIHsKICAgICBhdXRvIHBhZ2VHcm91cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKHRv
V1RGU3RyaW5nKGlkZW50aWZpZXIpKTsKLSAgICByZXR1cm4gdG9BUEkocGFnZUdyb3VwLmxlYWtS
ZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKCZwYWdlR3JvdXAubGVha1JlZigpKTsKIH0KIAogdm9p
ZCBXS1BhZ2VHcm91cFNldFByZWZlcmVuY2VzKFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiwg
V0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvVGV4dENoZWNrZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9UZXh0Q2hlY2tlcklPUy5tbQkocmV2aXNpb24gMjE2NDQ4KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9UZXh0Q2hlY2tlcklPUy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQgVGV4dENoZWNrZXI6Omlnbm9yZVdvcmQoaW50
NjRfdCwgY28KICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFRleHRDaGVja2VyOjpy
ZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhQYXNzUmVmUHRyPFRleHRDaGVja2VyQ29tcGxldGlvbj4s
IGludDMyX3QpCit2b2lkIFRleHRDaGVja2VyOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhSZWY8
VGV4dENoZWNrZXJDb21wbGV0aW9uPiYmLCBpbnQzMl90KQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNr
ZXJNYWMubW0JKHJldmlzaW9uIDIxNjQ0OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvVGV4dENoZWNrZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTUwMCw3ICs1MDAsNyBAQCB2
b2lkIFRleHRDaGVja2VyOjppZ25vcmVXb3JkKGludDY0X3Qgc3BlCiAgICAgW1tOU1NwZWxsQ2hl
Y2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIGlnbm9yZVdvcmQ6d29yZCBpblNwZWxsRG9jdW1lbnRX
aXRoVGFnOnNwZWxsRG9jdW1lbnRUYWddOwogfQogCi12b2lkIFRleHRDaGVja2VyOjpyZXF1ZXN0
Q2hlY2tpbmdPZlN0cmluZyhQYXNzUmVmUHRyPFRleHRDaGVja2VyQ29tcGxldGlvbj4sIGludDMy
X3QpCit2b2lkIFRleHRDaGVja2VyOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhSZWY8VGV4dENo
ZWNrZXJDb21wbGV0aW9uPiYmLCBpbnQzMl90KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaAkocmV2aXNpb24gMjE2NDQ4
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhUHJveHlfaAotI2RlZmluZSBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYVByb3h5X2gKKyNwcmFnbWEgb25jZQogCiAjaWYgIVBMQVRGT1JNKElPUykKIApAQCAtODAs
NSArNzksMyBAQCBwcml2YXRlOgogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19EUkFXSU5HX0FSRUFf
UFJPWFkoVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eSwgRHJhd2luZ0FyZWFUeXBl
VGlsZWRDb3JlQW5pbWF0aW9uKQogCiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKLQotI2VuZGlm
IC8vIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHlfaApJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93
Q29udHJvbGxlci5tbQkocmV2aXNpb24gMjE2NDQ4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC00MjYsNyArNDI2LDcgQEAgLSAodm9pZClmaW5pc2hlZEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9u
OgogICAgIF9yZXBhaW50Q2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShbc2VsZl0oV2Vi
S2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CiAgICAgICAgIFtzZWxmIGNvbXBsZXRlRmluaXNo
RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25BZnRlclJlcGFpbnRdOwogICAgIH0pOwotICAgIF9wYWdl
LT5mb3JjZVJlcGFpbnQoX3JlcGFpbnRDYWxsYmFjayk7CisgICAgX3BhZ2UtPmZvcmNlUmVwYWlu
dChfcmVwYWludENhbGxiYWNrLmNvcHlSZWYoKSk7CiB9CiAKIC0gKHZvaWQpY29tcGxldGVGaW5p
c2hFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbkFmdGVyUmVwYWludApJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tCShyZXZpc2lvbiAyMTY0NDgp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNjUsNyArMjY1LDcgQEAgLSAodm9pZClfcHJlcGFyZVBERkRhdGFGb3JQ
cmludGluZ09uU2VjbwogICAgIF93ZWJGcmFtZS0+cGFnZSgpLT5iZWdpblByaW50aW5nKF93ZWJG
cmFtZS5nZXQoKSwgcHJpbnRJbmZvKTsKIAogICAgIElQQ0NhbGxiYWNrQ29udGV4dCogY29udGV4
dCA9IG5ldyBJUENDYWxsYmFja0NvbnRleHQ7Ci0gICAgUmVmUHRyPERhdGFDYWxsYmFjaz4gY2Fs
bGJhY2sgPSBEYXRhQ2FsbGJhY2s6OmNyZWF0ZShbY29udGV4dF0oQVBJOjpEYXRhKiBkYXRhLCBX
ZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICBhdXRvIGNhbGxiYWNrID0gRGF0YUNh
bGxiYWNrOjpjcmVhdGUoW2NvbnRleHRdKEFQSTo6RGF0YSogZGF0YSwgV2ViS2l0OjpDYWxsYmFj
a0Jhc2U6OkVycm9yKSB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPElQQ0NhbGxiYWNrQ29udGV4dD4gY29udGV4dERlbGV0ZXIo
Y29udGV4dCk7CkBAIC0yODYsNyArMjg2LDcgQEAgLSAodm9pZClfcHJlcGFyZVBERkRhdGFGb3JQ
cmludGluZ09uU2VjbwogICAgIGNvbnRleHQtPnZpZXcgPSBzZWxmOwogICAgIGNvbnRleHQtPmNh
bGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwogCi0gICAgX3dlYkZyYW1lLT5wYWdl
KCktPmRyYXdQYWdlc1RvUERGKF93ZWJGcmFtZS5nZXQoKSwgcHJpbnRJbmZvLCBmaXJzdFBhZ2Ug
LSAxLCBsYXN0UGFnZSAtIGZpcnN0UGFnZSArIDEsIGNhbGxiYWNrLmdldCgpKTsKKyAgICBfd2Vi
RnJhbWUtPnBhZ2UoKS0+ZHJhd1BhZ2VzVG9QREYoX3dlYkZyYW1lLmdldCgpLCBwcmludEluZm8s
IGZpcnN0UGFnZSAtIDEsIGxhc3RQYWdlIC0gZmlyc3RQYWdlICsgMSwgV1RGTW92ZShjYWxsYmFj
aykpOwogfQogCiBzdGF0aWMgdm9pZCBwYWdlRGlkQ29tcHV0ZVBhZ2VSZWN0cyhjb25zdCBWZWN0
b3I8V2ViQ29yZTo6SW50UmVjdD4mIHBhZ2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JG
b3JQcmludGluZywgSVBDQ2FsbGJhY2tDb250ZXh0KiBjb250ZXh0KQpAQCAtNTE3LDcgKzUxNyw3
IEBAIC0gKHZvaWQpX2RyYXdQcmV2aWV3OihOU1JlY3QpbnNSZWN0CiAgICAgICAgICAgICAgICAg
X3dlYkZyYW1lLT5wYWdlKCktPmJlZ2luUHJpbnRpbmcoX3dlYkZyYW1lLmdldCgpLCBQcmludElu
Zm8oW19wcmludE9wZXJhdGlvbiBwcmludEluZm9dKSk7CiAKICAgICAgICAgICAgICAgICBJUEND
YWxsYmFja0NvbnRleHQqIGNvbnRleHQgPSBuZXcgSVBDQ2FsbGJhY2tDb250ZXh0OwotICAgICAg
ICAgICAgICAgIFJlZlB0cjxJbWFnZUNhbGxiYWNrPiBjYWxsYmFjayA9IEltYWdlQ2FsbGJhY2s6
OmNyZWF0ZShbY29udGV4dF0oY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlSGFu
ZGxlLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICAgICAgICAgICAgICBhdXRv
IGNhbGxiYWNrID0gSW1hZ2VDYWxsYmFjazo6Y3JlYXRlKFtjb250ZXh0XShjb25zdCBTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2VIYW5kbGUsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJv
cikgewogICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SVBDQ2FsbGJhY2tDb250
ZXh0PiBjb250ZXh0RGVsZXRlcihjb250ZXh0KTsKICAgICAgICAgICAgICAgICAgICAgcGFnZURp
ZERyYXdUb0ltYWdlKGltYWdlSGFuZGxlLCBjb250ZXh0KTsKICAgICAgICAgICAgICAgICB9KTsK
QEAgLTUyNyw3ICs1MjcsNyBAQCAtICh2b2lkKV9kcmF3UHJldmlldzooTlNSZWN0KW5zUmVjdAog
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnZpZXcgPSBzZWxmOwogICAgICAgICAgICAgICAgIGNv
bnRleHQtPmNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwogCi0gICAgICAgICAg
ICAgICAgX3dlYkZyYW1lLT5wYWdlKCktPmRyYXdSZWN0VG9JbWFnZShfd2ViRnJhbWUuZ2V0KCks
IFByaW50SW5mbyhbX3ByaW50T3BlcmF0aW9uIHByaW50SW5mb10pLCBzY2FsZWRQcmludGluZ1Jl
Y3QsIGltYWdlU2l6ZSwgY2FsbGJhY2suZ2V0KCkpOworICAgICAgICAgICAgICAgIF93ZWJGcmFt
ZS0+cGFnZSgpLT5kcmF3UmVjdFRvSW1hZ2UoX3dlYkZyYW1lLmdldCgpLCBQcmludEluZm8oW19w
cmludE9wZXJhdGlvbiBwcmludEluZm9dKSwgc2NhbGVkUHJpbnRpbmdSZWN0LCBpbWFnZVNpemUs
IFdURk1vdmUoY2FsbGJhY2spKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAkocmV2aXNpb24g
MjE2NDQ4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQg
TmV0c2NhcGVQbHVnaW46OmxvYWRVUkwoY29uc3QgU3RyaW4KIAogICAgIGlmICh0YXJnZXQuaXNO
dWxsKCkpIHsKICAgICAgICAgLy8gVGhlIGJyb3dzZXIgaXMgZ29pbmcgdG8gc2VuZCB0aGUgZGF0
YSBpbiBhIHN0cmVhbSwgY3JlYXRlIGEgcGx1Zy1pbiBzdHJlYW0uCi0gICAgICAgIGF1dG8gcGx1
Z2luU3RyZWFtID0gTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZSh0aGlzLCByZXF1ZXN0SUQs
IHVybFN0cmluZywgc2VuZE5vdGlmaWNhdGlvbiwgbm90aWZpY2F0aW9uRGF0YSk7CisgICAgICAg
IGF1dG8gcGx1Z2luU3RyZWFtID0gTmV0c2NhcGVQbHVnaW5TdHJlYW06OmNyZWF0ZSgqdGhpcywg
cmVxdWVzdElELCB1cmxTdHJpbmcsIHNlbmROb3RpZmljYXRpb24sIG5vdGlmaWNhdGlvbkRhdGEp
OwogICAgICAgICBBU1NFUlQoIW1fc3RyZWFtcy5jb250YWlucyhyZXF1ZXN0SUQpKTsKIAogICAg
ICAgICBtX3N0cmVhbXMuc2V0KHJlcXVlc3RJRCwgV1RGTW92ZShwbHVnaW5TdHJlYW0pKTsKQEAg
LTg5Nyw3ICs4OTcsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNl
CiAgICAgQVNTRVJUKG1fc2hvdWxkVXNlTWFudWFsTG9hZGVyKTsKICAgICBBU1NFUlQoIW1fbWFu
dWFsU3RyZWFtKTsKICAgICAKLSAgICBtX21hbnVhbFN0cmVhbSA9IE5ldHNjYXBlUGx1Z2luU3Ry
ZWFtOjpjcmVhdGUodGhpcywgMCwgcmVzcG9uc2VVUkwuc3RyaW5nKCksIGZhbHNlLCAwKTsKKyAg
ICBtX21hbnVhbFN0cmVhbSA9IE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpjcmVhdGUoKnRoaXMsIDAs
IHJlc3BvbnNlVVJMLnN0cmluZygpLCBmYWxzZSwgMCk7CiAgICAgbV9tYW51YWxTdHJlYW0tPmRp
ZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZVVSTCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRU
aW1lLCBtaW1lVHlwZSwgaGVhZGVycyk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luU3RyZWFtLmNwcAkocmV2aXNpb24gMjE2NDQ4KQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzYsOCArMzYsOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLU5ldHNjYXBlUGx1Z2luU3RyZWFtOjpOZXRzY2FwZVBsdWdpblN0
cmVhbShQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luPiBwbHVnaW4sIHVpbnQ2NF90IHN0cmVhbUlE
LCBjb25zdCBTdHJpbmcmIHJlcXVlc3RVUkxTdHJpbmcsIGJvb2wgc2VuZE5vdGlmaWNhdGlvbiwg
dm9pZCogbm90aWZpY2F0aW9uRGF0YSkKLSAgICA6IG1fcGx1Z2luKHBsdWdpbikKK05ldHNjYXBl
UGx1Z2luU3RyZWFtOjpOZXRzY2FwZVBsdWdpblN0cmVhbShSZWY8TmV0c2NhcGVQbHVnaW4+JiYg
cGx1Z2luLCB1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgU3RyaW5nJiByZXF1ZXN0VVJMU3RyaW5n
LCBib29sIHNlbmROb3RpZmljYXRpb24sIHZvaWQqIG5vdGlmaWNhdGlvbkRhdGEpCisgICAgOiBt
X3BsdWdpbihXVEZNb3ZlKHBsdWdpbikpCiAgICAgLCBtX3N0cmVhbUlEKHN0cmVhbUlEKQogICAg
ICwgbV9yZXF1ZXN0VVJMU3RyaW5nKHJlcXVlc3RVUkxTdHJpbmcpCiAgICAgLCBtX3NlbmROb3Rp
ZmljYXRpb24oc2VuZE5vdGlmaWNhdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
blN0cmVhbS5oCShyZXZpc2lvbiAyMTY0NDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAkod29ya2luZyBjb3B5KQpA
QCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZm5kZWYgTmV0c2NhcGVQbHVnaW5TdHJlYW1faAotI2RlZmluZSBOZXRzY2FwZVBsdWdp
blN0cmVhbV9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQogCkBAIC0zMiw3ICszMSw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9ucHJ1bnRpbWVfaW50ZXJu
YWwuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC00OCw5ICs0
Niw5IEBAIGNsYXNzIE5ldHNjYXBlUGx1Z2luOwogCiBjbGFzcyBOZXRzY2FwZVBsdWdpblN0cmVh
bSA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHNjYXBlUGx1Z2luU3RyZWFtPiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxOZXRzY2FwZVBsdWdpblN0cmVhbT4gY3JlYXRlKFBhc3NSZWZQdHI8TmV0
c2NhcGVQbHVnaW4+IHBsdWdpbiwgdWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFN0cmluZyYgcmVx
dWVzdFVSTFN0cmluZywgYm9vbCBzZW5kTm90aWZpY2F0aW9uLCB2b2lkKiBub3RpZmljYXRpb25E
YXRhKQorICAgIHN0YXRpYyBSZWY8TmV0c2NhcGVQbHVnaW5TdHJlYW0+IGNyZWF0ZShSZWY8TmV0
c2NhcGVQbHVnaW4+JiYgcGx1Z2luLCB1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgU3RyaW5nJiBy
ZXF1ZXN0VVJMU3RyaW5nLCBib29sIHNlbmROb3RpZmljYXRpb24sIHZvaWQqIG5vdGlmaWNhdGlv
bkRhdGEpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXRzY2FwZVBsdWdp
blN0cmVhbShwbHVnaW4sIHN0cmVhbUlELCByZXF1ZXN0VVJMU3RyaW5nLCBzZW5kTm90aWZpY2F0
aW9uLCBub3RpZmljYXRpb25EYXRhKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5l
dHNjYXBlUGx1Z2luU3RyZWFtKFdURk1vdmUocGx1Z2luKSwgc3RyZWFtSUQsIHJlcXVlc3RVUkxT
dHJpbmcsIHNlbmROb3RpZmljYXRpb24sIG5vdGlmaWNhdGlvbkRhdGEpKTsKICAgICB9CiAgICAg
fk5ldHNjYXBlUGx1Z2luU3RyZWFtKCk7CiAKQEAgLTcxLDcgKzY5LDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0VVJMKGNvbnN0IFN0cmluZyYgbmV3VVJMU3RyaW5nKTsKIAogcHJpdmF0ZToKLSAg
ICBOZXRzY2FwZVBsdWdpblN0cmVhbShQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luPiwgdWludDY0
X3Qgc3RyZWFtSUQsIGNvbnN0IFN0cmluZyYgcmVxdWVzdFVSTFN0cmluZywgYm9vbCBzZW5kTm90
aWZpY2F0aW9uLCB2b2lkKiBub3RpZmljYXRpb25EYXRhKTsKKyAgICBOZXRzY2FwZVBsdWdpblN0
cmVhbShSZWY8TmV0c2NhcGVQbHVnaW4+JiYsIHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBTdHJp
bmcmIHJlcXVlc3RVUkxTdHJpbmcsIGJvb2wgc2VuZE5vdGlmaWNhdGlvbiwgdm9pZCogbm90aWZp
Y2F0aW9uRGF0YSk7CiAKICAgICBib29sIHN0YXJ0KGNvbnN0IFN0cmluZyYgcmVzcG9uc2VVUkxT
dHJpbmcsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgCiAgICAgICAgICAgICAgICB1aW50MzJfdCBs
YXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhl
YWRlcnMpOwpAQCAtODMsNyArODEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVsaXZlckRhdGFU
b1BsdWdpbigpOwogICAgIHZvaWQgZGVsaXZlckRhdGFUb0ZpbGUoY29uc3QgY2hhciogYnl0ZXMs
IGludCBsZW5ndGgpOwogCi0gICAgUmVmUHRyPE5ldHNjYXBlUGx1Z2luPiBtX3BsdWdpbjsKKyAg
ICBSZWY8TmV0c2NhcGVQbHVnaW4+IG1fcGx1Z2luOwogICAgIHVpbnQ2NF90IG1fc3RyZWFtSUQ7
CiAKICAgICBTdHJpbmcgbV9yZXF1ZXN0VVJMU3RyaW5nOwpAQCAtMTE2LDUgKzExNCwzIEBAIHBy
aXZhdGU6CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQ
RV9QTFVHSU5fQVBJKQotCi0jZW5kaWYgLy8gTmV0c2NhcGVQbHVnaW5TdHJlYW1faApJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252
ZXJzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCShyZXZpc2lvbiAyMTY0NDgpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNv
bnZlcnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNyArMTIyLDcgQEAgUGFnZVN0YXRl
IHRvUGFnZVN0YXRlKGNvbnN0IFdlYkNvcmU6OkhpcwogICAgIHJldHVybiBwYWdlU3RhdGU7CiB9
CiAKLXN0YXRpYyBQYXNzUmVmUHRyPEZvcm1EYXRhPiB0b0Zvcm1EYXRhKGNvbnN0IEhUVFBCb2R5
JiBodHRwQm9keSkKK3N0YXRpYyBSZWY8Rm9ybURhdGE+IHRvRm9ybURhdGEoY29uc3QgSFRUUEJv
ZHkmIGh0dHBCb2R5KQogewogICAgIGF1dG8gZm9ybURhdGEgPSBGb3JtRGF0YTo6Y3JlYXRlKCk7
CiAKQEAgLTE0Miw3ICsxNDIsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0YT4gdG9Gb3Jt
RGF0YShjCiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gV1RGTW92ZShmb3JtRGF0YSk7
CisgICAgcmV0dXJuIGZvcm1EYXRhOwogfQogCiBzdGF0aWMgdm9pZCBhcHBseUZyYW1lU3RhdGUo
SGlzdG9yeUl0ZW0mIGhpc3RvcnlJdGVtLCBjb25zdCBGcmFtZVN0YXRlJiBmcmFtZVN0YXRlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309445</attachid>
            <date>2017-05-08 17:24:57 -0700</date>
            <delta_ts>2017-05-08 17:25:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171831-20170508172456.patch</filename>
            <type>text/plain</type>
            <size>53019</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNjQ2NikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBACisyMDE3LTA1LTA4ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIFBh
c3NSZWZQdHIgdXNlIGluIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3MTgzMQorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcDoKKyAgICAgICAg
KFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9H
ZW5lcmljQ2FsbGJhY2suaDoKKyAgICAgICAgKFdlYktpdDo6R2VuZXJpY0NhbGxiYWNrOjpjcmVh
dGUpOgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja01hcDo6cHV0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvU3RhdGlzdGljc1JlcXVlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdGF0aXN0aWNz
UmVxdWVzdDo6U3RhdGlzdGljc1JlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdGF0aXN0
aWNzUmVxdWVzdC5oOgorICAgICAgICAoV2ViS2l0OjpTdGF0aXN0aWNzUmVxdWVzdDo6Y3JlYXRl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvVGV4dENoZWNrZXIuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvVGV4dENoZWNrZXJDb21wbGV0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGV4dENoZWNr
ZXJDb21wbGV0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9UZXh0Q2hlY2tlckNv
bXBsZXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXIuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29sb3JQaWNrZXI6OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHRJbmpl
Y3RlZEJ1bmRsZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRJbmplY3Rl
ZEJ1bmRsZUNsaWVudDo6Z2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHRNZW51TGlzdGVuZXJQcm94eS5oOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHk6OmNyZWF0ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
Q29va2llTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5k
UHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdENvbW1hbmRQcm94eTo6Y3JlYXRlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eTo6Y3JlYXRlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVMaXN0ZW5lclByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQcm94
eTo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmNyZWF0
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSWNvbkRhdGFi
YXNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJY29uRGF0YWJhc2U6Omljb25EYXRh
Rm9yUGFnZVVSTCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OmNyZWF0ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5Lmg6CisgICAgICAgIChXZWJL
aXQ6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VHcm91
cDo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6Zm9yY2VSZXBhaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb21w
dXRlUGFnZXNGb3JQcmludGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJh
d1JlY3RUb0ltYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3UGFnZXNU
b1BERik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzRm9yUHJpbnRp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNhbGxBZnRlck5leHRQcmVzZW50
YXRpb25VcGRhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1RleHRDaGVja2VySU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpU
ZXh0Q2hlY2tlcjo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9tYWMvVGV4dENoZWNrZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlRleHRDaGVja2VyOjpy
ZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9X
S0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5X
aW5kb3dDb250cm9sbGVyIGZpbmlzaGVkRXhpdEZ1bGxTY3JlZW5BbmltYXRpb246XSk6CisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbToKKyAgICAgICAgKC1bV0tQcmlu
dGluZ1ZpZXcgX3ByZXBhcmVQREZEYXRhRm9yUHJpbnRpbmdPblNlY29uZGFyeVRocmVhZF0pOgor
ICAgICAgICAoLVtXS1ByaW50aW5nVmlldyBfZHJhd1ByZXZpZXc6XSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW46OmxvYWRVUkwpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2Fw
ZVBsdWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6TmV0c2NhcGVQbHVnaW5TdHJlYW0pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVh
bS5oOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0Ojp0b0Zvcm1EYXRhKToKKwogMjAxNy0wNS0wOCAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHJl
YWRpbmcgYW5kIHdyaXRpbmcgc2V0dGluZ3MgZnJvbSBVSVByb2Nlc3MgYXVkaW8gY2FwdHVyZQpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaAkocmV2aXNp
b24gMjE2NDY2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBHZW5lcmljQ2FsbGJhY2tfaAotI2RlZmluZSBH
ZW5lcmljQ2FsbGJhY2tfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElFcnJvci5oIgog
I2luY2x1ZGUgIkFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgpAQCAtMzQsNyArMzMsNiBAQAog
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIApAQCAtOTUsOSAr
OTMsOSBAQCBjbGFzcyBHZW5lcmljQ2FsbGJhY2sgOiBwdWJsaWMgQ2FsbGJhY2tCCiBwdWJsaWM6
CiAgICAgdHlwZWRlZiBGdW5jdGlvbjx2b2lkIChULi4uLCBFcnJvcik+IENhbGxiYWNrRnVuY3Rp
b247CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxHZW5lcmljQ2FsbGJhY2s+IGNyZWF0ZShDYWxs
YmFja0Z1bmN0aW9uJiYgY2FsbGJhY2ssIGNvbnN0IFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91
bmRBY3Rpdml0eVRva2VuJiBhY3Rpdml0eVRva2VuID0gbnVsbHB0cikKKyAgICBzdGF0aWMgUmVm
PEdlbmVyaWNDYWxsYmFjaz4gY3JlYXRlKENhbGxiYWNrRnVuY3Rpb24mJiBjYWxsYmFjaywgY29u
c3QgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4mIGFjdGl2aXR5VG9r
ZW4gPSBudWxscHRyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHZW5lcmlj
Q2FsbGJhY2soV1RGTW92ZShjYWxsYmFjayksIGFjdGl2aXR5VG9rZW4pKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgR2VuZXJpY0NhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spLCBhY3Rp
dml0eVRva2VuKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+R2VuZXJpY0NhbGxiYWNrKCkKQEAg
LTE3MiwxMiArMTcwLDEyIEBAIHZvaWQgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKEhhc2hNYXA8dWlu
dDYKIAogY2xhc3MgQ2FsbGJhY2tNYXAgewogcHVibGljOgotICAgIHVpbnQ2NF90IHB1dChQYXNz
UmVmUHRyPENhbGxiYWNrQmFzZT4gY2FsbGJhY2spCisgICAgdWludDY0X3QgcHV0KFJlZjxDYWxs
YmFja0Jhc2U+JiYgY2FsbGJhY2spCiAgICAgewogICAgICAgICBBU1NFUlQoIW1fbWFwLmNvbnRh
aW5zKGNhbGxiYWNrLT5jYWxsYmFja0lEKCkpKTsKIAogICAgICAgICB1aW50NjRfdCBjYWxsYmFj
a0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICAgICAgbV9tYXAuc2V0KGNhbGxiYWNr
SUQsIGNhbGxiYWNrKTsKKyAgICAgICAgbV9tYXAuc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2Fs
bGJhY2spKTsKICAgICAgICAgcmV0dXJuIGNhbGxiYWNrSUQ7CiAgICAgfQogCkBAIC0xOTIsMTcg
KzE5MCwxNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFQ+
Ci0gICAgdWludDY0X3QgcHV0KHN0ZDo6ZnVuY3Rpb248dm9pZCAoVC4uLik+IGZ1bmN0aW9uLCBj
b25zdCBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiYgYWN0aXZpdHlU
b2tlbikKKyAgICB1aW50NjRfdCBwdXQoc3RkOjpmdW5jdGlvbjx2b2lkKFQuLi4pPiYmIGZ1bmN0
aW9uLCBjb25zdCBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiYgYWN0
aXZpdHlUb2tlbikKICAgICB7CiAgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBHZW5lcmljQ2FsbGJh
Y2tUeXBlPHNpemVvZi4uLihUKSwgVC4uLj46OnR5cGU6OmNyZWF0ZShXVEZNb3ZlKGZ1bmN0aW9u
KSwgYWN0aXZpdHlUb2tlbik7Ci0gICAgICAgIHJldHVybiBwdXQoY2FsbGJhY2spOworICAgICAg
ICByZXR1cm4gcHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZS4uLiBUPgotICAgIHVpbnQ2NF90IHB1dChGdW5jdGlvbjx2b2lkIChULi4uKT4mJiBm
dW5jdGlvbiwgY29uc3QgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4m
IGFjdGl2aXR5VG9rZW4pCisgICAgdWludDY0X3QgcHV0KEZ1bmN0aW9uPHZvaWQoVC4uLik+JiYg
ZnVuY3Rpb24sIGNvbnN0IFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2Vu
JiBhY3Rpdml0eVRva2VuKQogICAgIHsKICAgICAgICAgYXV0byBjYWxsYmFjayA9IEdlbmVyaWND
YWxsYmFja1R5cGU8c2l6ZW9mLi4uKFQpLCBULi4uPjo6dHlwZTo6Y3JlYXRlKFdURk1vdmUoZnVu
Y3Rpb24pLCBhY3Rpdml0eVRva2VuKTsKLSAgICAgICAgcmV0dXJuIHB1dChjYWxsYmFjayk7Cisg
ICAgICAgIHJldHVybiBwdXQoV1RGTW92ZShjYWxsYmFjaykpOwogICAgIH0KIAogICAgIHRlbXBs
YXRlPGNsYXNzIFQ+CkBAIC0yMjUsNSArMjIzLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gR2VuZXJpY0NhbGxiYWNrX2gKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdGF0aXN0aWNzUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0YXRpc3RpY3NSZXF1ZXN0LmNwcAkocmV2aXNpb24g
MjE2NDY2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0YXRpc3RpY3NSZXF1ZXN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotU3RhdGlzdGljc1JlcXVlc3Q6OlN0YXRpc3RpY3NSZXF1ZXN0KFBhc3NSZWZQdHI8RGljdGlv
bmFyeUNhbGxiYWNrPiBjYWxsYmFjaykKLSAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCitTdGF0
aXN0aWNzUmVxdWVzdDo6U3RhdGlzdGljc1JlcXVlc3QoUmVmPERpY3Rpb25hcnlDYWxsYmFjaz4m
JiBjYWxsYmFjaykKKyAgICA6IG1fY2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpCiB7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdGF0aXN0aWNzUmVxdWVzdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdGF0aXN0aWNzUmVxdWVzdC5oCShy
ZXZpc2lvbiAyMTY0NjYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RhdGlzdGljc1Jl
cXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgU3RhdGlzdGljc1JlcXVlc3RfaAot
I2RlZmluZSBTdGF0aXN0aWNzUmVxdWVzdF9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkdl
bmVyaWNDYWxsYmFjay5oIgogI2luY2x1ZGUgIlN0YXRpc3RpY3NEYXRhLmgiCkBAIC00NCw5ICs0
Myw5IEBAIGVudW0gU3RhdGlzdGljc1JlcXVlc3RUeXBlIHsKIAogY2xhc3MgU3RhdGlzdGljc1Jl
cXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxTdGF0aXN0aWNzUmVxdWVzdD4gewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0YXRpc3RpY3NSZXF1ZXN0PiBjcmVhdGUoUGFzc1JlZlB0
cjxEaWN0aW9uYXJ5Q2FsbGJhY2s+IGNhbGxiYWNrKQorICAgIHN0YXRpYyBSZWY8U3RhdGlzdGlj
c1JlcXVlc3Q+IGNyZWF0ZShSZWY8RGljdGlvbmFyeUNhbGxiYWNrPiYmIGNhbGxiYWNrKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdGF0aXN0aWNzUmVxdWVzdChjYWxsYmFj
aykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdGF0aXN0aWNzUmVxdWVzdChXVEZN
b3ZlKGNhbGxiYWNrKSkpOwogICAgIH0KIAogICAgIH5TdGF0aXN0aWNzUmVxdWVzdCgpOwpAQCAt
NTYsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21wbGV0ZWRSZXF1ZXN0KHVpbnQ2NF90
IHJlcXVlc3RJRCwgY29uc3QgU3RhdGlzdGljc0RhdGEmKTsKIAogcHJpdmF0ZToKLSAgICBTdGF0
aXN0aWNzUmVxdWVzdChQYXNzUmVmUHRyPERpY3Rpb25hcnlDYWxsYmFjaz4pOworICAgIFN0YXRp
c3RpY3NSZXF1ZXN0KFJlZjxEaWN0aW9uYXJ5Q2FsbGJhY2s+JiYpOwogCiAgICAgSGFzaFNldDx1
aW50NjRfdD4gbV9vdXRzdGFuZGluZ1JlcXVlc3RzOwogICAgIFJlZlB0cjxEaWN0aW9uYXJ5Q2Fs
bGJhY2s+IG1fY2FsbGJhY2s7CkBAIC02NSw1ICs2NCwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFN0YXRpc3RpY3NSZXF1ZXN0X2gKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9UZXh0Q2hlY2tlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9UZXh0Q2hlY2tlci5oCShyZXZpc2lvbiAyMTY0NjYpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVGV4dENoZWNrZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZm5kZWYgVGV4dENoZWNrZXJfaAotI2RlZmluZSBUZXh0Q2hlY2tlcl9oCisjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIlRleHRDaGVja2VyQ29tcGxldGlvbi5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvRWRpdG9yQ2xpZW50Lmg+CkBAIC04Niw5ICs4NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChpbnQ2NF90IHNwZWxsRG9jdW1lbnRUYWcsIGNvbnN0
IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBpbnQzMl90IGluc2VydGlvblBv
aW50LCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3NlcywgYm9vbCBpbml0aWFsQ2FwaXRhbGl6YXRpb25F
bmFibGVkKTsKICAgICBzdGF0aWMgdm9pZCBsZWFybldvcmQoaW50NjRfdCBzcGVsbERvY3VtZW50
VGFnLCBjb25zdCBTdHJpbmcmIHdvcmQpOwogICAgIHN0YXRpYyB2b2lkIGlnbm9yZVdvcmQoaW50
NjRfdCBzcGVsbERvY3VtZW50VGFnLCBjb25zdCBTdHJpbmcmIHdvcmQpOwotICAgIHN0YXRpYyB2
b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFBhc3NSZWZQdHI8VGV4dENoZWNrZXJDb21wbGV0
aW9uPiwgaW50MzJfdCBpbnNlcnRpb25Qb2ludCk7CisgICAgc3RhdGljIHZvaWQgcmVxdWVzdENo
ZWNraW5nT2ZTdHJpbmcoUmVmPFRleHRDaGVja2VyQ29tcGxldGlvbj4mJiwgaW50MzJfdCBpbnNl
cnRpb25Qb2ludCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFRl
eHRDaGVja2VyX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9UZXh0Q2hlY2tlckNv
bXBsZXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9UZXh0
Q2hlY2tlckNvbXBsZXRpb24uY3BwCShyZXZpc2lvbiAyMTY0NjYpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvVGV4dENoZWNrZXJDb21wbGV0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzAsOSArMzAsOSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKLVBhc3NSZWZQdHI8VGV4dENoZWNrZXJDb21wbGV0aW9uPiBUZXh0Q2hlY2tlckNvbXBs
ZXRpb246OmNyZWF0ZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFRleHRDaGVja2luZ1JlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSwgV2ViUGFnZVByb3h5KiBwYWdlKQorUmVmPFRleHRDaGVja2Vy
Q29tcGxldGlvbj4gVGV4dENoZWNrZXJDb21wbGV0aW9uOjpjcmVhdGUodWludDY0X3QgcmVxdWVz
dElELCBjb25zdCBUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIFdlYlBhZ2VQ
cm94eSogcGFnZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHRDaGVja2VyQ29tcGxl
dGlvbihyZXF1ZXN0SUQsIHJlcXVlc3REYXRhLCBwYWdlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgVGV4dENoZWNrZXJDb21wbGV0aW9uKHJlcXVlc3RJRCwgcmVxdWVzdERhdGEsIHBhZ2Up
KTsKIH0KIAogVGV4dENoZWNrZXJDb21wbGV0aW9uOjpUZXh0Q2hlY2tlckNvbXBsZXRpb24odWlu
dDY0X3QgcmVxdWVzdElELCBjb25zdCBUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YSYgcmVxdWVzdERh
dGEsIFdlYlBhZ2VQcm94eSogcGFnZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9U
ZXh0Q2hlY2tlckNvbXBsZXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvVGV4dENoZWNrZXJDb21wbGV0aW9uLmgJKHJldmlzaW9uIDIxNjQ2NikKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9UZXh0Q2hlY2tlckNvbXBsZXRpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtMjMsOCArMjMsNyBAQAogICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBUZXh0Q2hlY2tlckNv
bXBsZXRpb25faAotI2RlZmluZSBUZXh0Q2hlY2tlckNvbXBsZXRpb25faAorI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1RleHRDaGVj
a2luZy5oPgpAQCAtMzQsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgVGV4
dENoZWNrZXJDb21wbGV0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8VGV4dENoZWNrZXJDb21wbGV0
aW9uPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dENoZWNrZXJDb21wbGV0
aW9uPiBjcmVhdGUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdSZXF1ZXN0RGF0YSYsIFdlYlBhZ2VQcm94eSopOworICAgIHN0YXRpYyBSZWY8VGV4dENoZWNr
ZXJDb21wbGV0aW9uPiBjcmVhdGUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJDb3JlOjpU
ZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YSYsIFdlYlBhZ2VQcm94eSopOwogCiAgICAgY29uc3QgV2Vi
Q29yZTo6VGV4dENoZWNraW5nUmVxdWVzdERhdGEmIHRleHRDaGVja2luZ1JlcXVlc3REYXRhKCkg
Y29uc3Q7CiAgICAgaW50NjRfdCBzcGVsbERvY3VtZW50VGFnKCk7CkBAIC01MCw1ICs0OSwzIEBA
IHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFRleHRD
aGVja2VyQ29tcGxldGlvbl9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29s
b3JQaWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29s
b3JQaWNrZXIuaAkocmV2aXNpb24gMjE2NDY2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbG9yUGlja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkNvbG9yUGlj
a2VyX2gKLSNkZWZpbmUgV2ViQ29sb3JQaWNrZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFC
TEUoSU5QVVRfVFlQRV9DT0xPUikKIApAQCAtNTAsOSArNDksOSBAQCBwdWJsaWM6CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRFbmRDb2xvclBpY2tlcigpID0gMDsKICAgICB9OwogCi0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZShDbGllbnQqIGNsaWVudCkKKyAg
ICBzdGF0aWMgUmVmPFdlYkNvbG9yUGlja2VyPiBjcmVhdGUoQ2xpZW50KiBjbGllbnQpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvbG9yUGlja2VyKGNsaWVudCkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJDb2xvclBpY2tlcihjbGllbnQpKTsKICAg
ICB9CiAKICAgICB2aXJ0dWFsIH5XZWJDb2xvclBpY2tlcigpOwpAQCAtNzIsNSArNzEsMyBAQCBw
cm90ZWN0ZWQ6CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKQotCi0jZW5kaWYgLy8gV2ViQ29sb3JQaWNrZXJfaApJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAkocmV2aXNpb24gMjE2NDY2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5ICszMSw5IEBA
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QYXNzUmVmUHRyPFdlYkNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M+IFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZShXZWJQcm9jZXNzUHJveHkq
IHByb2Nlc3MpCitSZWY8V2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gV2ViQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MocHJvY2VzcykpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MocHJvY2Vzcykp
OwogfQogCiBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpXZWJDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjE2
NDY2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vz
c19oCi0jZGVmaW5lIFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NfaAorI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJXZWJDb25uZWN0aW9uLmgiCiAKQEAgLTM0LDcgKzMzLDcgQEAgY2xhc3MgV2Vi
UHJvY2Vzc1Byb3h5OwogCiBjbGFzcyBXZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzIDogcHVibGlj
IFdlYkNvbm5lY3Rpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M+IGNyZWF0ZShXZWJQcm9jZXNzUHJveHkqKTsKKyAgICBzdGF0aWMg
UmVmPFdlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IGNyZWF0ZShXZWJQcm9jZXNzUHJveHkqKTsK
IAogICAgIFdlYlByb2Nlc3NQcm94eSogd2ViUHJvY2Vzc1Byb3h5KCkgY29uc3QgeyByZXR1cm4g
bV9wcm9jZXNzOyB9CiAKQEAgLTU2LDUgKzU1LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzc19oCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xp
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcAkocmV2aXNpb24gMjE2NDY2KQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUyLDEwICs1MiwxMCBAQCB2b2lkIFdlYkNvbnRleHRJbmplY3RlZEJ1bmRs
ZUNsaWVudDo6ZGlkCiAgICAgcmV0dXJuRGF0YSA9IGFkb3B0UmVmKHRvSW1wbChyZXR1cm5EYXRh
UmVmKSk7CiB9CiAKLVBhc3NSZWZQdHI8QVBJOjpPYmplY3Q+IFdlYkNvbnRleHRJbmplY3RlZEJ1
bmRsZUNsaWVudDo6Z2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhKFdlYlBy
b2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKK1JlZlB0cjxBUEk6Ok9iamVjdD4gV2ViQ29udGV4dElu
amVjdGVkQnVuZGxlQ2xpZW50OjpnZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRh
dGEoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQogewogICAgIGlmICghbV9jbGllbnQuZ2V0
SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gYWRvcHRSZWYodG9JbXBsKG1f
Y2xpZW50LmdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSh0b0FQSShwcm9j
ZXNzUG9vbCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpKTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dEluamVjdGVkQnVuZGxl
Q2xpZW50LmgJKHJldmlzaW9uIDIxNjQ2NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCAr
MjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5k
ZWYgV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50X2gKLSNkZWZpbmUgV2ViQ29udGV4dElu
amVjdGVkQnVuZGxlQ2xpZW50X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQVBJQ2xpZW50
LmgiCiAjaW5jbHVkZSAiV0tDb250ZXh0LmgiCkBAIC00Niw5ICs0NSw3IEBAIGNsYXNzIFdlYkNv
bnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudCA6IHAKIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYlByb2Nlc3NQb29sKiwgY29uc3QgU3RyaW5n
JiwgQVBJOjpPYmplY3QqKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUoV2ViUHJvY2Vzc1Bvb2wqLCBjb25zdCBTdHJpbmcmLCBBUEk6Ok9i
amVjdCosIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHJldHVybkRhdGEpOwotICAgIFBhc3NSZWZQdHI8
QVBJOjpPYmplY3Q+IGdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YShXZWJQ
cm9jZXNzUG9vbCopOworICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gZ2V0SW5qZWN0ZWRCdW5kbGVJ
bml0aWFsaXphdGlvblVzZXJEYXRhKFdlYlByb2Nlc3NQb29sKik7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudF9o
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dE1lbnVMaXN0ZW5lclBy
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHRN
ZW51TGlzdGVuZXJQcm94eS5oCShyZXZpc2lvbiAyMTY0NjYpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDkgKzM4LDkgQEAgY2xhc3MgV2ViQ29udGV4dE1lbnVQcm94eU1hYzsKIAogY2xhc3MgV2Vi
Q29udGV4dE1lbnVMaXN0ZW5lclByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9i
amVjdDo6VHlwZTo6Q29udGV4dE1lbnVMaXN0ZW5lcj4gewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFdlYkNvbnRleHRNZW51TGlzdGVuZXJQcm94eT4gY3JlYXRlKFdlYkNvbnRleHRN
ZW51UHJveHkqIGNvbnRleHRNZW51TWFjKQorICAgIHN0YXRpYyBSZWY8V2ViQ29udGV4dE1lbnVM
aXN0ZW5lclByb3h5PiBjcmVhdGUoV2ViQ29udGV4dE1lbnVQcm94eSogY29udGV4dE1lbnVNYWMp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvbnRleHRNZW51TGlzdGVu
ZXJQcm94eShjb250ZXh0TWVudU1hYykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkoY29udGV4dE1lbnVNYWMpKTsKICAgICB9CiAKICAg
ICB2aXJ0dWFsIH5XZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCShyZXZp
c2lvbiAyMTY0NjYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdl
clByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsOSArNDQsOSBAQCBjb25zdCBjaGFyKiBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OnN1cHBsCiAgICAgcmV0dXJuICJXZWJDb29raWVNYW5hZ2Vy
UHJveHkiOwogfQogCi1QYXNzUmVmUHRyPFdlYkNvb2tpZU1hbmFnZXJQcm94eT4gV2ViQ29va2ll
TWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQorUmVmPFdl
YkNvb2tpZU1hbmFnZXJQcm94eT4gV2ViQ29va2llTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUHJv
Y2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29v
a2llTWFuYWdlclByb3h5KHByb2Nlc3NQb29sKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViQ29va2llTWFuYWdlclByb3h5KHByb2Nlc3NQb29sKSk7CiB9CiAKIFdlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6V2ViQ29va2llTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9v
bCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdl
clByb3h5LmgJKHJldmlzaW9uIDIxNjQ2NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb29raWVNYW5hZ2VyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViQ29v
a2llTWFuYWdlclByb3h5X2gKLSNkZWZpbmUgV2ViQ29va2llTWFuYWdlclByb3h5X2gKKyNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiR2VuZXJpY0NhbGxi
YWNrLmgiCkBAIC02MSw3ICs2MCw3IEBAIGNsYXNzIFdlYkNvb2tpZU1hbmFnZXJQcm94eSA6IHB1
YmxpYyBBUEkKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUo
KTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvb2tpZU1hbmFnZXJQcm94eT4gY3JlYXRl
KFdlYlByb2Nlc3NQb29sKik7CisgICAgc3RhdGljIFJlZjxXZWJDb29raWVNYW5hZ2VyUHJveHk+
IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCopOwogICAgIHZpcnR1YWwgfldlYkNvb2tpZU1hbmFnZXJQ
cm94eSgpOwogCiAgICAgdm9pZCBpbml0aWFsaXplQ2xpZW50KGNvbnN0IFdLQ29va2llTWFuYWdl
ckNsaWVudEJhc2UqKTsKQEAgLTE1MCw1ICsxNDksMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJDb29raWVNYW5hZ2VyUHJveHlfaApJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRWRpdENvbW1hbmRQcm94eS5oCShy
ZXZpc2lvbiAyMTY0NjYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRWRpdENvbW1h
bmRQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJFZGl0Q29tbWFuZFByb3h5
X2gKLSNkZWZpbmUgV2ViRWRpdENvbW1hbmRQcm94eV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdEFjdGlvbi5oPgpAQCAtMzgs
OSArMzcsOSBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiAKIGNsYXNzIFdlYkVkaXRDb21tYW5kUHJv
eHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpFZGl0Q29tbWFu
ZFByb3h5PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQ
cm94eT4gY3JlYXRlKHVpbnQ2NF90IGNvbW1hbmRJRCwgV2ViQ29yZTo6RWRpdEFjdGlvbiBlZGl0
QWN0aW9uLCBXZWJQYWdlUHJveHkqIHBhZ2UpCisgICAgc3RhdGljIFJlZjxXZWJFZGl0Q29tbWFu
ZFByb3h5PiBjcmVhdGUodWludDY0X3QgY29tbWFuZElELCBXZWJDb3JlOjpFZGl0QWN0aW9uIGVk
aXRBY3Rpb24sIFdlYlBhZ2VQcm94eSogcGFnZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgV2ViRWRpdENvbW1hbmRQcm94eShjb21tYW5kSUQsIGVkaXRBY3Rpb24sIHBhZ2Up
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViRWRpdENvbW1hbmRQcm94eShjb21t
YW5kSUQsIGVkaXRBY3Rpb24sIHBhZ2UpKTsKICAgICB9CiAgICAgfldlYkVkaXRDb21tYW5kUHJv
eHkoKTsKIApAQCAtNjMsNSArNjIsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJFZGl0Q29tbWFuZFByb3h5X2gKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5l
clByb3h5LmgJKHJldmlzaW9uIDIxNjQ2NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsOSAr
NDIsOSBAQCBjbGFzcyBXZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkgOiBwCiBwdWJsaWM6
CiAgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGU6OkZvcm1TdWJtaXNzaW9uTGlz
dGVuZXI7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVy
UHJveHk+IGNyZWF0ZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCkK
KyAgICBzdGF0aWMgUmVmPFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eT4gY3JlYXRlKFdl
YkZyYW1lUHJveHkqIGZyYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklEKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkoZnJhbWUs
IGxpc3RlbmVySUQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViRm9ybVN1Ym1p
c3Npb25MaXN0ZW5lclByb3h5KGZyYW1lLCBsaXN0ZW5lcklEKSk7CiAgICAgfQogCiAgICAgdm9p
ZCBjb250aW51ZVN1Ym1pc3Npb24oKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJGcmFtZUxpc3RlbmVyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViRnJhbWVMaXN0ZW5lclByb3h5LmgJKHJldmlzaW9uIDIxNjQ2NikKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZUxpc3RlbmVyUHJveHkuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIkFQSU5hdmlnYXRpb24uaCIKICNpbmNsdWRl
ICJBUElPYmplY3QuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KLSNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFt
ZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1l
UHJveHkuaAkocmV2aXNpb24gMjE2NDY2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkZyYW1lUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklORykKQEAgLTU5LDkgKzU4LDkgQEAgdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8QVBJOjpEYXRh
Kj4gRGF0YQogCiBjbGFzcyBXZWJGcmFtZVByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxB
UEk6Ok9iamVjdDo6VHlwZTo6RnJhbWU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxXZWJGcmFtZVByb3h5PiBjcmVhdGUoV2ViUGFnZVByb3h5KiBwYWdlLCB1aW50NjRfdCBmcmFt
ZUlEKQorICAgIHN0YXRpYyBSZWY8V2ViRnJhbWVQcm94eT4gY3JlYXRlKFdlYlBhZ2VQcm94eSog
cGFnZSwgdWludDY0X3QgZnJhbWVJRCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgV2ViRnJhbWVQcm94eShwYWdlLCBmcmFtZUlEKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYkZyYW1lUHJveHkocGFnZSwgZnJhbWVJRCkpOwogICAgIH0KIAogICAgIHZpcnR1
YWwgfldlYkZyYW1lUHJveHkoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJG
dWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAJKHJldmlzaW9uIDIxNjQ2NikK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzksOSArMzksOSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NSZWZQdHI8V2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eT4gV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSYg
cGFnZSwgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCYgY2xpZW50KQorUmVmPFdlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHk+IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmNyZWF0ZShX
ZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQmIGNsaWVu
dCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHko
cGFnZSwgY2xpZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eShwYWdlLCBjbGllbnQpKTsKIH0KIAogV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94
eTo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZ1bGxT
Y3JlZW5NYW5hZ2VyUHJveHlDbGllbnQmIGNsaWVudCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuaAkocmV2aXNpb24g
MjE2NDY2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTMgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJGdWxsU2NyZWVuTWFuYWdl
clByb3h5X2gKLSNkZWZpbmUgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eV9oCisjcHJhZ21hIG9u
Y2UKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKIAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlci5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTU1LDcgKzUzLDcgQEAgcHVi
bGljOgogCiBjbGFzcyBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5IDogcHVibGljIFJlZkNvdW50
ZWQ8V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eT4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViRnVsbFNjcmVlbk1hbmFnZXJQ
cm94eT4gY3JlYXRlKFdlYlBhZ2VQcm94eSYsIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGll
bnQmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk+IGNyZWF0ZShX
ZWJQYWdlUHJveHkmLCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50Jik7CiAgICAgdmly
dHVhbCB+V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSgpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRl
KCk7CkBAIC05MSw1ICs4OSwzIEBAIHByaXZhdGU6CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAog
I2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLQotI2VuZGlmIC8vIFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHlfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwCShyZXZpc2lvbiAyMTY0NjYpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNyw5ICszNyw5IEBAIGNvbnN0IGNoYXIqIFdlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5OjoKICAgICByZXR1cm4gIldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
IjsKIH0KIAotUGFzc1JlZlB0cjxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4gV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCitS
ZWY8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQogewotICAgIHJldHVybiBhZG9w
dFJlZihuZXcgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkocHJvY2Vzc1Bvb2wpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eShwcm9jZXNzUG9v
bCkpOwogfQogCiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgJKHJl
dmlzaW9uIDIxNjQ2NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eV9oCi0jZGVmaW5lIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5X2gKKyNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlv
bi5oIgpAQCAtNDMsNyArNDIsNyBAQCBjbGFzcyBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSA6
IHB1YmxpCiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7
CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4gY3Jl
YXRlKFdlYlByb2Nlc3NQb29sKik7CisgICAgc3RhdGljIFJlZjxXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sKik7CiAKICAgICB2b2lkIGluaXRpYWxpemVQ
cm92aWRlcihjb25zdCBXS0dlb2xvY2F0aW9uUHJvdmlkZXJCYXNlKik7CiAKQEAgLTgzLDUgKzgy
LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8g
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkljb25EYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHAJKHJldmlzaW9uIDIxNjQ2NikKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSw5ICszOSw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotUGFzc1JlZlB0cjxXZWJJY29uRGF0YWJhc2U+IFdlYkljb25EYXRhYmFzZTo6Y3JlYXRl
KFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKK1JlZjxXZWJJY29uRGF0YWJhc2U+IFdlYklj
b25EYXRhYmFzZTo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFdlYkljb25EYXRhYmFzZSgqcHJvY2Vzc1Bvb2wpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJJY29uRGF0YWJhc2UoKnByb2Nlc3NQb29sKSk7CiB9CiAK
IFdlYkljb25EYXRhYmFzZTo6fldlYkljb25EYXRhYmFzZSgpCkBAIC0zMTUsNyArMzE1LDcgQEAg
dm9pZCBXZWJJY29uRGF0YWJhc2U6OnNldFByaXZhdGVCcm93c2luZwogICAgICAgICBtX2ljb25E
YXRhYmFzZUltcGwtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQocHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCk7CiB9CiAKLVBhc3NSZWZQdHI8QVBJOjpEYXRhPiBXZWJJY29uRGF0YWJhc2U6Omljb25E
YXRhRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwpCitSZWZQdHI8QVBJOjpEYXRhPiBX
ZWJJY29uRGF0YWJhc2U6Omljb25EYXRhRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwp
CiB7CiAgICAgYXV0byogaW1hZ2UgPSBpbWFnZUZvclBhZ2VVUkwocGFnZVVSTCk7CiAgICAgaWYg
KCFpbWFnZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNl
LmgJKHJldmlzaW9uIDIxNjQ2NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJY29u
RGF0YWJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBXZWJQcm9j
ZXNzUG9vbDsKIAogY2xhc3MgV2ViSWNvbkRhdGFiYXNlIDogcHVibGljIEFQSTo6T2JqZWN0SW1w
bDxBUEk6Ok9iamVjdDo6VHlwZTo6SWNvbkRhdGFiYXNlPiwgcHJpdmF0ZSBXZWJDb3JlOjpJY29u
RGF0YWJhc2VDbGllbnQsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkljb25EYXRhYmFzZT4gY3JlYXRlKFdlYlByb2Nlc3NQ
b29sKik7CisgICAgc3RhdGljIFJlZjxXZWJJY29uRGF0YWJhc2U+IGNyZWF0ZShXZWJQcm9jZXNz
UG9vbCopOwogICAgIHZpcnR1YWwgfldlYkljb25EYXRhYmFzZSgpOwogCiAgICAgdm9pZCBpbnZh
bGlkYXRlKCk7CkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OkltYWdl
KiBpbWFnZUZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
aWNvblNpemUgPSBXZWJDb3JlOjpJbnRTaXplKDMyLCAzMikpOwogICAgIFdlYkNvcmU6Ok5hdGl2
ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBpY29uU2l6ZSA9IFdlYkNvcmU6OkludFNpemUoMzIsIDMyKSk7Ci0gICAg
UGFzc1JlZlB0cjxBUEk6OkRhdGE+IGljb25EYXRhRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBh
Z2VVUkwpOworICAgIFJlZlB0cjxBUEk6OkRhdGE+IGljb25EYXRhRm9yUGFnZVVSTChjb25zdCBT
dHJpbmcmIHBhZ2VVUkwpOwogCiAgICAgYm9vbCBpc09wZW4oKTsKICAgICBib29sIGlzVXJsSW1w
b3J0Q29tcGxldGVkKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTWVkaWFT
ZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjE2NDY2KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDkgKzM3LDkgQEAgY29uc3QgY2hhciogV2ViTWVkaWFT
ZXNzaW9uRm9jdXNNYW5hZ2VyOgogICAgIHJldHVybiAiV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5h
Z2VyIjsKIH0KIAotUGFzc1JlZlB0cjxXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI+IFdlYk1l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9v
bCkKK1JlZjxXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI+IFdlYk1lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlcjo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcihwcm9jZXNzUG9vbCkp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcihw
cm9jZXNzUG9vbCkpOwogfQogCiBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OldlYk1lZGlh
U2Vzc2lvbkZvY3VzTWFuYWdlcihXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlci5oCShyZXZpc2lvbiAyMTY0NjYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIz
LDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVm
IFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcl9oCi0jZGVmaW5lIFdlYk1lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlcl9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQog
CkBAIC00MSw3ICs0MCw3IEBAIGNsYXNzIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlciA6IHB1
YmwKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKIAot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcj4gY3JlYXRl
KFdlYlByb2Nlc3NQb29sKik7CisgICAgc3RhdGljIFJlZjxXZWJNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXI+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCopOwogCiAgICAgdm9pZCBpbml0aWFsaXplQ2xp
ZW50KGNvbnN0IFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyQ2xpZW50QmFzZSopOwogCkBAIC03
Miw1ICs3MSwzIEBAIHByaXZhdGU6CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TRVNTSU9OKQotCi0jZW5kaWYgLyogV2ViTWVkaWFTZXNzaW9uRm9jdXNN
YW5hZ2VyX2ggKi8KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaAkocmV2aXNpb24gMjE2NDY2KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJv
eHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTIgKzIzLDEwIEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lclByb3h5X2gKLSNkZWZpbmUgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eV9oCisj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00NCw5ICs0Miw5IEBAIGNsYXNzIFdl
YlBhZ2VQcm94eTsKIAogY2xhc3MgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSA6IHB1
YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkZyYW1lUG9saWN5TGlzdGVu
ZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lclByb3h5PiBjcmVhdGUoV2ViUGFnZVByb3h5KiBwYWdlKQorICAgIHN0YXRpYyBSZWY8
V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eT4gY3JlYXRlKFdlYlBhZ2VQcm94eSogcGFn
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJQcm94eShwYWdlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkocGFnZSkpOwogICAgIH0KIAogICAgIHZpcnR1YWwg
fldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkoKTsKQEAgLTY2LDUgKzY0LDMgQEAgcHJp
dmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXJQcm94eV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZUdyb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZUdyb3VwLmNwcAkocmV2aXNpb24gMjE2NDY2KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDkgKzU0LDkgQEAg
c3RhdGljIFdlYlBhZ2VHcm91cE1hcCYgd2ViUGFnZUdyb3VwTWFwKAogICAgIHJldHVybiBtYXA7
CiB9CiAKLVBhc3NSZWZQdHI8V2ViUGFnZUdyb3VwPiBXZWJQYWdlR3JvdXA6OmNyZWF0ZShjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIsIGJvb2wgdmlzaWJsZVRvSW5qZWN0ZWRCdW5kbGUsIGJvb2wg
dmlzaWJsZVRvSGlzdG9yeUNsaWVudCkKK1JlZjxXZWJQYWdlR3JvdXA+IFdlYlBhZ2VHcm91cDo6
Y3JlYXRlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgYm9vbCB2aXNpYmxlVG9JbmplY3RlZEJ1
bmRsZSwgYm9vbCB2aXNpYmxlVG9IaXN0b3J5Q2xpZW50KQogewotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgV2ViUGFnZUdyb3VwKGlkZW50aWZpZXIsIHZpc2libGVUb0luamVjdGVkQnVuZGxlLCB2
aXNpYmxlVG9IaXN0b3J5Q2xpZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUGFn
ZUdyb3VwKGlkZW50aWZpZXIsIHZpc2libGVUb0luamVjdGVkQnVuZGxlLCB2aXNpYmxlVG9IaXN0
b3J5Q2xpZW50KSk7CiB9CiAKIFJlZjxXZWJQYWdlR3JvdXA+IFdlYlBhZ2VHcm91cDo6Y3JlYXRl
Tm9uTnVsbChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGJvb2wgdmlzaWJsZVRvSW5qZWN0ZWRC
dW5kbGUsIGJvb2wgdmlzaWJsZVRvSGlzdG9yeUNsaWVudCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZUdyb3VwLmgJKHJldmlzaW9uIDIxNjQ2NikKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMs
NyBAQCBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKIGNsYXNzIFdlYlBhZ2VH
cm91cCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2VHcm91
cD4gewogcHVibGljOgogICAgIFdlYlBhZ2VHcm91cChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIg
PSBTdHJpbmcoKSwgYm9vbCB2aXNpYmxlVG9JbmplY3RlZEJ1bmRsZSA9IHRydWUsIGJvb2wgdmlz
aWJsZVRvSGlzdG9yeUNsaWVudCA9IHRydWUpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBh
Z2VHcm91cD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciA9IFN0cmluZygpLCBib29s
IHZpc2libGVUb0luamVjdGVkQnVuZGxlID0gdHJ1ZSwgYm9vbCB2aXNpYmxlVG9IaXN0b3J5Q2xp
ZW50ID0gdHJ1ZSk7CisgICAgc3RhdGljIFJlZjxXZWJQYWdlR3JvdXA+IGNyZWF0ZShjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIgPSBTdHJpbmcoKSwgYm9vbCB2aXNpYmxlVG9JbmplY3RlZEJ1bmRs
ZSA9IHRydWUsIGJvb2wgdmlzaWJsZVRvSGlzdG9yeUNsaWVudCA9IHRydWUpOwogICAgIHN0YXRp
YyBSZWY8V2ViUGFnZUdyb3VwPiBjcmVhdGVOb25OdWxsKGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
ciA9IFN0cmluZygpLCBib29sIHZpc2libGVUb0luamVjdGVkQnVuZGxlID0gdHJ1ZSwgYm9vbCB2
aXNpYmxlVG9IaXN0b3J5Q2xpZW50ID0gdHJ1ZSk7CiAgICAgc3RhdGljIFdlYlBhZ2VHcm91cCog
Z2V0KHVpbnQ2NF90IHBhZ2VHcm91cElEKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIxNjQ2NikKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDM0LDE2ICsz
MDM0LDE1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRXZWJBcmNoaXZlT2ZGcmFtZSgKICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFdlYkFyY2hpdmVPZkZyYW1lKGZy
YW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5Ojpmb3JjZVJlcGFpbnQoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHBycENhbGxiYWNr
KQordm9pZCBXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludChSZWZQdHI8Vm9pZENhbGxiYWNrPiYm
IGNhbGxiYWNrKQogewotICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrID0gcHJwQ2Fs
bGJhY2s7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAgICAgLy8gRklYTUU6IElmIHRoZSBw
YWdlIGlzIGludmFsaWQgd2Ugc2hvdWxkIG5vdCBjYWxsIHRoZSBjYWxsYmFjay4gSXQnZCBiZSBi
ZXR0ZXIgdG8ganVzdCByZXR1cm4gZmFsc2UgZnJvbSBmb3JjZVJlcGFpbnQuCiAgICAgICAgIGNh
bGxiYWNrLT5pbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0
ZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc3RkOjpmdW5jdGlvbjx2b2lkIChD
YWxsYmFja0Jhc2U6OkVycm9yKT4gZGlkRm9yY2VSZXBhaW50Q2FsbGJhY2sgPSBbdGhpcywgY2Fs
bGJhY2tdKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICBGdW5jdGlvbjx2b2lkKENh
bGxiYWNrQmFzZTo6RXJyb3IpPiBkaWRGb3JjZVJlcGFpbnRDYWxsYmFjayA9IFt0aGlzLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpIHsK
ICAgICAgICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKGVycm9yKTsKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTMwNTQsNyArMzA1Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpmb3JjZVJlcGFp
bnQoUGFzc1JlZlAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIAotICAgICAg
ICBjYWxsQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlKFtjYWxsYmFja10oQ2FsbGJhY2tCYXNl
OjpFcnJvciBlcnJvcikgeworICAgICAgICBjYWxsQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRl
KFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9y
KSB7CiAgICAgICAgICAgICBpZiAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkg
ewogICAgICAgICAgICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKGVycm9yKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CkBAIC0zMDY0LDcgKzMwNjMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
Zm9yY2VSZXBhaW50KFBhc3NSZWZQCiAgICAgICAgIH0pOwogICAgIH07CiAKLSAgICB1aW50NjRf
dCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KGRpZEZvcmNlUmVwYWludENhbGxiYWNrLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIHVp
bnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShkaWRGb3JjZVJlcGFp
bnRDYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7CiAgICAgbV9kcmF3aW5nQXJlYS0+d2FpdEZvckJhY2tpbmdTdG9yZVVwZGF0ZU9uTmV4
dFBhaW50KCk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGb3JjZVJl
cGFpbnQoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsgCiB9CkBAIC01OTkyLDU3ICs1OTkxLDUzIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjplbmRQcmludGluZygpCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpFbmRQcmludGluZygpLCBtX3BhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0
aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5Ojpjb21wdXRlUGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29u
c3QgUHJpbnRJbmZvJiBwcmludEluZm8sIFBhc3NSZWZQdHI8Q29tcHV0ZWRQYWdlc0NhbGxiYWNr
PiBwcnBDYWxsYmFjaykKK3ZvaWQgV2ViUGFnZVByb3h5Ojpjb21wdXRlUGFnZXNGb3JQcmludGlu
ZyhXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIFJlZjxD
b21wdXRlZFBhZ2VzQ2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7Ci0gICAgUmVmUHRyPENvbXB1dGVk
UGFnZXNDYWxsYmFjaz4gY2FsbGJhY2sgPSBwcnBDYWxsYmFjazsKICAgICBpZiAoIWlzVmFsaWQo
KSkgewogICAgICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7
Ci0gICAgbV9jYWxsYmFja3MucHV0KGNhbGxiYWNrKTsKKyAgICBtX2NhbGxiYWNrcy5wdXQoV1RG
TW92ZShjYWxsYmFjaykpOwogICAgIG1faXNJblByaW50aW5nTW9kZSA9IHRydWU7CiAgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZyhm
cmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCwgcHJpbnRp
bmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CiB9CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKLXZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UmVjdFRvSW1hZ2UoV2Vi
RnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBjb25zdCBJbnRS
ZWN0JiByZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBpbWFnZVNpemUsIFBhc3NSZWZQdHI8
SW1hZ2VDYWxsYmFjaz4gcHJwQ2FsbGJhY2spCit2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1JlY3RU
b0ltYWdlKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywg
Y29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgaW1hZ2VTaXplLCBS
ZWY8SW1hZ2VDYWxsYmFjaz4mJiBjYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8SW1hZ2VDYWxsYmFj
az4gY2FsbGJhY2sgPSBwcnBDYWxsYmFjazsKICAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAg
ICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAog
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwotICAgIG1f
Y2FsbGJhY2tzLnB1dChjYWxsYmFjayk7CisgICAgbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2spKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdSZWN0
VG9JbWFnZShmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIHJlY3QsIGltYWdlU2l6ZSwgY2Fs
bGJhY2tJRCksIG1fcGFnZUlELCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9N
UHJpbnRPcGVyYXRpb24pKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc1RvUERG
KFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWludDMy
X3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBQYXNzUmVmUHRyPERhdGFDYWxsYmFjaz4gcHJwQ2Fs
bGJhY2spCit2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzVG9QREYoV2ViRnJhbWVQcm94eSog
ZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMy
X3QgY291bnQsIFJlZjxEYXRhQ2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7Ci0gICAgUmVmUHRyPERh
dGFDYWxsYmFjaz4gY2FsbGJhY2sgPSBwcnBDYWxsYmFjazsKICAgICBpZiAoIWlzVmFsaWQoKSkg
ewogICAgICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIAogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgp
OwotICAgIG1fY2FsbGJhY2tzLnB1dChjYWxsYmFjayk7CisgICAgbV9jYWxsYmFja3MucHV0KFdU
Rk1vdmUoY2FsbGJhY2spKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkRyYXdQYWdlc1RvUERGKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgZmlyc3QsIGNvdW50
LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1p
bmdET01QcmludE9wZXJhdGlvbikpOwogfQogI2VsaWYgUExBVEZPUk0oR1RLKQotdm9pZCBXZWJQ
YWdlUHJveHk6OmRyYXdQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25z
dCBQcmludEluZm8mIHByaW50SW5mbywgUGFzc1JlZlB0cjxQcmludEZpbmlzaGVkQ2FsbGJhY2s+
IGRpZFByaW50Q2FsbGJhY2spCit2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzRm9yUHJpbnRp
bmcoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBSZWY8
UHJpbnRGaW5pc2hlZENhbGxiYWNrPiYmIGNhbGxiYWNrKQogewotICAgIFJlZlB0cjxQcmludEZp
bmlzaGVkQ2FsbGJhY2s+IGNhbGxiYWNrID0gZGlkUHJpbnRDYWxsYmFjazsKICAgICBpZiAoIWlz
VmFsaWQoKSkgewogICAgICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFj
a0lEKCk7Ci0gICAgbV9jYWxsYmFja3MucHV0KGNhbGxiYWNrKTsKKyAgICBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFjaykpOwogICAgIG1faXNJblByaW50aW5nTW9kZSA9IHRydWU7CiAg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UGFnZXNGb3JQcmludGlu
ZyhmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCwgcHJp
bnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CiB9CkBA
IC02NzQ0LDcgKzY3MzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2FsbEFmdGVyTmV4dFByZXNl
bnRhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2RyYXdpbmdBcmVhLT5kaXNwYXRj
aEFmdGVyRW5zdXJpbmdEcmF3aW5nKGNhbGxiYWNrKTsKKyAgICBtX2RyYXdpbmdBcmVhLT5kaXNw
YXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnNldFNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQoYm9vbCBzaG91bGRT
Y2FsZVZpZXdUb0ZpdERvY3VtZW50KQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAkocmV2aXNpb24gMjE2NDY2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC04MDcsNyArODA3LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSosIHN0ZDo6ZnVuY3Rp
b248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKICAgICB2b2lk
IGdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJveHkqLCBGdW5jdGlvbjx2b2lkIChBUEk6
OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBydW5KYXZhU2NyaXB0
SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiwgc3RkOjpmdW5jdGlvbjx2b2lkIChBUEk6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wgaGFkRXhjZXB0aW9uLCBjb25zdCBXZWJDb3JlOjpFeGNl
cHRpb25EZXRhaWxzJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pOwot
ICAgIHZvaWQgZm9yY2VSZXBhaW50KFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPik7CisgICAgdm9p
ZCBmb3JjZVJlcGFpbnQoUmVmUHRyPFZvaWRDYWxsYmFjaz4mJik7CiAKICAgICBmbG9hdCBoZWFk
ZXJIZWlnaHQoV2ViRnJhbWVQcm94eSopOwogICAgIGZsb2F0IGZvb3RlckhlaWdodChXZWJGcmFt
ZVByb3h5Kik7CkBAIC05MzYsMTYgKzkzNiwxNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGJlZ2lu
UHJpbnRpbmcoV2ViRnJhbWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYpOwogICAgIHZvaWQgZW5k
UHJpbnRpbmcoKTsKLSAgICB2b2lkIGNvbXB1dGVQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1lUHJv
eHkqLCBjb25zdCBQcmludEluZm8mLCBQYXNzUmVmUHRyPENvbXB1dGVkUGFnZXNDYWxsYmFjaz4p
OworICAgIHZvaWQgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSosIGNvbnN0
IFByaW50SW5mbyYsIFJlZjxDb21wdXRlZFBhZ2VzQ2FsbGJhY2s+JiYpOwogI2lmIFBMQVRGT1JN
KENPQ09BKQotICAgIHZvaWQgZHJhd1JlY3RUb0ltYWdlKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQ
cmludEluZm8mLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYsIFBhc3NSZWZQdHI8SW1hZ2VDYWxsYmFjaz4pOwotICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYo
V2ViRnJhbWVQcm94eSosIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJf
dCBjb3VudCwgUGFzc1JlZlB0cjxEYXRhQ2FsbGJhY2s+KTsKKyAgICB2b2lkIGRyYXdSZWN0VG9J
bWFnZShXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBSZWY8SW1hZ2VDYWxsYmFjaz4mJik7Cisg
ICAgdm9pZCBkcmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwg
dWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBSZWY8RGF0YUNhbGxiYWNrPiYmKTsKICNp
ZiBQTEFURk9STShJT1MpCiAgICAgdWludDMyX3QgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmRE
cmF3VG9QREYodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgRHJhd1RvUERGQ2Fs
bGJhY2s6OkNhbGxiYWNrRnVuY3Rpb24mJik7CiAgICAgdm9pZCBkcmF3VG9QREZDYWxsYmFjayhj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwog
I2VuZGlmCiAjZWxpZiBQTEFURk9STShHVEspCi0gICAgdm9pZCBkcmF3UGFnZXNGb3JQcmludGlu
ZyhXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgUGFzc1JlZlB0cjxQcmludEZpbmlz
aGVkQ2FsbGJhY2s+KTsKKyAgICB2b2lkIGRyYXdQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1lUHJv
eHkqLCBjb25zdCBQcmludEluZm8mLCBSZWY8UHJpbnRGaW5pc2hlZENhbGxiYWNrPiYmKTsKICNl
bmRpZgogCiAgICAgUGFnZUxvYWRTdGF0ZSYgcGFnZUxvYWRTdGF0ZSgpIHsgcmV0dXJuIG1fcGFn
ZUxvYWRTdGF0ZTsgfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZUdyb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlR3JvdXAuY3BwCShyZXZpc2lvbiAyMTY0NjYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3
IEBAIFdLVHlwZUlEIFdLUGFnZUdyb3VwR2V0VHlwZUlEKCkKIFdLUGFnZUdyb3VwUmVmIFdLUGFn
ZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIoV0tTdHJpbmdSZWYgaWRlbnRpZmllcikKIHsKICAg
ICBhdXRvIHBhZ2VHcm91cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKHRvV1RGU3RyaW5nKGlkZW50
aWZpZXIpKTsKLSAgICByZXR1cm4gdG9BUEkocGFnZUdyb3VwLmxlYWtSZWYoKSk7CisgICAgcmV0
dXJuIHRvQVBJKCZwYWdlR3JvdXAubGVha1JlZigpKTsKIH0KIAogdm9pZCBXS1BhZ2VHcm91cFNl
dFByZWZlcmVuY2VzKFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiwgV0tQcmVmZXJlbmNlc1Jl
ZiBwcmVmZXJlbmNlc1JlZikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvVGV4
dENoZWNrZXJHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9n
dGsvVGV4dENoZWNrZXJHdGsuY3BwCShyZXZpc2lvbiAyMTY0NjYpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZ3RrL1RleHRDaGVja2VyR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA3
LDEyICsyMDcsOSBAQCB2b2lkIFRleHRDaGVja2VyOjppZ25vcmVXb3JkKGludDY0X3QgLyogCiAj
ZW5kaWYKIH0KIAotdm9pZCBUZXh0Q2hlY2tlcjo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoUGFz
c1JlZlB0cjxUZXh0Q2hlY2tlckNvbXBsZXRpb24+IGNvbXBsZXRpb24sIGludDMyX3QgaW5zZXJ0
aW9uUG9pbnQpCit2b2lkIFRleHRDaGVja2VyOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhSZWY8
VGV4dENoZWNrZXJDb21wbGV0aW9uPiYmIGNvbXBsZXRpb24sIGludDMyX3QgaW5zZXJ0aW9uUG9p
bnQpCiB7CiAjaWYgRU5BQkxFKFNQRUxMQ0hFQ0spCi0gICAgaWYgKCFjb21wbGV0aW9uKQotICAg
ICAgICByZXR1cm47Ci0KICAgICBUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YSByZXF1ZXN0ID0gY29t
cGxldGlvbi0+dGV4dENoZWNraW5nUmVxdWVzdERhdGEoKTsKICAgICBBU1NFUlQocmVxdWVzdC5z
ZXF1ZW5jZSgpICE9IHVucmVxdWVzdGVkVGV4dENoZWNraW5nU2VxdWVuY2UpOwogICAgIEFTU0VS
VChyZXF1ZXN0Lm1hc2soKSAhPSBUZXh0Q2hlY2tpbmdUeXBlTm9uZSk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1RleHRDaGVja2VySU9TLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvVGV4dENoZWNrZXJJT1MubW0JKHJldmlzaW9uIDIx
NjQ2NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvVGV4dENoZWNrZXJJT1MubW0J
KHdvcmtpbmcgY29weSkKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIFRleHRDaGVja2VyOjppZ25v
cmVXb3JkKGludDY0X3QsIGNvCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBUZXh0
Q2hlY2tlcjo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoUGFzc1JlZlB0cjxUZXh0Q2hlY2tlckNv
bXBsZXRpb24+LCBpbnQzMl90KQordm9pZCBUZXh0Q2hlY2tlcjo6cmVxdWVzdENoZWNraW5nT2ZT
dHJpbmcoUmVmPFRleHRDaGVja2VyQ29tcGxldGlvbj4mJiwgaW50MzJfdCkKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UZXh0
Q2hlY2tlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1RleHRDaGVja2VyTWFjLm1tCShyZXZpc2lvbiAyMTY0NjYpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MDAsNyAr
NTAwLDcgQEAgdm9pZCBUZXh0Q2hlY2tlcjo6aWdub3JlV29yZChpbnQ2NF90IHNwZQogICAgIFtb
TlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBpZ25vcmVXb3JkOndvcmQgaW5TcGVs
bERvY3VtZW50V2l0aFRhZzpzcGVsbERvY3VtZW50VGFnXTsKIH0KIAotdm9pZCBUZXh0Q2hlY2tl
cjo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoUGFzc1JlZlB0cjxUZXh0Q2hlY2tlckNvbXBsZXRp
b24+LCBpbnQzMl90KQordm9pZCBUZXh0Q2hlY2tlcjo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmco
UmVmPFRleHRDaGVja2VyQ29tcGxldGlvbj4mJiwgaW50MzJfdCkKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5LmgJKHJldmlz
aW9uIDIxNjQ2NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5X2gKLSNkZWZpbmUgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWFQcm94eV9oCisjcHJhZ21hIG9uY2UKIAogI2lmICFQTEFURk9STShJT1Mp
CiAKQEAgLTgwLDUgKzc5LDMgQEAgcHJpdmF0ZToKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRFJB
V0lOR19BUkVBX1BST1hZKFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHksIERyYXdp
bmdBcmVhVHlwZVRpbGVkQ29yZUFuaW1hdGlvbikKIAogI2VuZGlmIC8vICFQTEFURk9STShJT1Mp
Ci0KLSNlbmRpZiAvLyBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5X2gKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxl
ci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNj
cmVlbldpbmRvd0NvbnRyb2xsZXIubW0JKHJldmlzaW9uIDIxNjQ2NikKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNDI2LDcgKzQyNiw3IEBAIC0gKHZvaWQpZmluaXNoZWRFeGl0RnVsbFNjcmVl
bkFuaW1hdGlvbjoKICAgICBfcmVwYWludENhbGxiYWNrID0gVm9pZENhbGxiYWNrOjpjcmVhdGUo
W3NlbGZdKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgewogICAgICAgICBbc2VsZiBjb21w
bGV0ZUZpbmlzaEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uQWZ0ZXJSZXBhaW50XTsKICAgICB9KTsK
LSAgICBfcGFnZS0+Zm9yY2VSZXBhaW50KF9yZXBhaW50Q2FsbGJhY2spOworICAgIF9wYWdlLT5m
b3JjZVJlcGFpbnQoX3JlcGFpbnRDYWxsYmFjay5jb3B5UmVmKCkpOwogfQogCiAtICh2b2lkKWNv
bXBsZXRlRmluaXNoRXhpdEZ1bGxTY3JlZW5BbmltYXRpb25BZnRlclJlcGFpbnQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tQcmludGluZ1ZpZXcubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmlldy5tbQkocmV2aXNp
b24gMjE2NDY2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS1ByaW50aW5nVmll
dy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjY1LDcgKzI2NSw3IEBAIC0gKHZvaWQpX3ByZXBhcmVQ
REZEYXRhRm9yUHJpbnRpbmdPblNlY28KICAgICBfd2ViRnJhbWUtPnBhZ2UoKS0+YmVnaW5Qcmlu
dGluZyhfd2ViRnJhbWUuZ2V0KCksIHByaW50SW5mbyk7CiAKICAgICBJUENDYWxsYmFja0NvbnRl
eHQqIGNvbnRleHQgPSBuZXcgSVBDQ2FsbGJhY2tDb250ZXh0OwotICAgIFJlZlB0cjxEYXRhQ2Fs
bGJhY2s+IGNhbGxiYWNrID0gRGF0YUNhbGxiYWNrOjpjcmVhdGUoW2NvbnRleHRdKEFQSTo6RGF0
YSogZGF0YSwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CisgICAgYXV0byBjYWxsYmFj
ayA9IERhdGFDYWxsYmFjazo6Y3JlYXRlKFtjb250ZXh0XShBUEk6OkRhdGEqIGRhdGEsIFdlYktp
dDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgewogICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJUENDYWxsYmFja0NvbnRleHQ+IGNvbnRl
eHREZWxldGVyKGNvbnRleHQpOwpAQCAtMjg2LDcgKzI4Niw3IEBAIC0gKHZvaWQpX3ByZXBhcmVQ
REZEYXRhRm9yUHJpbnRpbmdPblNlY28KICAgICBjb250ZXh0LT52aWV3ID0gc2VsZjsKICAgICBj
b250ZXh0LT5jYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKIAotICAgIF93ZWJG
cmFtZS0+cGFnZSgpLT5kcmF3UGFnZXNUb1BERihfd2ViRnJhbWUuZ2V0KCksIHByaW50SW5mbywg
Zmlyc3RQYWdlIC0gMSwgbGFzdFBhZ2UgLSBmaXJzdFBhZ2UgKyAxLCBjYWxsYmFjay5nZXQoKSk7
CisgICAgX3dlYkZyYW1lLT5wYWdlKCktPmRyYXdQYWdlc1RvUERGKF93ZWJGcmFtZS5nZXQoKSwg
cHJpbnRJbmZvLCBmaXJzdFBhZ2UgLSAxLCBsYXN0UGFnZSAtIGZpcnN0UGFnZSArIDEsIFdURk1v
dmUoY2FsbGJhY2spKTsKIH0KIAogc3RhdGljIHZvaWQgcGFnZURpZENvbXB1dGVQYWdlUmVjdHMo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBwYWdlUmVjdHMsIGRvdWJsZSB0b3RhbFNj
YWxlRmFjdG9yRm9yUHJpbnRpbmcsIElQQ0NhbGxiYWNrQ29udGV4dCogY29udGV4dCkKQEAgLTUx
Nyw3ICs1MTcsNyBAQCAtICh2b2lkKV9kcmF3UHJldmlldzooTlNSZWN0KW5zUmVjdAogICAgICAg
ICAgICAgICAgIF93ZWJGcmFtZS0+cGFnZSgpLT5iZWdpblByaW50aW5nKF93ZWJGcmFtZS5nZXQo
KSwgUHJpbnRJbmZvKFtfcHJpbnRPcGVyYXRpb24gcHJpbnRJbmZvXSkpOwogCiAgICAgICAgICAg
ICAgICAgSVBDQ2FsbGJhY2tDb250ZXh0KiBjb250ZXh0ID0gbmV3IElQQ0NhbGxiYWNrQ29udGV4
dDsKLSAgICAgICAgICAgICAgICBSZWZQdHI8SW1hZ2VDYWxsYmFjaz4gY2FsbGJhY2sgPSBJbWFn
ZUNhbGxiYWNrOjpjcmVhdGUoW2NvbnRleHRdKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxl
JiBpbWFnZUhhbmRsZSwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CisgICAgICAgICAg
ICAgICAgYXV0byBjYWxsYmFjayA9IEltYWdlQ2FsbGJhY2s6OmNyZWF0ZShbY29udGV4dF0oY29u
c3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlSGFuZGxlLCBXZWJLaXQ6OkNhbGxiYWNr
QmFzZTo6RXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElQQ0Nh
bGxiYWNrQ29udGV4dD4gY29udGV4dERlbGV0ZXIoY29udGV4dCk7CiAgICAgICAgICAgICAgICAg
ICAgIHBhZ2VEaWREcmF3VG9JbWFnZShpbWFnZUhhbmRsZSwgY29udGV4dCk7CiAgICAgICAgICAg
ICAgICAgfSk7CkBAIC01MjcsNyArNTI3LDcgQEAgLSAodm9pZClfZHJhd1ByZXZpZXc6KE5TUmVj
dCluc1JlY3QKICAgICAgICAgICAgICAgICBjb250ZXh0LT52aWV3ID0gc2VsZjsKICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5jYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKIAot
ICAgICAgICAgICAgICAgIF93ZWJGcmFtZS0+cGFnZSgpLT5kcmF3UmVjdFRvSW1hZ2UoX3dlYkZy
YW1lLmdldCgpLCBQcmludEluZm8oW19wcmludE9wZXJhdGlvbiBwcmludEluZm9dKSwgc2NhbGVk
UHJpbnRpbmdSZWN0LCBpbWFnZVNpemUsIGNhbGxiYWNrLmdldCgpKTsKKyAgICAgICAgICAgICAg
ICBfd2ViRnJhbWUtPnBhZ2UoKS0+ZHJhd1JlY3RUb0ltYWdlKF93ZWJGcmFtZS5nZXQoKSwgUHJp
bnRJbmZvKFtfcHJpbnRPcGVyYXRpb24gcHJpbnRJbmZvXSksIHNjYWxlZFByaW50aW5nUmVjdCwg
aW1hZ2VTaXplLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAJ
KHJldmlzaW9uIDIxNjQ2NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OSw3ICsxNjks
NyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjpsb2FkVVJMKGNvbnN0IFN0cmluCiAKICAgICBpZiAo
dGFyZ2V0LmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIFRoZSBicm93c2VyIGlzIGdvaW5nIHRvIHNl
bmQgdGhlIGRhdGEgaW4gYSBzdHJlYW0sIGNyZWF0ZSBhIHBsdWctaW4gc3RyZWFtLgotICAgICAg
ICBhdXRvIHBsdWdpblN0cmVhbSA9IE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpjcmVhdGUodGhpcywg
cmVxdWVzdElELCB1cmxTdHJpbmcsIHNlbmROb3RpZmljYXRpb24sIG5vdGlmaWNhdGlvbkRhdGEp
OworICAgICAgICBhdXRvIHBsdWdpblN0cmVhbSA9IE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpjcmVh
dGUoKnRoaXMsIHJlcXVlc3RJRCwgdXJsU3RyaW5nLCBzZW5kTm90aWZpY2F0aW9uLCBub3RpZmlj
YXRpb25EYXRhKTsKICAgICAgICAgQVNTRVJUKCFtX3N0cmVhbXMuY29udGFpbnMocmVxdWVzdElE
KSk7CiAKICAgICAgICAgbV9zdHJlYW1zLnNldChyZXF1ZXN0SUQsIFdURk1vdmUocGx1Z2luU3Ry
ZWFtKSk7CkBAIC04OTcsNyArODk3LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6bWFudWFsU3Ry
ZWFtRGlkUmVjZQogICAgIEFTU0VSVChtX3Nob3VsZFVzZU1hbnVhbExvYWRlcik7CiAgICAgQVNT
RVJUKCFtX21hbnVhbFN0cmVhbSk7CiAgICAgCi0gICAgbV9tYW51YWxTdHJlYW0gPSBOZXRzY2Fw
ZVBsdWdpblN0cmVhbTo6Y3JlYXRlKHRoaXMsIDAsIHJlc3BvbnNlVVJMLnN0cmluZygpLCBmYWxz
ZSwgMCk7CisgICAgbV9tYW51YWxTdHJlYW0gPSBOZXRzY2FwZVBsdWdpblN0cmVhbTo6Y3JlYXRl
KCp0aGlzLCAwLCByZXNwb25zZVVSTC5zdHJpbmcoKSwgZmFsc2UsIDApOwogICAgIG1fbWFudWFs
U3RyZWFtLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VVUkwsIHN0cmVhbUxlbmd0aCwgbGFz
dE1vZGlmaWVkVGltZSwgbWltZVR5cGUsIGhlYWRlcnMpOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAJKHJldmlzaW9uIDIxNjQ2NikKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDggKzM2LDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1OZXRzY2FwZVBsdWdpblN0cmVhbTo6TmV0c2Nh
cGVQbHVnaW5TdHJlYW0oUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdpbj4gcGx1Z2luLCB1aW50NjRf
dCBzdHJlYW1JRCwgY29uc3QgU3RyaW5nJiByZXF1ZXN0VVJMU3RyaW5nLCBib29sIHNlbmROb3Rp
ZmljYXRpb24sIHZvaWQqIG5vdGlmaWNhdGlvbkRhdGEpCi0gICAgOiBtX3BsdWdpbihwbHVnaW4p
CitOZXRzY2FwZVBsdWdpblN0cmVhbTo6TmV0c2NhcGVQbHVnaW5TdHJlYW0oUmVmPE5ldHNjYXBl
UGx1Z2luPiYmIHBsdWdpbiwgdWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFN0cmluZyYgcmVxdWVz
dFVSTFN0cmluZywgYm9vbCBzZW5kTm90aWZpY2F0aW9uLCB2b2lkKiBub3RpZmljYXRpb25EYXRh
KQorICAgIDogbV9wbHVnaW4oV1RGTW92ZShwbHVnaW4pKQogICAgICwgbV9zdHJlYW1JRChzdHJl
YW1JRCkKICAgICAsIG1fcmVxdWVzdFVSTFN0cmluZyhyZXF1ZXN0VVJMU3RyaW5nKQogICAgICwg
bV9zZW5kTm90aWZpY2F0aW9uKHNlbmROb3RpZmljYXRpb24pCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW5TdHJlYW0uaAkocmV2aXNpb24gMjE2NDY2KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWZuZGVmIE5ldHNjYXBlUGx1Z2luU3RyZWFtX2gKLSNkZWZpbmUgTmV0
c2NhcGVQbHVnaW5TdHJlYW1faAorI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoTkVUU0NBUEVf
UExVR0lOX0FQSSkKIApAQCAtMzIsNyArMzEsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvbnBydW50
aW1lX2ludGVybmFsLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpA
QCAtNDgsOSArNDYsOSBAQCBjbGFzcyBOZXRzY2FwZVBsdWdpbjsKIAogY2xhc3MgTmV0c2NhcGVQ
bHVnaW5TdHJlYW0gOiBwdWJsaWMgUmVmQ291bnRlZDxOZXRzY2FwZVBsdWdpblN0cmVhbT4gewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8TmV0c2NhcGVQbHVnaW5TdHJlYW0+IGNyZWF0ZShQYXNz
UmVmUHRyPE5ldHNjYXBlUGx1Z2luPiBwbHVnaW4sIHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBT
dHJpbmcmIHJlcXVlc3RVUkxTdHJpbmcsIGJvb2wgc2VuZE5vdGlmaWNhdGlvbiwgdm9pZCogbm90
aWZpY2F0aW9uRGF0YSkKKyAgICBzdGF0aWMgUmVmPE5ldHNjYXBlUGx1Z2luU3RyZWFtPiBjcmVh
dGUoUmVmPE5ldHNjYXBlUGx1Z2luPiYmIHBsdWdpbiwgdWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0
IFN0cmluZyYgcmVxdWVzdFVSTFN0cmluZywgYm9vbCBzZW5kTm90aWZpY2F0aW9uLCB2b2lkKiBu
b3RpZmljYXRpb25EYXRhKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0
c2NhcGVQbHVnaW5TdHJlYW0ocGx1Z2luLCBzdHJlYW1JRCwgcmVxdWVzdFVSTFN0cmluZywgc2Vu
ZE5vdGlmaWNhdGlvbiwgbm90aWZpY2F0aW9uRGF0YSkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBOZXRzY2FwZVBsdWdpblN0cmVhbShXVEZNb3ZlKHBsdWdpbiksIHN0cmVhbUlELCBy
ZXF1ZXN0VVJMU3RyaW5nLCBzZW5kTm90aWZpY2F0aW9uLCBub3RpZmljYXRpb25EYXRhKSk7CiAg
ICAgfQogICAgIH5OZXRzY2FwZVBsdWdpblN0cmVhbSgpOwogCkBAIC03MSw3ICs2OSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFVSTChjb25zdCBTdHJpbmcmIG5ld1VSTFN0cmluZyk7CiAKIHBy
aXZhdGU6Ci0gICAgTmV0c2NhcGVQbHVnaW5TdHJlYW0oUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdp
bj4sIHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBTdHJpbmcmIHJlcXVlc3RVUkxTdHJpbmcsIGJv
b2wgc2VuZE5vdGlmaWNhdGlvbiwgdm9pZCogbm90aWZpY2F0aW9uRGF0YSk7CisgICAgTmV0c2Nh
cGVQbHVnaW5TdHJlYW0oUmVmPE5ldHNjYXBlUGx1Z2luPiYmLCB1aW50NjRfdCBzdHJlYW1JRCwg
Y29uc3QgU3RyaW5nJiByZXF1ZXN0VVJMU3RyaW5nLCBib29sIHNlbmROb3RpZmljYXRpb24sIHZv
aWQqIG5vdGlmaWNhdGlvbkRhdGEpOwogCiAgICAgYm9vbCBzdGFydChjb25zdCBTdHJpbmcmIHJl
c3BvbnNlVVJMU3RyaW5nLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIAogICAgICAgICAgICAgICAg
dWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
U3RyaW5nJiBoZWFkZXJzKTsKQEAgLTgzLDcgKzgxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRl
bGl2ZXJEYXRhVG9QbHVnaW4oKTsKICAgICB2b2lkIGRlbGl2ZXJEYXRhVG9GaWxlKGNvbnN0IGNo
YXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKIAotICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdpbj4gbV9w
bHVnaW47CisgICAgUmVmPE5ldHNjYXBlUGx1Z2luPiBtX3BsdWdpbjsKICAgICB1aW50NjRfdCBt
X3N0cmVhbUlEOwogCiAgICAgU3RyaW5nIG1fcmVxdWVzdFVSTFN0cmluZzsKQEAgLTExNiw1ICsx
MTQsMyBAQCBwcml2YXRlOgogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLQotI2VuZGlmIC8vIE5ldHNjYXBlUGx1Z2luU3RyZWFt
X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lv
blN0YXRlQ29udmVyc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAkocmV2aXNpb24g
MjE2NDY2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNz
aW9uU3RhdGVDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw3IEBA
IFBhZ2VTdGF0ZSB0b1BhZ2VTdGF0ZShjb25zdCBXZWJDb3JlOjpIaXMKICAgICByZXR1cm4gcGFn
ZVN0YXRlOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxGb3JtRGF0YT4gdG9Gb3JtRGF0YShjb25z
dCBIVFRQQm9keSYgaHR0cEJvZHkpCitzdGF0aWMgUmVmPEZvcm1EYXRhPiB0b0Zvcm1EYXRhKGNv
bnN0IEhUVFBCb2R5JiBodHRwQm9keSkKIHsKICAgICBhdXRvIGZvcm1EYXRhID0gRm9ybURhdGE6
OmNyZWF0ZSgpOwogCkBAIC0xNDIsNyArMTQyLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8Rm9ybURh
dGE+IHRvRm9ybURhdGEoYwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIFdURk1vdmUo
Zm9ybURhdGEpOworICAgIHJldHVybiBmb3JtRGF0YTsKIH0KIAogc3RhdGljIHZvaWQgYXBwbHlG
cmFtZVN0YXRlKEhpc3RvcnlJdGVtJiBoaXN0b3J5SXRlbSwgY29uc3QgRnJhbWVTdGF0ZSYgZnJh
bWVTdGF0ZSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>