<?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>174693</bug_id>
          
          <creation_ts>2017-07-20 15:27:33 -0700</creation_ts>
          <short_desc>Get rid of IconDatabase related code in WebKit</short_desc>
          <delta_ts>2017-07-20 21:10:59 -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>WebKit Misc.</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="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1330797</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-20 15:27:33 -0700</bug_when>
    <thetext>Get rid of IconDatabase related code in WebKit

(As much as possible)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330803</commentid>
    <comment_count>1</comment_count>
      <attachid>316033</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-20 15:49:12 -0700</bug_when>
    <thetext>Created attachment 316033
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330804</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-20 15:49:20 -0700</bug_when>
    <thetext>Let EWS work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330814</commentid>
    <comment_count>3</comment_count>
      <attachid>316035</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-20 16:04:24 -0700</bug_when>
    <thetext>Created attachment 316035
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330816</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-20 16:07:06 -0700</bug_when>
    <thetext>Attachment 316035 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/API/C/cairo/WKIconDatabaseCairo.cpp:37:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330826</commentid>
    <comment_count>5</comment_count>
      <attachid>316040</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-20 16:40:36 -0700</bug_when>
    <thetext>Created attachment 316040
Patch with &lt;tab&gt; fixed

Not marking as a patch yet, waiting for EWS to finish on the last one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330841</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-20 17:12:09 -0700</bug_when>
    <thetext>Ran API tests locally, have some API test failures to resolve (by getting rid of them)

  IconLoading.AlreadyCachedIcon
  IconLoading.DefaultFavicon
  IconLoading.IconLoadCancelledCallback
  IconLoading.IconLoadCancelledCallback2

Will do those with an updated patch for landing.

(EWS SHOULD DO API TESTS!)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330887</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-20 19:02:38 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #6)
&gt; Ran API tests locally, have some API test failures to resolve (by getting
&gt; rid of them)
&gt; 
&gt;   IconLoading.AlreadyCachedIcon
&gt;   IconLoading.DefaultFavicon
&gt;   IconLoading.IconLoadCancelledCallback
&gt;   IconLoading.IconLoadCancelledCallback2
&gt; 
&gt; Will do those with an updated patch for landing.
&gt; 
&gt; (EWS SHOULD DO API TESTS!)

Whoops, these are actually *new* tests. I know what I did wrong here. One line change in WebFrameLoaderClient, I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330908</commentid>
    <comment_count>8</comment_count>
      <attachid>316065</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-20 20:32:26 -0700</bug_when>
    <thetext>Created attachment 316065
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330909</commentid>
    <comment_count>9</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-20 20:33:24 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #7)
&gt; (In reply to Brady Eidson from comment #6)
&gt; &gt; Ran API tests locally, have some API test failures to resolve (by getting
&gt; &gt; rid of them)
&gt; &gt; 
&gt; &gt;   IconLoading.AlreadyCachedIcon
&gt; &gt;   IconLoading.DefaultFavicon
&gt; &gt;   IconLoading.IconLoadCancelledCallback
&gt; &gt;   IconLoading.IconLoadCancelledCallback2
&gt; &gt; 
&gt; &gt; Will do those with an updated patch for landing.
&gt; &gt; 
&gt; &gt; (EWS SHOULD DO API TESTS!)
&gt; 
&gt; Whoops, these are actually *new* tests. I know what I did wrong here. One
&gt; line change in WebFrameLoaderClient, I think.

Yup, I&apos;d accidentally taken off the WebFrameLoaderClient method that tells WebCore to use icon loading client mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330912</commentid>
    <comment_count>10</comment_count>
      <attachid>316065</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-20 21:10:58 -0700</bug_when>
    <thetext>Comment on attachment 316065
Patch

Clearing flags on attachment: 316065

Committed r219713: &lt;http://trac.webkit.org/changeset/219713&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330913</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-20 21:10:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316033</attachid>
            <date>2017-07-20 15:49:12 -0700</date>
            <delta_ts>2017-07-20 16:04:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>82293</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0
L0NNYWtlTGlzdHMudHh0CmluZGV4IGQzMGEwYmZiYjdkLi4zMzAyMjNlYTBhNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtl
TGlzdHMudHh0CkBAIC0zMTEsOCArMzExLDYgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJ
UHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKICAgICBVSVByb2Nlc3MvV2Vi
R2VvbG9jYXRpb25Qcm92aWRlci5jcHAKICAgICBVSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5j
cHAKLSAgICBVSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmNwcAotICAgIFVJUHJvY2Vzcy9XZWJJ
Y29uRGF0YWJhc2VDbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNw
cAogICAgIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JVdGlsaXRpZXMuY3BwCiAgICAgVUlQcm9jZXNz
L1dlYk5hdmlnYXRpb25TdGF0ZS5jcHAKQEAgLTQ2Myw4ICs0NjEsNiBAQCBzZXQoV2ViS2l0Ml9T
T1VSQ0VTCiAgICAgV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlci5jcHAKICAgICBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0
aW9uTWFuYWdlci5jcHAKIAotICAgIFdlYlByb2Nlc3MvSWNvbkRhdGFiYXNlL1dlYkljb25EYXRh
YmFzZVByb3h5LmNwcAotCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFj
a0ZvcndhcmRMaXN0LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcApAQCAtNjE2LDcgKzYxMiw2IEBAIHNldChXZWJL
aXQyX01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94
eS5tZXNzYWdlcy5pbgogICAgIFVJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Lm1l
c3NhZ2VzLmluCiAgICAgVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lm1lc3Nh
Z2VzLmluCi0gICAgVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5tZXNzYWdlcy5pbgogICAgIFVJ
UHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgogICAgIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KICAgICBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1l
c3NhZ2VzLmluCkBAIC02NTIsOCArNjQ3LDYgQEAgc2V0KFdlYktpdDJfTUVTU0FHRVNfSU5fRklM
RVMKIAogICAgIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1l
c3NhZ2VzLmluCiAKLSAgICBXZWJQcm9jZXNzL0ljb25EYXRhYmFzZS9XZWJJY29uRGF0YWJhc2VQ
cm94eS5tZXNzYWdlcy5pbgotCiAgICAgV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENN
b25pdG9yLm1lc3NhZ2VzLmluCiAgICAgV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENS
ZXNvbHZlci5tZXNzYWdlcy5pbgogICAgIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRD
U29ja2V0Lm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVkNTNiMjgzMTMwLi5kODQ1ZjU2YzZkZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw3OCBAQAorMjAxNy0wNy0yMCAgQnJhZHkgRWlkc29uICA8YmVp
ZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0IHJpZCBvZiBJY29uRGF0YWJhc2UgcmVsYXRl
ZCBjb2RlIGluIFdlYktpdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NDY5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgbGVhdmVzIHRoZSBDLUFQSSBjbGFzcyBidXQgZ3V0cyBpdC4KKworICAg
ICAgICBObyBleHBsYW5hdGlvbnMgb2YgdGhlIG90aGVyIGNoYW5nZXMgYXJlIG5lZWRlZC4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6
CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgIChXS0NvbnRleHRHZXRJY29u
RGF0YWJhc2UpOgorICAgICAgICAoV0tDb250ZXh0U2V0SWNvbkRhdGFiYXNlUGF0aCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdLSWNv
bkRhdGFiYXNlU2V0SWNvbkRhdGFiYXNlQ2xpZW50KToKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNl
UmV0YWluSWNvbkZvclVSTCk6CisgICAgICAgIChXS0ljb25EYXRhYmFzZVJlbGVhc2VJY29uRm9y
VVJMKToKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNlU2V0SWNvbkRhdGFGb3JJY29uVVJMKToKKyAg
ICAgICAgKFdLSWNvbkRhdGFiYXNlU2V0SWNvblVSTEZvclBhZ2VVUkwpOgorICAgICAgICAoV0tJ
Y29uRGF0YWJhc2VDb3B5SWNvblVSTEZvclBhZ2VVUkwpOgorICAgICAgICAoV0tJY29uRGF0YWJh
c2VDb3B5SWNvbkRhdGFGb3JQYWdlVVJMKToKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNlRW5hYmxl
RGF0YWJhc2VDbGVhbnVwKToKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNlUmVtb3ZlQWxsSWNvbnMp
OgorICAgICAgICAoV0tJY29uRGF0YWJhc2VDaGVja0ludGVncml0eUJlZm9yZU9wZW5pbmcpOgor
ICAgICAgICAoV0tJY29uRGF0YWJhc2VDbG9zZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L2NnL1dLSWNvbkRhdGFiYXNlQ0cuY3BwOgorICAgICAgICAoV0tJY29uRGF0YWJhc2VUcnlHZXRD
R0ltYWdlRm9yVVJMKToKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNlVHJ5Q29weUNHSW1hZ2VBcnJh
eUZvclVSTCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1bHRJY29u
RGF0YWJhc2VQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSWNvbkRhdGFi
YXNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmg6
CisgICAgICAgIChXZWJLaXQ6OldlYkljb25EYXRhYmFzZTo6Y2xlYXJQcm9jZXNzUG9vbCk6IERl
bGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5tZXNzYWdlcy5pbjog
UmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlQ2xpZW50Lmg6IFJl
bW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6bV9oaWRkZW5QYWdlVGhyb3R0bGluZ1RpbWVyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6On5XZWJQcm9jZXNzUG9vbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpzZXRBbnlQYWdlR3JvdXBNaWdodEhhdmVQcml2YXRlQnJvd3NpbmdFbmFibGVk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0SWNvbkRhdGFiYXNlUGF0aCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjppY29uRGF0YWJhc2VQ
YXRoKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2lsbFNodXREb3duKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5OjpyZXRhaW5JY29uRm9yUGFnZVVSTCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cmVsZWFzZUljb25Gb3JQYWdlVVJMKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpyZWxlYXNlUmVtYWluaW5nSWNv
bnNGb3JQYWdlVVJMcyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46
CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1bHRJY29uRGF0YWJhc2VQYXRo
KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NQb29sV1BFLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdEljb25E
YXRhYmFzZVBhdGgpOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvSWNvbkRhdGFiYXNlL1dlYkljb25EYXRh
YmFzZVByb3h5LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0ljb25EYXRhYmFz
ZS9XZWJJY29uRGF0YWJhc2VQcm94eS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SWNvbkRhdGFiYXNlL1dlYkljb25EYXRhYmFzZVByb3h5Lm1lc3NhZ2VzLmluOiBSZW1vdmVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6dXNlSWNvbkxvYWRp
bmdDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpnZXRXZWJDb3JlU3RhdGlzdGljcyk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmg6CisKIDIwMTctMDctMTkgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0cyBub3QgdXBk
YXRlZCBmb3IgcHJvZ3JhbW1hdGljIHNjcm9sbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpp
bmRleCA4M2FkMGU4YTU3OC4uMTliNDJmOWRiYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1h
a2UKQEAgLTE0Miw4ICsxNDIsNiBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eSBcCiAgICAgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50IFwKICAg
ICBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIgXAotICAgIFdlYkljb25EYXRhYmFzZSBcCi0gICAg
V2ViSWNvbkRhdGFiYXNlUHJveHkgXAogICAgIFdlYkluc3BlY3RvciBcCiAgICAgV2ViSW5zcGVj
dG9ySW50ZXJydXB0RGlzcGF0Y2hlciBcCiAgICAgV2ViSW5zcGVjdG9yUHJveHkgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cAppbmRleCA0MzU4ZTc2NTNkNi4uMzE0NzFiYjllZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC04OSw3ICs4
OSw2IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5j
b2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHNob3VsZFVzZUZvbnRTbW9vdGhp
bmc7CiAgICAgZW5jb2RlciA8PCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDsKICAgICBl
bmNvZGVyIDw8IGZvbnRXaGl0ZWxpc3Q7Ci0gICAgZW5jb2RlciA8PCBpY29uRGF0YWJhc2VFbmFi
bGVkOwogICAgIGVuY29kZXIgPDwgdGVybWluYXRpb25UaW1lb3V0OwogICAgIGVuY29kZXIgPDwg
bGFuZ3VhZ2VzOwogICAgIGVuY29kZXIgPDwgdGV4dENoZWNrZXJTdGF0ZTsKQEAgLTIzMiw4ICsy
MzEsNiBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIsIFdlYlByb2Nlc3NDcmVhdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmZvbnRXaGl0ZWxpc3QpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmljb25E
YXRhYmFzZUVuYWJsZWQpKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYXJhbWV0ZXJzLnRlcm1pbmF0aW9uVGltZW91dCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMubGFuZ3VhZ2VzKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aAppbmRleCBjNWQyOTFiM2Y3Mi4uOWMxMThmZDNiMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTExNyw3ICsxMTcs
NiBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgYm9vbCBzaG91
bGRTdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxlciB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91
bGRVc2VGb250U21vb3RoaW5nIHsgdHJ1ZSB9OwogICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgaWNvbkRhdGFiYXNlRW5hYmxlZCB7IGZh
bHNlIH07CiAgICAgYm9vbCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkIHsgZmFsc2UgfTsKICAg
ICBib29sIG1lbW9yeUNhY2hlRGlzYWJsZWQgeyBmYWxzZSB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAppbmRleCAwNjVlZjgxMmNjYS4uYTUwMTliMjUy
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApAQCAt
NDAsNyArNDAsNiBAQAogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiV2ViQ2Vy
dGlmaWNhdGVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50
LmgiCi0jaW5jbHVkZSAiV2ViSWNvbkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bv
b2wuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CkBAIC00MTksOSArNDE4LDkgQEAgV0tHZW9sb2NhdGlvbk1hbmFnZXJSZWYgV0tDb250
ZXh0R2V0R2VvbG9jYXRpb25NYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQogICAgIHJl
dHVybiB0b0FQSSh0b0ltcGwoY29udGV4dFJlZiktPnN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk+KCkpOwogfQogCi1XS0ljb25EYXRhYmFzZVJlZiBXS0NvbnRleHRHZXRJY29u
RGF0YWJhc2UoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCitXS0ljb25EYXRhYmFzZVJlZiBXS0Nv
bnRleHRHZXRJY29uRGF0YWJhc2UoV0tDb250ZXh0UmVmKQogewotICAgIHJldHVybiB0b0FQSSh0
b0ltcGwoY29udGV4dFJlZiktPmljb25EYXRhYmFzZSgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAogV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIFdLQ29udGV4dEdldEtleVZhbHVlU3Rv
cmFnZU1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHQpCkBAIC00NTksOSArNDU4LDggQEAgdm9p
ZCBXS0NvbnRleHRTdG9wTWVtb3J5U2FtcGxlcihXS0NvbnRleHRSZWYgY29udGV4dFJlZikKICAg
ICB0b0ltcGwoY29udGV4dFJlZiktPnN0b3BNZW1vcnlTYW1wbGVyKCk7CiB9CiAKLXZvaWQgV0tD
b250ZXh0U2V0SWNvbkRhdGFiYXNlUGF0aChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tTdHJp
bmdSZWYgaWNvbkRhdGFiYXNlUGF0aCkKK3ZvaWQgV0tDb250ZXh0U2V0SWNvbkRhdGFiYXNlUGF0
aChXS0NvbnRleHRSZWYsIFdLU3RyaW5nUmVmKQogewotICAgIHRvSW1wbChjb250ZXh0UmVmKS0+
c2V0SWNvbkRhdGFiYXNlUGF0aCh0b0ltcGwoaWNvbkRhdGFiYXNlUGF0aCktPnN0cmluZygpKTsK
IH0KIAogdm9pZCBXS0NvbnRleHRBbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3Qo
V0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLQ2VydGlmaWNhdGVJbmZvUmVmIGNlcnRpZmljYXRl
UmVmLCBXS1N0cmluZ1JlZiBob3N0UmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tJY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tJY29uRGF0YWJhc2UuY3BwCmluZGV4IDAxNmZkYzJkZDE1Li4xZjEyNzQwYWQyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tJY29uRGF0YWJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLSWNvbkRhdGFiYXNlLmNw
cApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkFQSURhdGEuaCIKICNpbmNsdWRlICJXS0FQ
SUNhc3QuaCIKICNpbmNsdWRlICJXZWJJY29uRGF0YWJhc2UuaCIKLSNpbmNsdWRlICJXZWJJY29u
RGF0YWJhc2VDbGllbnQuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApAQCAtMzgsNTkg
KzM3LDQ4IEBAIFdLVHlwZUlEIFdLSWNvbkRhdGFiYXNlR2V0VHlwZUlEKCkKICAgICByZXR1cm4g
dG9BUEkoV2ViSWNvbkRhdGFiYXNlOjpBUElUeXBlKTsKIH0KIAotdm9pZCBXS0ljb25EYXRhYmFz
ZVNldEljb25EYXRhYmFzZUNsaWVudChXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2VSZWYs
IGNvbnN0IFdLSWNvbkRhdGFiYXNlQ2xpZW50QmFzZSogd2tDbGllbnQpCit2b2lkIFdLSWNvbkRh
dGFiYXNlU2V0SWNvbkRhdGFiYXNlQ2xpZW50KFdLSWNvbkRhdGFiYXNlUmVmLCBjb25zdCBXS0lj
b25EYXRhYmFzZUNsaWVudEJhc2UqKQogewotICAgIHRvSW1wbChpY29uRGF0YWJhc2VSZWYpLT5z
ZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJJY29uRGF0YWJhc2VDbGllbnQ+KHdrQ2xpZW50
KSk7CiB9CiAKLXZvaWQgV0tJY29uRGF0YWJhc2VSZXRhaW5JY29uRm9yVVJMKFdLSWNvbkRhdGFi
YXNlUmVmIGljb25EYXRhYmFzZVJlZiwgV0tVUkxSZWYgcGFnZVVSTFJlZikKK3ZvaWQgV0tJY29u
RGF0YWJhc2VSZXRhaW5JY29uRm9yVVJMKFdLSWNvbkRhdGFiYXNlUmVmLCBXS1VSTFJlZikKIHsK
LSAgICB0b0ltcGwoaWNvbkRhdGFiYXNlUmVmKS0+cmV0YWluSWNvbkZvclBhZ2VVUkwodG9XVEZT
dHJpbmcocGFnZVVSTFJlZikpOwogfQogCi12b2lkIFdLSWNvbkRhdGFiYXNlUmVsZWFzZUljb25G
b3JVUkwoV0tJY29uRGF0YWJhc2VSZWYgaWNvbkRhdGFiYXNlUmVmLCBXS1VSTFJlZiBwYWdlVVJM
UmVmKQordm9pZCBXS0ljb25EYXRhYmFzZVJlbGVhc2VJY29uRm9yVVJMKFdLSWNvbkRhdGFiYXNl
UmVmLCBXS1VSTFJlZikKIHsKLSAgICB0b0ltcGwoaWNvbkRhdGFiYXNlUmVmKS0+cmVsZWFzZUlj
b25Gb3JQYWdlVVJMKHRvV1RGU3RyaW5nKHBhZ2VVUkxSZWYpKTsKIH0KIAotdm9pZCBXS0ljb25E
YXRhYmFzZVNldEljb25EYXRhRm9ySWNvblVSTChXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJh
c2VSZWYsIFdLRGF0YVJlZiBpY29uRGF0YVJlZiwgV0tVUkxSZWYgaWNvblVSTFJlZikKK3ZvaWQg
V0tJY29uRGF0YWJhc2VTZXRJY29uRGF0YUZvckljb25VUkwoV0tJY29uRGF0YWJhc2VSZWYsIFdL
RGF0YVJlZiwgV0tVUkxSZWYpCiB7Ci0gICAgdG9JbXBsKGljb25EYXRhYmFzZVJlZiktPnNldElj
b25EYXRhRm9ySWNvblVSTCh0b0ltcGwoaWNvbkRhdGFSZWYpLT5kYXRhUmVmZXJlbmNlKCksIHRv
V1RGU3RyaW5nKGljb25VUkxSZWYpKTsKIH0KIAotdm9pZCBXS0ljb25EYXRhYmFzZVNldEljb25V
UkxGb3JQYWdlVVJMKFdLSWNvbkRhdGFiYXNlUmVmIGljb25EYXRhYmFzZVJlZiwgV0tVUkxSZWYg
aWNvblVSTFJlZiwgV0tVUkxSZWYgcGFnZVVSTFJlZikKK3ZvaWQgV0tJY29uRGF0YWJhc2VTZXRJ
Y29uVVJMRm9yUGFnZVVSTChXS0ljb25EYXRhYmFzZVJlZiwgV0tVUkxSZWYsIFdLVVJMUmVmKQog
ewotICAgIHRvSW1wbChpY29uRGF0YWJhc2VSZWYpLT5zZXRJY29uVVJMRm9yUGFnZVVSTCh0b1dU
RlN0cmluZyhpY29uVVJMUmVmKSwgdG9XVEZTdHJpbmcocGFnZVVSTFJlZikpOwogfQogCi1XS1VS
TFJlZiBXS0ljb25EYXRhYmFzZUNvcHlJY29uVVJMRm9yUGFnZVVSTChXS0ljb25EYXRhYmFzZVJl
ZiBpY29uRGF0YWJhc2VSZWYsIFdLVVJMUmVmIHBhZ2VVUkxSZWYpCitXS1VSTFJlZiBXS0ljb25E
YXRhYmFzZUNvcHlJY29uVVJMRm9yUGFnZVVSTChXS0ljb25EYXRhYmFzZVJlZiwgV0tVUkxSZWYp
CiB7Ci0gICAgU3RyaW5nIGljb25VUkxTdHJpbmc7Ci0gICAgdG9JbXBsKGljb25EYXRhYmFzZVJl
ZiktPnN5bmNocm9ub3VzSWNvblVSTEZvclBhZ2VVUkwodG9XVEZTdHJpbmcocGFnZVVSTFJlZiks
IGljb25VUkxTdHJpbmcpOwotICAgIHJldHVybiB0b0NvcGllZFVSTEFQSShpY29uVVJMU3RyaW5n
KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotV0tEYXRhUmVmIFdLSWNvbkRhdGFiYXNlQ29w
eUljb25EYXRhRm9yUGFnZVVSTChXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2VSZWYsIFdL
VVJMUmVmIHBhZ2VVUkwpCitXS0RhdGFSZWYgV0tJY29uRGF0YWJhc2VDb3B5SWNvbkRhdGFGb3JQ
YWdlVVJMKFdLSWNvbkRhdGFiYXNlUmVmLCBXS1VSTFJlZikKIHsKLSAgICByZXR1cm4gdG9BUEko
dG9JbXBsKGljb25EYXRhYmFzZVJlZiktPmljb25EYXRhRm9yUGFnZVVSTCh0b1dURlN0cmluZyhw
YWdlVVJMKSkubGVha1JlZigpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBXS0lj
b25EYXRhYmFzZUVuYWJsZURhdGFiYXNlQ2xlYW51cChXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0
YWJhc2VSZWYpCit2b2lkIFdLSWNvbkRhdGFiYXNlRW5hYmxlRGF0YWJhc2VDbGVhbnVwKFdLSWNv
bkRhdGFiYXNlUmVmKQogewotICAgIHRvSW1wbChpY29uRGF0YWJhc2VSZWYpLT5lbmFibGVEYXRh
YmFzZUNsZWFudXAoKTsKIH0KIAotdm9pZCBXS0ljb25EYXRhYmFzZVJlbW92ZUFsbEljb25zKFdL
SWNvbkRhdGFiYXNlUmVmIGljb25EYXRhYmFzZVJlZikKK3ZvaWQgV0tJY29uRGF0YWJhc2VSZW1v
dmVBbGxJY29ucyhXS0ljb25EYXRhYmFzZVJlZikKIHsKLSAgICB0b0ltcGwoaWNvbkRhdGFiYXNl
UmVmKS0+cmVtb3ZlQWxsSWNvbnMoKTsKIH0KIAotdm9pZCBXS0ljb25EYXRhYmFzZUNoZWNrSW50
ZWdyaXR5QmVmb3JlT3BlbmluZyhXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2VSZWYpCit2
b2lkIFdLSWNvbkRhdGFiYXNlQ2hlY2tJbnRlZ3JpdHlCZWZvcmVPcGVuaW5nKFdLSWNvbkRhdGFi
YXNlUmVmKQogewotICAgIHRvSW1wbChpY29uRGF0YWJhc2VSZWYpLT5jaGVja0ludGVncml0eUJl
Zm9yZU9wZW5pbmcoKTsKIH0KIAotdm9pZCBXS0ljb25EYXRhYmFzZUNsb3NlKFdLSWNvbkRhdGFi
YXNlUmVmIGljb25EYXRhYmFzZVJlZikKK3ZvaWQgV0tJY29uRGF0YWJhc2VDbG9zZShXS0ljb25E
YXRhYmFzZVJlZikKIHsKLSAgICB0b0ltcGwoaWNvbkRhdGFiYXNlUmVmKS0+Y2xvc2UoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL2NnL1dLSWNvbkRhdGFi
YXNlQ0cuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvY2cvV0tJY29uRGF0YWJh
c2VDRy5jcHAKaW5kZXggYTI3OWFmNjI1NWIuLjRiMDQwZGJjMmI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9jZy9XS0ljb25EYXRhYmFzZUNHLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9jZy9XS0ljb25EYXRhYmFzZUNHLmNwcApAQCAt
MjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldLSWNvbkRhdGFi
YXNlQ0cuaCIKIAotI2luY2x1ZGUgIldlYkljb25EYXRhYmFzZS5oIgogI2luY2x1ZGUgIldLQVBJ
Q2FzdC5oIgogI2luY2x1ZGUgIldLU2hhcmVkQVBJQ2FzdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
SW1hZ2UuaD4KQEAgLTM0LDI1ICszMywxMiBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1DR0ltYWdlUmVmIFdLSWNvbkRhdGFiYXNlVHJ5R2V0
Q0dJbWFnZUZvclVSTChXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2VSZWYsIFdLVVJMUmVm
IHVybFJlZiwgV0tTaXplIHNpemUpCitDR0ltYWdlUmVmIFdLSWNvbkRhdGFiYXNlVHJ5R2V0Q0dJ
bWFnZUZvclVSTChXS0ljb25EYXRhYmFzZVJlZiwgV0tVUkxSZWYsIFdLU2l6ZSkKIHsKLSAgICBJ
bWFnZSogaW1hZ2UgPSB0b0ltcGwoaWNvbkRhdGFiYXNlUmVmKS0+aW1hZ2VGb3JQYWdlVVJMKHRv
V1RGU3RyaW5nKHVybFJlZikpOwotICAgIHJldHVybiBpbWFnZSA/IGltYWdlLT5uYXRpdmVJbWFn
ZU9mU2l6ZShJbnRTaXplKHN0YXRpY19jYXN0PGludD4oc2l6ZS53aWR0aCksIHN0YXRpY19jYXN0
PGludD4oc2l6ZS5oZWlnaHQpKSkuZ2V0KCkgOiBudWxscHRyOworICAgIHJldHVybiBudWxscHRy
OwogfQogCi1DRkFycmF5UmVmIFdLSWNvbkRhdGFiYXNlVHJ5Q29weUNHSW1hZ2VBcnJheUZvclVS
TChXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2VSZWYsIFdLVVJMUmVmIHVybFJlZikKK0NG
QXJyYXlSZWYgV0tJY29uRGF0YWJhc2VUcnlDb3B5Q0dJbWFnZUFycmF5Rm9yVVJMKFdLSWNvbkRh
dGFiYXNlUmVmLCBXS1VSTFJlZikKIHsKLSAgICBJbWFnZSogaW1hZ2UgPSB0b0ltcGwoaWNvbkRh
dGFiYXNlUmVmKS0+aW1hZ2VGb3JQYWdlVVJMKHRvV1RGU3RyaW5nKHVybFJlZikpOwotICAgIGlm
ICghaW1hZ2UpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgYXV0byBuYXRpdmVJbWFn
ZXMgPSBpbWFnZS0+ZnJhbWVzTmF0aXZlSW1hZ2VzKCk7Ci0gICAgaWYgKCFuYXRpdmVJbWFnZXMu
c2l6ZSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKLSAgICBDRk11dGFibGVBcnJh
eVJlZiBhcnJheSA9IENGQXJyYXlDcmVhdGVNdXRhYmxlKG51bGxwdHIsIG5hdGl2ZUltYWdlcy5z
aXplKCksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwotICAgIGZvciAoYXV0byBuYXRpdmVJbWFn
ZSA6IG5hdGl2ZUltYWdlcykKLSAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5LCBuYXRp
dmVJbWFnZS5nZXQoKSk7Ci0gICAgCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENGQXJyYXlSZWY+
KGFycmF5KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCmluZGV4IGQ1ZDYwYmRhNWFk
Li5lNTRlMDJhNDZiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC01MDUsMTEgKzUwNSw2IEBAIGJvb2wgV2ViUHJv
Y2Vzc1Bvb2w6OmlzTmV0d29ya0NhY2hlRW5hYmxlZCgpCiAjZW5kaWYKIH0KIAotU3RyaW5nIFdl
YlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1bHRJY29uRGF0YWJhc2VQYXRoKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gIiI7Ci19Ci0KIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6Om9taXRQREZTdXBwb3J0
KCkKIHsKICAgICAvLyBTaW5jZSB0aGlzIGlzIGEgInNlY3JldCBkZWZhdWx0IiB3ZSBkb24ndCBi
b3RoZXIgcmVnaXN0ZXJpbmcgaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJJY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSWNvbkRh
dGFiYXNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjVmZDJlMzc2N2UuLjAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJJY29uRGF0YWJhc2UuaCIKLQotI2luY2x1ZGUgIkFQ
SUljb25EYXRhYmFzZUNsaWVudC5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJX
ZWJJY29uRGF0YWJhc2VNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYkljb25EYXRhYmFzZVByb3h5
TWVzc2FnZXMuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvRmlsZVN5c3RlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSWNvbkRhdGFiYXNlLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9JbWFnZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+
Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotUmVm
PFdlYkljb25EYXRhYmFzZT4gV2ViSWNvbkRhdGFiYXNlOjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wq
IHByb2Nlc3NQb29sKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkljb25EYXRhYmFz
ZSgqcHJvY2Vzc1Bvb2wpKTsKLX0KLQotV2ViSWNvbkRhdGFiYXNlOjp+V2ViSWNvbkRhdGFiYXNl
KCkKLXsKLX0KLQotV2ViSWNvbkRhdGFiYXNlOjpXZWJJY29uRGF0YWJhc2UoV2ViUHJvY2Vzc1Bv
b2wmIHByb2Nlc3NQb29sKQotICAgIDogbV9wcm9jZXNzUG9vbCgmcHJvY2Vzc1Bvb2wpCi0gICAg
LCBtX3VybEltcG9ydENvbXBsZXRlZChmYWxzZSkKLSAgICAsIG1fZGF0YWJhc2VDbGVhbnVwRGlz
YWJsZWQoZmFsc2UpCi0gICAgLCBtX3Nob3VsZERlcmVmV2hlbkFwcHJvcHJpYXRlKGZhbHNlKQot
ICAgICwgbV9jbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6Okljb25EYXRhYmFzZUNsaWVudD4o
KSkKLXsKLSAgICBtX3Byb2Nlc3NQb29sLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
Ykljb25EYXRhYmFzZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7Ci19Ci0KLXZvaWQg
V2ViSWNvbkRhdGFiYXNlOjppbnZhbGlkYXRlKCkKLXsKLSAgICBzZXRHbG9iYWxJY29uRGF0YWJh
c2UobnVsbHB0cik7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpzZXREYXRhYmFzZVBhdGgo
Y29uc3QgU3RyaW5nJiBwYXRoKQotewotICAgIGlmIChpc09wZW4oKSkgewotICAgICAgICBMT0df
RVJST1IoIkljb24gZGF0YWJhc2UgYWxyZWFkeSBoYXMgYSBwYXRoIGFuZCBpcyBhbHJlYWR5IG9w
ZW4uIFdlIGRvbid0IGN1cnJlbnRseSBzdXBwb3J0IGNoYW5naW5nIGl0cyBwYXRoIGFuZCByZW9w
ZW5pbmcuIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX2ljb25EYXRhYmFzZUlt
cGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEljb25EYXRhYmFzZT4oKTsKLSAgICBtX2ljb25EYXRhYmFz
ZUltcGwtPnNldENsaWVudCh0aGlzKTsKLSAgICBJY29uRGF0YWJhc2U6OmRlbGF5RGF0YWJhc2VD
bGVhbnVwKCk7Ci0gICAgbV9kYXRhYmFzZUNsZWFudXBEaXNhYmxlZCA9IHRydWU7Ci0gICAgbV9p
Y29uRGF0YWJhc2VJbXBsLT5zZXRFbmFibGVkKHRydWUpOwotCi0gICAgLy8gRklYTUU6IFdlYklj
b25EYXRhYmFzZXMgYXJlIHBlci1Qcm9jZXNzUG9vbCBidXQgUHJvY2Vzc1Bvb2xzJ3MgZG9uJ3Qg
aGF2ZSB0aGVpciBvd24gbm90aW9uIG9mIHRoZSBjdXJyZW50IHByaXZhdGUgYnJvd3Npbmcgc2V0
dGluZy4KLSAgICAvLyBBcyB3ZSBjbGVhbiB1cCBwcml2YXRlIGJyb3dzaW5nIHRocm91Z2hvdXQg
dGhlIHN0YWNrIHdlIG5lZWQgdG8gY2xlYW4gaXQgdXAgaGVyZS4KLSAgICBtX2ljb25EYXRhYmFz
ZUltcGwtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoV2ViUHJlZmVyZW5jZXM6OmFueVBhZ2Vz
QXJlVXNpbmdQcml2YXRlQnJvd3NpbmcoKSk7Ci0KLSAgICBpZiAoIW1faWNvbkRhdGFiYXNlSW1w
bC0+b3BlbihkaXJlY3RvcnlOYW1lKHBhdGgpLCBwYXRoR2V0RmlsZU5hbWUocGF0aCkpKSB7Ci0g
ICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIG9wZW4gV2ViS2l0MiBpY29uIGRhdGFiYXNlIG9u
IGRpc2siKTsKLSAgICAgICAgbV9pY29uRGF0YWJhc2VJbXBsID0gbnVsbHB0cjsKLSAgICAgICAg
c2V0R2xvYmFsSWNvbkRhdGFiYXNlKG51bGxwdHIpOwotICAgICAgICBJY29uRGF0YWJhc2U6OmFs
bG93RGF0YWJhc2VDbGVhbnVwKCk7Ci0gICAgICAgIG1fZGF0YWJhc2VDbGVhbnVwRGlzYWJsZWQg
PSBmYWxzZTsKLSAgICB9Ci0gICAgc2V0R2xvYmFsSWNvbkRhdGFiYXNlKG1faWNvbkRhdGFiYXNl
SW1wbC5nZXQoKSk7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjplbmFibGVEYXRhYmFzZUNs
ZWFudXAoKQotewotICAgIGlmICghbV9pY29uRGF0YWJhc2VJbXBsKSB7Ci0gICAgICAgIExPR19F
UlJPUigiQ2Fubm90IGVuYWJsZWQgSWNvbiBEYXRhYmFzZSBjbGVhbnVwIC0gaXQgaGFzbid0IGJl
ZW4gb3BlbmVkIHlldC4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghbV9k
YXRhYmFzZUNsZWFudXBEaXNhYmxlZCkgewotICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8g
ZW5hYmxlIGRhdGFiYXNlIGNsZWFudXAsIGJ1dCBpdCdzIGFscmVhZHkgZW5hYmxlZC4iKTsKLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBJY29uRGF0YWJhc2U6OmFsbG93RGF0YWJhc2VDbGVhbnVwKCk7Ci0gICAgbV9kYXRhYmFzZUNs
ZWFudXBEaXNhYmxlZCA9IGZhbHNlOwotfQotCi12b2lkIFdlYkljb25EYXRhYmFzZTo6cmV0YWlu
SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMKQotewotICAgIGlmIChtX2ljb25E
YXRhYmFzZUltcGwpCi0gICAgICAgIG1faWNvbkRhdGFiYXNlSW1wbC0+cmV0YWluSWNvbkZvclBh
Z2VVUkwocGFnZVVSTCk7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpyZWxlYXNlSWNvbkZv
clBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMKQotewotICAgIGlmIChtX2ljb25EYXRhYmFz
ZUltcGwpCi0gICAgICAgIG1faWNvbkRhdGFiYXNlSW1wbC0+cmVsZWFzZUljb25Gb3JQYWdlVVJM
KHBhZ2VVUkwpOwotfQotCi12b2lkIFdlYkljb25EYXRhYmFzZTo6c2V0SWNvblVSTEZvclBhZ2VV
UkwoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkwpCi17Ci0gICAg
TE9HKEljb25EYXRhYmFzZSwgIldLMiBVSVByb2Nlc3Mgc2V0dGluZyBpY29uIFVSTCAlcyBmb3Ig
cGFnZSBVUkwgJXMiLCBpY29uVVJMLmFzY2lpKCkuZGF0YSgpLCBwYWdlVVJMLmFzY2lpKCkuZGF0
YSgpKTsKLSAgICBpZiAobV9pY29uRGF0YWJhc2VJbXBsKQotICAgICAgICBtX2ljb25EYXRhYmFz
ZUltcGwtPnNldEljb25VUkxGb3JQYWdlVVJMKGljb25VUkwsIHBhZ2VVUkwpOwotfQotCi12b2lk
IFdlYkljb25EYXRhYmFzZTo6c2V0SWNvbkRhdGFGb3JJY29uVVJMKGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgaWNvbkRhdGEsIGNvbnN0IFN0cmluZyYgaWNvblVSTCkKLXsKLSAgICBMT0coSWNv
bkRhdGFiYXNlLCAiV0syIFVJUHJvY2VzcyBzZXR0aW5nIGljb24gZGF0YSAoJWkgYnl0ZXMpIGZv
ciBwYWdlIFVSTCAlcyIsIChpbnQpaWNvbkRhdGEuc2l6ZSgpLCBpY29uVVJMLmFzY2lpKCkuZGF0
YSgpKTsKLSAgICBpZiAoIW1faWNvbkRhdGFiYXNlSW1wbCkKLSAgICAgICAgcmV0dXJuOwotICAg
IG1faWNvbkRhdGFiYXNlSW1wbC0+c2V0SWNvbkRhdGFGb3JJY29uVVJMKFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGljb25EYXRhLmRhdGEoKSwgaWNvbkRhdGEuc2l6ZSgpKS5wdHIoKSwgaWNvblVSTCk7
Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c0ljb25EYXRhRm9yUGFnZVVS
TChjb25zdCBTdHJpbmcmLCBJUEM6OkRhdGFSZWZlcmVuY2UmIGljb25EYXRhKQotewotICAgIGlj
b25EYXRhID0gSVBDOjpEYXRhUmVmZXJlbmNlKCk7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNl
OjpzeW5jaHJvbm91c0ljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgU3Ry
aW5nJiBpY29uVVJMKQotewotICAgIGlmICghbV9pY29uRGF0YWJhc2VJbXBsKSB7Ci0gICAgICAg
IGljb25VUkwgPSBTdHJpbmcoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpY29uVVJM
ID0gbV9pY29uRGF0YWJhc2VJbXBsLT5zeW5jaHJvbm91c0ljb25VUkxGb3JQYWdlVVJMKHBhZ2VV
UkwpOwotfQotCi12b2lkIFdlYkljb25EYXRhYmFzZTo6c3luY2hyb25vdXNJY29uRGF0YUtub3du
Rm9ySWNvblVSTChjb25zdCBTdHJpbmcmLCBib29sJiBpY29uRGF0YUtub3duKSBjb25zdAotewot
ICAgIGljb25EYXRhS25vd24gPSBmYWxzZTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2U6OnN5
bmNocm9ub3VzTG9hZERlY2lzaW9uRm9ySWNvblVSTChjb25zdCBTdHJpbmcmLCBpbnQmIGxvYWRE
ZWNpc2lvbikgY29uc3QKLXsKLSAgICBsb2FkRGVjaXNpb24gPSBzdGF0aWNfY2FzdDxpbnQ+KElj
b25Mb2FkTm8pOwotfQotCi12b2lkIFdlYkljb25EYXRhYmFzZTo6Z2V0TG9hZERlY2lzaW9uRm9y
SWNvblVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi17Ci0g
ICAgTE9HKEljb25EYXRhYmFzZSwgIldLMiBVSVByb2Nlc3MgZ2V0dGluZyBsb2FkIGRlY2lzaW9u
IGZvciBpY29uIFVSTCAlcyB3aXRoIGNhbGxiYWNrIElEICVsbGkiLCBpY29uVVJMLmFzY2lpKCku
ZGF0YSgpLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KGNhbGxiYWNrSUQpKTsKLQotICAgIGlmICgh
bV9wcm9jZXNzUG9vbCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX2ljb25EYXRhYmFz
ZUltcGwgfHwgIW1faWNvbkRhdGFiYXNlSW1wbC0+aXNPcGVuKCkgfHwgaWNvblVSTC5pc0VtcHR5
KCkpIHsKLSAgICAgICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3MpOiA8cmRhcjovL3Byb2Js
ZW0vMTIyNDAyMjM+IFdlIG5lZWQgdG8ga25vdyB3aGljaCBjb25uZWN0aW9uIHRvIHNlbmQgdGhp
cyBtZXNzYWdlIHRvLgotICAgICAgICBtX3Byb2Nlc3NQb29sLT5zZW5kVG9BbGxQcm9jZXNzZXMo
TWVzc2FnZXM6OldlYkljb25EYXRhYmFzZVByb3h5OjpSZWNlaXZlZEljb25Mb2FkRGVjaXNpb24o
c3RhdGljX2Nhc3Q8aW50PihJY29uTG9hZE5vKSwgY2FsbGJhY2tJRCkpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIAotICAgIC8vIElmIHRoZSBkZWNpc2lvbiBoYXNuJ3QgYmVlbiByZWFk
IGZyb20gZGlzayB5ZXQsIHNldCB0aGlzIHVybCBhbmQgY2FsbGJhY2sgSUQgYXNpZGUgdG8gYmUg
bm90aWZlZCBsYXRlcgotICAgIEljb25Mb2FkRGVjaXNpb24gZGVjaXNpb24gPSBtX2ljb25EYXRh
YmFzZUltcGwtPnN5bmNocm9ub3VzTG9hZERlY2lzaW9uRm9ySWNvblVSTChpY29uVVJMLCAwKTsK
LSAgICBpZiAoZGVjaXNpb24gPT0gSWNvbkxvYWRVbmtub3duKSB7Ci0gICAgICAgIC8vIFdlIHNo
b3VsZCBuZXZlciBnZXQgYW4gdW5rbm93biBsb2FkIGRlY2lzaW9uIGFmdGVyIHRoZSBVUkwgaW1w
b3J0IGhhcyBjb21wbGV0ZWQuCi0gICAgICAgIEFTU0VSVCghbV91cmxJbXBvcnRDb21wbGV0ZWQp
OwotICAgICAgICAKLSAgICAgICAgbV9wZW5kaW5nTG9hZERlY2lzaW9uVVJMTWFwLnNldChjYWxs
YmFja0lELCBpY29uVVJMKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIEZJWE1F
IChNdWx0aS1XZWJQcm9jZXNzKTogPHJkYXI6Ly9wcm9ibGVtLzEyMjQwMjIzPiBXZSBuZWVkIHRv
IGtub3cgd2hpY2ggY29ubmVjdGlvbiB0byBzZW5kIHRoaXMgbWVzc2FnZSB0by4KLSAgICBtX3By
b2Nlc3NQb29sLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYkljb25EYXRhYmFzZVBy
b3h5OjpSZWNlaXZlZEljb25Mb2FkRGVjaXNpb24oKGludClkZWNpc2lvbiwgY2FsbGJhY2tJRCkp
OwotfQotCi12b2lkIFdlYkljb25EYXRhYmFzZTo6ZGlkUmVjZWl2ZUljb25Gb3JQYWdlVVJMKGNv
bnN0IFN0cmluZyYgcGFnZVVSTCkKLXsKLSAgICBub3RpZnlJY29uRGF0YVJlYWR5Rm9yUGFnZVVS
TChwYWdlVVJMKTsKLX0KLQotSW1hZ2UqIFdlYkljb25EYXRhYmFzZTo6aW1hZ2VGb3JQYWdlVVJM
KGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgY29uc3QgSW50U2l6ZSYgaWNvblNpemUpCi17Ci0gICAg
aWYgKCFtX3Byb2Nlc3NQb29sIHx8ICFtX2ljb25EYXRhYmFzZUltcGwgfHwgIW1faWNvbkRhdGFi
YXNlSW1wbC0+aXNPcGVuKCkgfHwgcGFnZVVSTC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgLy8gVGhlIFdlYkNvcmUgSWNvbkRhdGFiYXNlIGlnbm9yZXMgdGhlIHBh
c3NlZCBpbiBzaXplIHBhcmFtZXRlci4KLSAgICAvLyBJZiB0aGF0IGNoYW5nZXMgd2UnbGwgbmVl
ZCB0byByZXRoaW5rIGhvdyB0aGlzIEFQSSBpcyBleHBvc2VkLgotICAgIHJldHVybiBtX2ljb25E
YXRhYmFzZUltcGwtPnN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwocGFnZVVSTCwgaWNvblNpemUp
OwotfQotCi1OYXRpdmVJbWFnZVB0ciBXZWJJY29uRGF0YWJhc2U6Om5hdGl2ZUltYWdlRm9yUGFn
ZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIGNvbnN0IEludFNpemUmIGljb25TaXplKQotewot
ICAgIGlmICghbV9wcm9jZXNzUG9vbCB8fCAhbV9pY29uRGF0YWJhc2VJbXBsIHx8ICFtX2ljb25E
YXRhYmFzZUltcGwtPmlzT3BlbigpIHx8IHBhZ2VVUkwuaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBtX2ljb25EYXRhYmFzZUltcGwtPnN5bmNocm9ub3Vz
TmF0aXZlSWNvbkZvclBhZ2VVUkwocGFnZVVSTCwgaWNvblNpemUpOwotfQotCi1ib29sIFdlYklj
b25EYXRhYmFzZTo6aXNPcGVuKCkKLXsKLSAgICByZXR1cm4gbV9pY29uRGF0YWJhc2VJbXBsICYm
IG1faWNvbkRhdGFiYXNlSW1wbC0+aXNPcGVuKCk7Ci19Ci0KLWJvb2wgV2ViSWNvbkRhdGFiYXNl
Ojppc1VybEltcG9ydENvbXBsZXRlZCgpCi17Ci0gICAgcmV0dXJuIG1fdXJsSW1wb3J0Q29tcGxl
dGVkOwotfQotCi12b2lkIFdlYkljb25EYXRhYmFzZTo6cmVtb3ZlQWxsSWNvbnMoKQotewotICAg
IG1faWNvbkRhdGFiYXNlSW1wbC0+cmVtb3ZlQWxsSWNvbnMoKTsKLX0KLQotdm9pZCBXZWJJY29u
RGF0YWJhc2U6OmNoZWNrSW50ZWdyaXR5QmVmb3JlT3BlbmluZygpCi17Ci0gICAgSWNvbkRhdGFi
YXNlOjpjaGVja0ludGVncml0eUJlZm9yZU9wZW5pbmcoKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0
YWJhc2U6OmNsb3NlKCkKLXsKLSAgICBpZiAobV9pY29uRGF0YWJhc2VJbXBsKQotICAgICAgICBt
X2ljb25EYXRhYmFzZUltcGwtPmNsb3NlKCk7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpz
ZXRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SWNvbkRhdGFiYXNlQ2xpZW50PiYmIGNsaWVu
dCkKLXsKLSAgICBpZiAoIWNsaWVudCkKLSAgICAgICAgbV9jbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEFQSTo6SWNvbkRhdGFiYXNlQ2xpZW50PigpOwotICAgIGVsc2UKLSAgICAgICAgbV9jbGll
bnQgPSBXVEZNb3ZlKGNsaWVudCk7Ci19Ci0KLS8vIFdlYkNvcmU6Okljb25EYXRhYmFzZUNsaWVu
dAotCi12b2lkIFdlYkljb25EYXRhYmFzZTo6ZGlkSW1wb3J0SWNvblVSTEZvclBhZ2VVUkwoY29u
c3QgU3RyaW5nJiBwYWdlVVJMKQotewotICAgIGRpZENoYW5nZUljb25Gb3JQYWdlVVJMKHBhZ2VV
UkwpOwotfQotCi12b2lkIFdlYkljb25EYXRhYmFzZTo6ZGlkSW1wb3J0SWNvbkRhdGFGb3JQYWdl
VVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCkKLXsKLSAgICBub3RpZnlJY29uRGF0YVJlYWR5Rm9y
UGFnZVVSTChwYWdlVVJMKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2U6OmRpZENoYW5nZUlj
b25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCkKLXsKLSAgICBtX2NsaWVudC0+ZGlk
Q2hhbmdlSWNvbkZvclBhZ2VVUkwoKnRoaXMsIHBhZ2VVUkwpOwotfQotCi12b2lkIFdlYkljb25E
YXRhYmFzZTo6ZGlkUmVtb3ZlQWxsSWNvbnMoKQotewotICAgIG1fY2xpZW50LT5kaWRSZW1vdmVB
bGxJY29ucygqdGhpcyk7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpkaWRGaW5pc2hVUkxJ
bXBvcnQoKQotewotICAgIGlmICghbV9wcm9jZXNzUG9vbCkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgQVNTRVJUKCFtX3VybEltcG9ydENvbXBsZXRlZCk7Ci0KLSAgICBMT0coSWNvbkRhdGFiYXNl
LCAiV0syIFVJUHJvY2VzcyBVUkwgaW1wb3J0IGNvbXBsZXRlLCBub3RpZnlpbmcgYWxsICVpIHBl
bmRpbmcgcGFnZSBVUkwgbG9hZCBkZWNpc2lvbnMiLCBtX3BlbmRpbmdMb2FkRGVjaXNpb25VUkxN
YXAuc2l6ZSgpKTsKLSAgICAKLSAgICBmb3IgKGF1dG8mIHNsb3QgOiBtX3BlbmRpbmdMb2FkRGVj
aXNpb25VUkxNYXApIHsKLSAgICAgICAgTE9HKEljb25EYXRhYmFzZSwgIldLMiBVSVByb2Nlc3Mg
cGVyZm9ybWluZyBkZWxheWVkIGNhbGxiYWNrIG9uIGNhbGxiYWNrIElEICVpIGZvciBwYWdlIHVy
bCAlcyIsIChpbnQpc2xvdC5rZXksIHNsb3QudmFsdWUuYXNjaWkoKS5kYXRhKCkpOwotICAgICAg
ICBJY29uTG9hZERlY2lzaW9uIGRlY2lzaW9uID0gbV9pY29uRGF0YWJhc2VJbXBsLT5zeW5jaHJv
bm91c0xvYWREZWNpc2lvbkZvckljb25VUkwoc2xvdC52YWx1ZSwgbnVsbHB0cik7Ci0KLSAgICAg
ICAgLy8gRGVjaXNpb25zIHNob3VsZCBuZXZlciBiZSB1bmtub3duIGFmdGVyIHRoZSBpbml0YWwg
aW1wb3J0IGlzIGNvbXBsZXRlLgotICAgICAgICBBU1NFUlQoZGVjaXNpb24gIT0gSWNvbkxvYWRV
bmtub3duKTsKLQotICAgICAgICAvLyBGSVhNRSAoTXVsdGktV2ViUHJvY2Vzcyk6IDxyZGFyOi8v
cHJvYmxlbS8xMjI0MDIyMz4gV2UgbmVlZCB0byBrbm93IHdoaWNoIGNvbm5lY3Rpb24gdG8gc2Vu
ZCB0aGlzIG1lc3NhZ2UgdG8uCi0gICAgICAgIG1fcHJvY2Vzc1Bvb2wtPnNlbmRUb0FsbFByb2Nl
c3NlcyhNZXNzYWdlczo6V2ViSWNvbkRhdGFiYXNlUHJveHk6OlJlY2VpdmVkSWNvbkxvYWREZWNp
c2lvbihzdGF0aWNfY2FzdDxpbnQ+KGRlY2lzaW9uKSwgc2xvdC5rZXkpKTsKLSAgICB9Ci0KLSAg
ICBtX3BlbmRpbmdMb2FkRGVjaXNpb25VUkxNYXAuY2xlYXIoKTsKLQotICAgIG1fdXJsSW1wb3J0
Q29tcGxldGVkID0gdHJ1ZTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2U6OmRpZENsb3NlKCkK
LXsKLSAgICBpZiAoIW1fc2hvdWxkRGVyZWZXaGVuQXBwcm9wcmlhdGUpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGRlcmVmKCk7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpkZXJlZldoZW5B
cHByb3ByaWF0ZSgpCi17Ci0gICAgaWYgKG1faWNvbkRhdGFiYXNlSW1wbCAmJiBtX2ljb25EYXRh
YmFzZUltcGwtPmlzT3BlbigpKSB7Ci0gICAgICAgIG1fc2hvdWxkRGVyZWZXaGVuQXBwcm9wcmlh
dGUgPSB0cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZGVyZWYoKTsKLX0KLQot
dm9pZCBXZWJJY29uRGF0YWJhc2U6Om5vdGlmeUljb25EYXRhUmVhZHlGb3JQYWdlVVJMKGNvbnN0
IFN0cmluZyYgcGFnZVVSTCkKLXsKLSAgICBtX2NsaWVudC0+aWNvbkRhdGFSZWFkeUZvclBhZ2VV
UkwoKnRoaXMsIHBhZ2VVUkwpOwotICAgIGRpZENoYW5nZUljb25Gb3JQYWdlVVJMKHBhZ2VVUkwp
OwotfQotCi12b2lkIFdlYkljb25EYXRhYmFzZTo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChi
b29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCi17Ci0gICAgaWYgKG1faWNvbkRhdGFiYXNlSW1w
bCkKLSAgICAgICAgbV9pY29uRGF0YWJhc2VJbXBsLT5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVk
KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpOwotfQotCi1SZWZQdHI8QVBJOjpEYXRhPiBXZWJJY29u
RGF0YWJhc2U6Omljb25EYXRhRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwpCi17Ci0g
ICAgYXV0byogaW1hZ2UgPSBpbWFnZUZvclBhZ2VVUkwocGFnZVVSTCk7Ci0gICAgaWYgKCFpbWFn
ZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1
ZmZlciA9IGltYWdlLT5kYXRhKCk7Ci0gICAgaWYgKCFzaGFyZWRCdWZmZXIpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotCi0gICAgLy8gQmFsYW5jZWQgYnkgZGVyZWYoKSBiZWxvdy4KLSAgICBz
aGFyZWRCdWZmZXItPnJlZigpOwotICAgIHJldHVybiBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRD
b3B5aW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KHNoYXJlZEJ1ZmZl
ci0+ZGF0YSgpKSwgc2hhcmVkQnVmZmVyLT5zaXplKCksCi0gICAgICAgIFtdKHVuc2lnbmVkIGNo
YXIqLCBjb25zdCB2b2lkKiB1bnR5cGVkU2hhcmVkQnVmZmVyKSB7Ci0gICAgICAgICAgICAvLyBC
YWxhbmNlZCBieSByZWYoKSBhYm92ZS4KLSAgICAgICAgICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1
ZmZlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KHVudHlwZWRTaGFyZWRCdWZmZXIpKS0+ZGVyZWYoKTsK
LSAgICAgICAgfSwgc2hhcmVkQnVmZmVyKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5oCmluZGV4IDg3MTNhOGJmZDUz
Li5iZWM5YmVhZjgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSWNv
bkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNl
LmgKQEAgLTIzLDEwMSArMjMsMTMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi0jaWZuZGVmIFdlYkljb25EYXRhYmFzZV9oCi0jZGVmaW5lIFdlYkljb25EYXRh
YmFzZV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgotI2luY2x1ZGUg
IkNvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJXZWJJY29uRGF0YWJhc2VDbGllbnQuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL0ljb25EYXRhYmFzZUNsaWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSW50
U2l6ZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2UuaD4KLQotbmFtZXNwYWNlIEFQ
SSB7Ci1jbGFzcyBEYXRhOwotY2xhc3MgSWNvbkRhdGFiYXNlQ2xpZW50OwotfQotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci1jbGFzcyBJY29uRGF0YWJhc2U7Ci1jbGFzcyBJbWFnZTsKLX0KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYlByb2Nlc3NQb29sOwotCi1jbGFzcyBXZWJJY29u
RGF0YWJhc2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpJY29u
RGF0YWJhc2U+LCBwcml2YXRlIFdlYkNvcmU6Okljb25EYXRhYmFzZUNsaWVudCwgcHJpdmF0ZSBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJJY29uRGF0
YWJhc2U+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCopOwotICAgIHZpcnR1YWwgfldlYkljb25EYXRh
YmFzZSgpOwotCi0gICAgdm9pZCBpbnZhbGlkYXRlKCk7Ci0gICAgdm9pZCBjbGVhclByb2Nlc3NQ
b29sKCkgeyBtX3Byb2Nlc3NQb29sID0gbnVsbHB0cjsgfQotICAgIHZvaWQgc2V0RGF0YWJhc2VQ
YXRoKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgZW5hYmxlRGF0YWJhc2VDbGVhbnVwKCk7Ci0K
LSAgICB2b2lkIHJldGFpbkljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQg
cmVsZWFzZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgc2V0SWNvblVS
TEZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRJ
Y29uRGF0YUZvckljb25VUkwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5n
Jik7Ci0KLSAgICB2b2lkIHN5bmNocm9ub3VzSWNvbkRhdGFGb3JQYWdlVVJMKGNvbnN0IFN0cmlu
ZyYsIElQQzo6RGF0YVJlZmVyZW5jZSYpOwotICAgIHZvaWQgc3luY2hyb25vdXNJY29uVVJMRm9y
UGFnZVVSTChjb25zdCBTdHJpbmcmLCBTdHJpbmcmKTsKLSAgICB2b2lkIHN5bmNocm9ub3VzSWNv
bkRhdGFLbm93bkZvckljb25VUkwoY29uc3QgU3RyaW5nJiwgYm9vbCYpIGNvbnN0OwotICAgIHZv
aWQgc3luY2hyb25vdXNMb2FkRGVjaXNpb25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYsIGludCYp
IGNvbnN0OwotCi0gICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29uVVJMKGNvbnN0IFN0cmlu
ZyYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZGlkUmVjZWl2ZUljb25Gb3JQYWdl
VVJMKGNvbnN0IFN0cmluZyYpOwotCi0gICAgV2ViQ29yZTo6SW1hZ2UqIGltYWdlRm9yUGFnZVVS
TChjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBpY29uU2l6ZSA9IFdlYkNv
cmU6OkludFNpemUoMzIsIDMyKSk7Ci0gICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2VGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGlj
b25TaXplID0gV2ViQ29yZTo6SW50U2l6ZSgzMiwgMzIpKTsKLSAgICBSZWZQdHI8QVBJOjpEYXRh
PiBpY29uRGF0YUZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMKTsKLQotICAgIGJvb2wg
aXNPcGVuKCk7Ci0gICAgYm9vbCBpc1VybEltcG9ydENvbXBsZXRlZCgpOwotCi0gICAgdm9pZCBy
ZW1vdmVBbGxJY29ucygpOwotICAgIHZvaWQgY2hlY2tJbnRlZ3JpdHlCZWZvcmVPcGVuaW5nKCk7
Ci0gICAgdm9pZCBjbG9zZSgpOwotCi0gICAgdm9pZCBzZXRDbGllbnQoc3RkOjp1bmlxdWVfcHRy
PEFQSTo6SWNvbkRhdGFiYXNlQ2xpZW50PiYmKTsKLQotICAgIHZvaWQgc2V0UHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZChib29sKTsKLQotICAgIC8vIENhbGxlZCB3aGVuIHRoZSBXZWJQcm9jZXNzUG9v
bCBpcyB0aHJvdWdoIHdpdGggdGhpcyBXZWJJY29uRGF0YWJhc2UgYnV0IHRoZQotICAgIC8vIFdl
YkNvcmU6Okljb25EYXRhYmFzZSBwb3NzaWJseSBpc24ndCBkb25lIHNodXR0aW5nIGRvd24uCi0g
ICAgLy8gSW4gdGhhdCBjYXNlIHRoaXMgV2ViSWNvbkRhdGFiYXNlIHdpbGwgZGVyZWYoKSBpdHNl
bGYgd2hlbiB0aGUgdGltZSBpcyByaWdodC4KLSAgICB2b2lkIGRlcmVmV2hlbkFwcHJvcHJpYXRl
KCk7Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViSWNvbkRhdGFiYXNlKFdlYlByb2Nlc3NQ
b29sJik7Ci0KLSAgICAvLyBXZWJDb3JlOjpJY29uRGF0YWJhc2VDbGllbnQKLSAgICB2b2lkIGRp
ZEltcG9ydEljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZv
aWQgZGlkSW1wb3J0SWNvbkRhdGFGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZGlkQ2hhbmdlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBkaWRSZW1vdmVBbGxJY29ucygpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkRmlu
aXNoVVJMSW1wb3J0KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRDbG9zZSgpIG92ZXJyaWRlOwot
Ci0gICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKLSAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIG5vdGlmeUlj
b25EYXRhUmVhZHlGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpOwotCi0gICAgV2ViUHJvY2Vzc1Bv
b2wqIG1fcHJvY2Vzc1Bvb2w7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SWNvbkRh
dGFiYXNlPiBtX2ljb25EYXRhYmFzZUltcGw7Ci0gICAgYm9vbCBtX3VybEltcG9ydENvbXBsZXRl
ZDsKLSAgICBib29sIG1fZGF0YWJhc2VDbGVhbnVwRGlzYWJsZWQ7Ci0gICAgYm9vbCBtX3Nob3Vs
ZERlcmVmV2hlbkFwcHJvcHJpYXRlOwotICAgIEhhc2hNYXA8dWludDY0X3QsIFN0cmluZz4gbV9w
ZW5kaW5nTG9hZERlY2lzaW9uVVJMTWFwOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6SWNv
bkRhdGFiYXNlQ2xpZW50PiBtX2NsaWVudDsKK2NsYXNzIFdlYkljb25EYXRhYmFzZSA6IHB1Ymxp
YyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6Okljb25EYXRhYmFzZT4gewogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJJY29uRGF0YWJhc2VfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLm1lc3NhZ2Vz
LmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNWI5NmZkMWY2Ni4uMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLm1lc3NhZ2Vz
LmluCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotCi1tZXNzYWdlcyAtPiBXZWJJY29uRGF0YWJhc2UgewotICAgIFNl
dEljb25VUkxGb3JQYWdlVVJMKFN0cmluZyBpY29uVVJMLCBTdHJpbmcgcGFnZVVSTCkKLSAgICBT
ZXRJY29uRGF0YUZvckljb25VUkwoSVBDOjpEYXRhUmVmZXJlbmNlIGljb25EYXRhLCBTdHJpbmcg
aWNvblVSTCkKLSAgICAKLSAgICBTeW5jaHJvbm91c0ljb25EYXRhRm9yUGFnZVVSTChTdHJpbmcg
cGFnZVVSTCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSBpY29uRGF0YSkKLSAgICBTeW5jaHJvbm91
c0ljb25VUkxGb3JQYWdlVVJMKFN0cmluZyBwYWdlVVJMKSAtPiAoU3RyaW5nIGljb25VUkwpCi0g
ICAgU3luY2hyb25vdXNJY29uRGF0YUtub3duRm9ySWNvblVSTChTdHJpbmcgaWNvblVSTCkgLT4g
KGJvb2wgZGF0YUtub3duKQotICAgIFN5bmNocm9ub3VzTG9hZERlY2lzaW9uRm9ySWNvblVSTChT
dHJpbmcgaWNvblVSTCkgLT4gKGludCBsb2FkRGVjaXNpb24pCi0gICAgCi0gICAgR2V0TG9hZERl
Y2lzaW9uRm9ySWNvblVSTChTdHJpbmcgaWNvblVSTCwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAg
ICBEaWRSZWNlaXZlSWNvbkZvclBhZ2VVUkwoU3RyaW5nIHBhZ2VVUkwpCi19CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2VDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMWQ3MjA1MGM4ZTQuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZUNsaWVudC5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIldlYkljb25EYXRhYmFzZUNsaWVudC5oIgotCi0jaW5jbHVkZSAiV0tBUElDYXN0Lmgi
Ci0jaW5jbHVkZSAiV0tTaGFyZWRBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2ViSWNvbkRhdGFiYXNl
LmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJJY29uRGF0YWJhc2VDbGllbnQ6OldlYklj
b25EYXRhYmFzZUNsaWVudChjb25zdCBXS0ljb25EYXRhYmFzZUNsaWVudEJhc2UqIHdrQ2xpZW50
KQotewotICAgIGluaXRpYWxpemUod2tDbGllbnQpOwotfQotCi12b2lkIFdlYkljb25EYXRhYmFz
ZUNsaWVudDo6ZGlkQ2hhbmdlSWNvbkZvclBhZ2VVUkwoV2ViSWNvbkRhdGFiYXNlJiBpY29uRGF0
YWJhc2UsIGNvbnN0IFN0cmluZyYgcGFnZVVSTCkKLXsKLSAgICBpZiAoIW1fY2xpZW50LmRpZENo
YW5nZUljb25Gb3JQYWdlVVJMKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NsaWVudC5kaWRD
aGFuZ2VJY29uRm9yUGFnZVVSTCh0b0FQSSgmaWNvbkRhdGFiYXNlKSwgdG9BUEkoQVBJOjpVUkw6
OmNyZWF0ZShwYWdlVVJMKS5wdHIoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19Ci0K
LXZvaWQgV2ViSWNvbkRhdGFiYXNlQ2xpZW50OjpkaWRSZW1vdmVBbGxJY29ucyhXZWJJY29uRGF0
YWJhc2UmIGljb25EYXRhYmFzZSkKLXsKLSAgICBpZiAoIW1fY2xpZW50LmRpZFJlbW92ZUFsbElj
b25zKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NsaWVudC5kaWRSZW1vdmVBbGxJY29ucyh0
b0FQSSgmaWNvbkRhdGFiYXNlKSwgIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19Ci0KLXZv
aWQgV2ViSWNvbkRhdGFiYXNlQ2xpZW50OjppY29uRGF0YVJlYWR5Rm9yUGFnZVVSTChXZWJJY29u
RGF0YWJhc2UmIGljb25EYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBwYWdlVVJMKQotewotICAgIGlm
ICghbV9jbGllbnQuaWNvbkRhdGFSZWFkeUZvclBhZ2VVUkwpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIG1fY2xpZW50Lmljb25EYXRhUmVhZHlGb3JQYWdlVVJMKHRvQVBJKCZpY29uRGF0YWJhc2Up
LCB0b0FQSShBUEk6OlVSTDo6Y3JlYXRlKHBhZ2VVUkwpLnB0cigpKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2VDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZUNsaWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBhNmFjMWE4ZmFlMS4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJJY29uRGF0YWJhc2VDbGllbnRfaAotI2Rl
ZmluZSBXZWJJY29uRGF0YWJhc2VDbGllbnRfaAotCi0jaW5jbHVkZSAiQVBJQ2xpZW50LmgiCi0j
aW5jbHVkZSAiQVBJSWNvbkRhdGFiYXNlQ2xpZW50LmgiCi0jaW5jbHVkZSAiV0tJY29uRGF0YWJh
c2UuaCIKLQotbmFtZXNwYWNlIEFQSSB7Ci1jbGFzcyBVUkw7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBD
bGllbnRUcmFpdHM8V0tJY29uRGF0YWJhc2VDbGllbnRCYXNlPiB7Ci0gICAgdHlwZWRlZiBzdGQ6
OnR1cGxlPFdLSWNvbkRhdGFiYXNlQ2xpZW50VjAsIFdLSWNvbkRhdGFiYXNlQ2xpZW50VjE+IFZl
cnNpb25zOwotfTsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYkljb25EYXRh
YmFzZTsKLQotY2xhc3MgV2ViSWNvbkRhdGFiYXNlQ2xpZW50IDogcHVibGljIEFQSTo6SWNvbkRh
dGFiYXNlQ2xpZW50LCBBUEk6OkNsaWVudDxXS0ljb25EYXRhYmFzZUNsaWVudEJhc2U+IHsKLXB1
YmxpYzoKLSAgICBleHBsaWNpdCBXZWJJY29uRGF0YWJhc2VDbGllbnQoY29uc3QgV0tJY29uRGF0
YWJhc2VDbGllbnRCYXNlKik7Ci0KLSAgICB2b2lkIGRpZENoYW5nZUljb25Gb3JQYWdlVVJMKFdl
Ykljb25EYXRhYmFzZSYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVt
b3ZlQWxsSWNvbnMoV2ViSWNvbkRhdGFiYXNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpY29uRGF0
YVJlYWR5Rm9yUGFnZVVSTChXZWJJY29uRGF0YWJhc2UmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlk
ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViSWNvbkRhdGFi
YXNlQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApp
bmRleCBjZTgzNjA1YTY0NS4uOGNlNWI1ODc5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTU3LDcgKzU3LDYgQEAKICNpbmNsdWRlICJXZWJDb29r
aWVNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNp
bmNsdWRlICJXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oIgotI2luY2x1ZGUgIldlYkljb25E
YXRhYmFzZS5oIgogI2luY2x1ZGUgIldlYktpdDJJbml0aWFsaXplLmgiCiAjaW5jbHVkZSAiV2Vi
TWVtb3J5U2FtcGxlci5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5o
IgpAQCAtMjU4LDggKzI1Nyw2IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICBhZGRNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYlByb2Nlc3NQb29sOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
ICp0aGlzKTsKIAogICAgIC8vIE5PVEU6IFRoZXNlIHN1Yi1vYmplY3RzIG11c3QgYmUgaW5pdGlh
bGl6ZWQgYWZ0ZXIgbV9tZXNzYWdlUmVjZWl2ZXJNYXAuLgotICAgIG1faWNvbkRhdGFiYXNlID0g
V2ViSWNvbkRhdGFiYXNlOjpjcmVhdGUodGhpcyk7Ci0KICAgICBhZGRTdXBwbGVtZW50PFdlYkNv
b2tpZU1hbmFnZXJQcm94eT4oKTsKICAgICBhZGRTdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5PigpOwogICAgIGFkZFN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5PigpOwpAQCAtMzA1LDExICszMDIsNiBAQCBXZWJQcm9jZXNzUG9vbDo6fldlYlByb2Nlc3NQ
b29sKCkKICAgICAgICAgc3VwcGxlbWVudC0+Y2xlYXJQcm9jZXNzUG9vbCgpOwogICAgIH0KIAot
ICAgIG1faWNvbkRhdGFiYXNlLT5pbnZhbGlkYXRlKCk7Ci0gICAgbV9pY29uRGF0YWJhc2UtPmNs
ZWFyUHJvY2Vzc1Bvb2woKTsKLSAgICBXZWJJY29uRGF0YWJhc2UqIHJhd0ljb25EYXRhYmFzZSA9
IG1faWNvbkRhdGFiYXNlLmxlYWtSZWYoKTsKLSAgICByYXdJY29uRGF0YWJhc2UtPmRlcmVmV2hl
bkFwcHJvcHJpYXRlKCk7Ci0KICAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9kaWN0aW9uYXJ5
Q2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKIAog
ICAgIHBsYXRmb3JtSW52YWxpZGF0ZUNvbnRleHQoKTsKQEAgLTU5NSw4ICs1ODcsNiBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjp3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCkKIAog
dm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0QW55UGFnZUdyb3VwTWlnaHRIYXZlUHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCiB7Ci0gICAgbV9pY29uRGF0
YWJhc2UtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7
Ci0KICAgICBpZiAobmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAgICBpZiAocHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCkKICAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHtTZXNzaW9uSUQ6
OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSwgeyB9LCB7IH0sIHsgfX0pLCAwKTsKQEAgLTcyNiw4
ICs3MTYsNiBAQCBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQ
cm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYQogICAgIHBhcmFtZXRlcnMuc2hvdWxk
QWx3YXlzVXNlQ29tcGxleFRleHRDb2RlUGF0aCA9IG1fYWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29k
ZVBhdGg7CiAgICAgcGFyYW1ldGVycy5zaG91bGRVc2VGb250U21vb3RoaW5nID0gbV9zaG91bGRV
c2VGb250U21vb3RoaW5nOwogCi0gICAgcGFyYW1ldGVycy5pY29uRGF0YWJhc2VFbmFibGVkID0g
IWljb25EYXRhYmFzZVBhdGgoKS5pc0VtcHR5KCk7Ci0KICAgICBwYXJhbWV0ZXJzLnRlcm1pbmF0
aW9uVGltZW91dCA9IDBfczsKIAogICAgIHBhcmFtZXRlcnMudGV4dENoZWNrZXJTdGF0ZSA9IFRl
eHRDaGVja2VyOjpzdGF0ZSgpOwpAQCAtMTI5MCwyMyArMTI3OCw2IEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnN0b3BNZW1vcnlTYW1wbGVyKCkKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2Fn
ZXM6OldlYlByb2Nlc3M6OlN0b3BNZW1vcnlTYW1wbGVyKCkpOwogfQogCi12b2lkIFdlYlByb2Nl
c3NQb29sOjpzZXRJY29uRGF0YWJhc2VQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBt
X292ZXJyaWRlSWNvbkRhdGFiYXNlUGF0aCA9IHBhdGg7Ci0gICAgaWYgKCFtX292ZXJyaWRlSWNv
bkRhdGFiYXNlUGF0aC5pc0VtcHR5KCkpIHsKLSAgICAgICAgLy8gVGhpcyBpbXBsaWNpdGx5IGVu
YWJsZXMgdGhlIGRhdGFiYXNlIG9uIFVJIHByb2Nlc3Mgc2lkZS4KLSAgICAgICAgbV9pY29uRGF0
YWJhc2UtPnNldERhdGFiYXNlUGF0aChwYXRoKTsKLSAgICB9Ci19Ci0KLVN0cmluZyBXZWJQcm9j
ZXNzUG9vbDo6aWNvbkRhdGFiYXNlUGF0aCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX292ZXJyaWRl
SWNvbkRhdGFiYXNlUGF0aC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIG1fb3ZlcnJpZGVJY29u
RGF0YWJhc2VQYXRoOwotCi0gICAgcmV0dXJuIHBsYXRmb3JtRGVmYXVsdEljb25EYXRhYmFzZVBh
dGgoKTsKLX0KLQogdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXNlVGVzdGluZ05ldHdvcmtTZXNzaW9u
KCkKIHsKICAgICBBU1NFUlQobV9wcm9jZXNzZXMuaXNFbXB0eSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDk0ZGVlYTMxZjRmLi5lZWU2NzJiMjUwYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC04OSw3ICs4OSw2
IEBAIGNsYXNzIFVJR2FtZXBhZDsKIGNsYXNzIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBs
ZXI7CiBjbGFzcyBXZWJBdXRvbWF0aW9uU2Vzc2lvbjsKIGNsYXNzIFdlYkNvbnRleHRTdXBwbGVt
ZW50OwotY2xhc3MgV2ViSWNvbkRhdGFiYXNlOwogY2xhc3MgV2ViUGFnZUdyb3VwOwogY2xhc3Mg
V2ViUGFnZVByb3h5Owogc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwpA
QCAtMjQ0LDggKzI0Myw2IEBAIHB1YmxpYzoKIAogICAgIEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ2xpZW50JiBjdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoKSBjb25zdCB7IHJldHVybiAq
bV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ7IH0KIAotICAgIFdlYkljb25EYXRhYmFzZSog
aWNvbkRhdGFiYXNlKCkgY29uc3QgeyByZXR1cm4gbV9pY29uRGF0YWJhc2UuZ2V0KCk7IH0KLQog
ICAgIHN0cnVjdCBTdGF0aXN0aWNzIHsKICAgICAgICAgdW5zaWduZWQgd2tWaWV3Q291bnQ7CiAg
ICAgICAgIHVuc2lnbmVkIHdrUGFnZUNvdW50OwpAQCAtMjUzLDggKzI1MCw2IEBAIHB1YmxpYzoK
ICAgICB9OwogICAgIHN0YXRpYyBTdGF0aXN0aWNzJiBzdGF0aXN0aWNzKCk7ICAgIAogCi0gICAg
dm9pZCBzZXRJY29uRGF0YWJhc2VQYXRoKGNvbnN0IFN0cmluZyYpOwotICAgIFN0cmluZyBpY29u
RGF0YWJhc2VQYXRoKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDb29raWVTdG9yYWdlRGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYgZGlyKSB7IG1fb3ZlcnJpZGVDb29raWVTdG9yYWdlRGlyZWN0b3J5ID0g
ZGlyOyB9CiAKICAgICB2b2lkIHVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbigpOwpAQCAtNDUwLDgg
KzQ0NSw2IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgbGFuZ3VhZ2VDaGFuZ2VkKHZvaWQq
IGNvbnRleHQpOwogICAgIHZvaWQgbGFuZ3VhZ2VDaGFuZ2VkKCk7CiAKLSAgICBTdHJpbmcgcGxh
dGZvcm1EZWZhdWx0SWNvbkRhdGFiYXNlUGF0aCgpIGNvbnN0OwotCiAjaWYgUExBVEZPUk0oSU9T
KQogICAgIFN0cmluZyBjb29raWVTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAjZW5kaWYKQEAg
LTUzMCw4ICs1MjMsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9tZW1vcnlTYW1wbGVyRW5hYmxl
ZDsKICAgICBkb3VibGUgbV9tZW1vcnlTYW1wbGVySW50ZXJ2YWw7CiAKLSAgICBSZWZQdHI8V2Vi
SWNvbkRhdGFiYXNlPiBtX2ljb25EYXRhYmFzZTsKLQogICAgIGNvbnN0IFJlZjxBUEk6OldlYnNp
dGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxj
b25zdCBjaGFyKiwgUmVmUHRyPFdlYkNvbnRleHRTdXBwbGVtZW50PiwgUHRySGFzaDxjb25zdCBj
aGFyKj4+IFdlYkNvbnRleHRTdXBwbGVtZW50TWFwOwpAQCAtNTU0LDcgKzU0NSw2IEBAIHByaXZh
dGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI+
IG1fcGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcjsKICNlbmRpZgogCi0gICAgU3RyaW5n
IG1fb3ZlcnJpZGVJY29uRGF0YWJhc2VQYXRoOwogICAgIFN0cmluZyBtX292ZXJyaWRlQ29va2ll
U3RvcmFnZURpcmVjdG9yeTsKIAogICAgIGJvb2wgbV9zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nl
c3Npb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRl
eCBlMDk2YjYyNzUyNy4uNDI3NTA1NjI4OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIlRleHRDaGVj
a2VyU3RhdGUuaCIKICNpbmNsdWRlICJVc2VyRGF0YS5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0uaCIKLSNpbmNsdWRlICJXZWJJY29uRGF0YWJhc2UuaCIKICNpbmNsdWRlICJX
ZWJJbnNwZWN0b3JVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uRGF0YVN0b3Jl
LmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgiCkBAIC0xNjcsOCAr
MTY2LDYgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NXaWxsU2h1dERvd24oSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uKQogCiAgICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFw
LnZhbHVlcygpKQogICAgICAgICBwYWdlLT53ZWJQcm9jZXNzV2lsbFNodXREb3duKCk7Ci0KLSAg
ICByZWxlYXNlUmVtYWluaW5nSWNvbnNGb3JQYWdlVVJMcygpOwogfQogCiB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6c2h1dERvd24oKQpAQCAtNTc5LDUzICs1NzYsNiBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6Z2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eQogfQogI2VuZGlmIC8vIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogCi12b2lkIFdl
YlByb2Nlc3NQcm94eTo6cmV0YWluSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJM
KQotewotICAgIFdlYkljb25EYXRhYmFzZSogaWNvbkRhdGFiYXNlID0gcHJvY2Vzc1Bvb2woKS5p
Y29uRGF0YWJhc2UoKTsKLSAgICBpZiAoIWljb25EYXRhYmFzZSB8fCBwYWdlVVJMLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVHJhY2sgcmV0YWluIGNvdW50cyBzbyB3ZSBj
YW4gcmVsZWFzZSB0aGVtIGlmIHRoZSBXZWJQcm9jZXNzIHRlcm1pbmF0ZXMgZWFybHkuCi0gICAg
YXV0byByZXN1bHQgPSBtX3BhZ2VVUkxSZXRhaW5Db3VudE1hcC5hZGQocGFnZVVSTCwgMSk7Ci0g
ICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgKytyZXN1bHQuaXRlcmF0b3ItPnZh
bHVlOwotCi0gICAgaWNvbkRhdGFiYXNlLT5yZXRhaW5JY29uRm9yUGFnZVVSTChwYWdlVVJMKTsK
LX0KLQotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbGVhc2VJY29uRm9yUGFnZVVSTChjb25zdCBT
dHJpbmcmIHBhZ2VVUkwpCi17Ci0gICAgV2ViSWNvbkRhdGFiYXNlKiBpY29uRGF0YWJhc2UgPSBw
cm9jZXNzUG9vbCgpLmljb25EYXRhYmFzZSgpOwotICAgIGlmICghaWNvbkRhdGFiYXNlIHx8IHBh
Z2VVUkwuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBUcmFjayByZXRhaW4g
Y291bnRzIHNvIHdlIGNhbiByZWxlYXNlIHRoZW0gaWYgdGhlIFdlYlByb2Nlc3MgdGVybWluYXRl
cyBlYXJseS4KLSAgICBhdXRvIHJlc3VsdCA9IG1fcGFnZVVSTFJldGFpbkNvdW50TWFwLmZpbmQo
cGFnZVVSTCk7Ci0gICAgaWYgKHJlc3VsdCA9PSBtX3BhZ2VVUkxSZXRhaW5Db3VudE1hcC5lbmQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLS1yZXN1bHQtPnZhbHVlOwotICAgIGlmICghcmVz
dWx0LT52YWx1ZSkKLSAgICAgICAgbV9wYWdlVVJMUmV0YWluQ291bnRNYXAucmVtb3ZlKHJlc3Vs
dCk7Ci0KLSAgICBpY29uRGF0YWJhc2UtPnJlbGVhc2VJY29uRm9yUGFnZVVSTChwYWdlVVJMKTsK
LX0KLQotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbGVhc2VSZW1haW5pbmdJY29uc0ZvclBhZ2VV
UkxzKCkKLXsKLSAgICBXZWJJY29uRGF0YWJhc2UqIGljb25EYXRhYmFzZSA9IHByb2Nlc3NQb29s
KCkuaWNvbkRhdGFiYXNlKCk7Ci0gICAgaWYgKCFpY29uRGF0YWJhc2UpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGZvciAoYXV0byYgZW50cnkgOiBtX3BhZ2VVUkxSZXRhaW5Db3VudE1hcCkgewot
ICAgICAgICB1aW50NjRfdCBjb3VudCA9IGVudHJ5LnZhbHVlOwotICAgICAgICBmb3IgKHVpbnQ2
NF90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKLSAgICAgICAgICAgIGljb25EYXRhYmFzZS0+cmVs
ZWFzZUljb25Gb3JQYWdlVVJMKGVudHJ5LmtleSk7Ci0gICAgfQotCi0gICAgbV9wYWdlVVJMUmV0
YWluQ291bnRNYXAuY2xlYXIoKTsKLX0KLQogI2lmICFQTEFURk9STShDT0NPQSkKIGJvb2wgV2Vi
UHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUlzQmVpbmdEZWJ1Z2dlZCgpIGNvbnN0CiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDU2OTE4YjM5ZDM1Li41YmIz
NmM2NzFmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAg
LTIxOCwxMCArMjE4LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldERhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb24oUmVmPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldERhdGFiYXNlUHJvY2Vz
c0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4mJik7CiAjZW5kaWYKIAotICAgIHZvaWQgcmV0YWlu
SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMKTsKLSAgICB2b2lkIHJlbGVhc2VJ
Y29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwpOwotICAgIHZvaWQgcmVsZWFzZVJl
bWFpbmluZ0ljb25zRm9yUGFnZVVSTHMoKTsKLQogICAgIGJvb2wgcGxhdGZvcm1Jc0JlaW5nRGVi
dWdnZWQoKSBjb25zdDsKIAogICAgIHN0YXRpYyBjb25zdCBIYXNoU2V0PFN0cmluZz4mIHBsYXRm
b3JtUGF0aHNXaXRoQXNzdW1lZFJlYWRBY2Nlc3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCBiMmJiNzgxMjBmNS4u
NDdlNWNkMmZiNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTUxLDkgKzUxLDYgQEAgbWVzc2FnZXMgLT4gV2ViUHJv
Y2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKIAogICAgIFN0b3BSZXNwb25zaXZlbmVzc1RpbWVy
KCkKIAotICAgIFJldGFpbkljb25Gb3JQYWdlVVJMKFN0cmluZyBwYWdlVVJMKQotICAgIFJlbGVh
c2VJY29uRm9yUGFnZVVSTChTdHJpbmcgcGFnZVVSTCkKLQogICAgIERpZFJlY2VpdmVNYWluVGhy
ZWFkUGluZygpCiAgICAgRGlkUmVjZWl2ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1BpbmcoKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xH
dGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNw
cAppbmRleCBiMGFjZWUzOTc2OC4uYzU5NWQ1NmRmMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcApAQCAtMTA2LDEyICsxMDYsNiBA
QCBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdEluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KCkKICAgICByZXR1cm4gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKIH0KIAotU3RyaW5nIFdlYlByb2Nlc3NQ
b29sOjpwbGF0Zm9ybURlZmF1bHRJY29uRGF0YWJhc2VQYXRoKCkgY29uc3QKLXsKLSAgICBHVW5p
cXVlUHRyPGdjaGFyPiBkYXRhYmFzZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3Vz
ZXJfY2FjaGVfZGlyKCksICJ3ZWJraXRndGsiLCAiaWNvbmRhdGFiYXNlIiwgbnVsbHB0cikpOwot
ICAgIHJldHVybiBXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRh
dGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKLX0KLQogU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdh
Y3lQbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQogewogICAgIHJldHVybiBB
UEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQcm9jZXNzUG9vbFdQRS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUHJvY2Vzc1Bvb2xXUEUuY3BwCmlu
ZGV4IDBiOWM2ZmJlOGFkLi5lNTIyYTU5NTU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NQb29sV1BFLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy93cGUvV2ViUHJvY2Vzc1Bvb2xXUEUuY3BwCkBAIC0xMTEsMTIgKzExMSw2IEBAIFN0
cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0SW5kZXhlZERCRGF0YWJh
c2VEaXJlY3RvcnkoKQogICAgIHJldHVybiBXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKIH0KIAotU3Ry
aW5nIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1bHRJY29uRGF0YWJhc2VQYXRoKCkgY29u
c3QKLXsKLSAgICBHVW5pcXVlUHRyPGdjaGFyPiBkYXRhYmFzZURpcmVjdG9yeShnX2J1aWxkX2Zp
bGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3cGUiLCAiaWNvbmRhdGFiYXNlIiwgbnVs
bHB0cikpOwotICAgIHJldHVybiBXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGRhdGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKLX0KLQogU3RyaW5nIFdlYlByb2Nlc3NQ
b29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQogewogICAg
IEdVbmlxdWVQdHI8Z2NoYXI+IHN0b3JhZ2VEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dl
dF91c2VyX2RhdGFfZGlyKCksICJ3cGUiLCAibG9jYWxzdG9yYWdlIiwgbnVsbHB0cikpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjNj
M2JhNTU5NGIuLjU3OGM5MzM2OGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkzNywxMCArOTM3LDYgQEAKIAkJNTEwRkJCOUIxMjg4
Qzk1RTAwQUZGREY0IC8qIFdlYkNvbnRleHRNZW51SXRlbURhdGEuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEZCQjk5MTI4OEM5NUUwMEFGRkRGNCAv
KiBXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmggKi87IH07CiAJCTUxMTBBRTBDMTMzQzE2Q0IwMDcy
NzE3QSAvKiBXS0ljb25EYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTEwQUUwQTEzM0MxNkNCMDA3MjcxN0EgLyogV0tJY29uRGF0YWJh
c2UuY3BwICovOyB9OwogCQk1MTEwQUUwRDEzM0MxNkNCMDA3MjcxN0EgLyogV0tJY29uRGF0YWJh
c2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTBB
RTBCMTMzQzE2Q0IwMDcyNzE3QSAvKiBXS0ljb25EYXRhYmFzZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUxMUIyNEE2MTMyRTA5NTcwMDA2NUEw
QyAvKiBXZWJJY29uRGF0YWJhc2VQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFCMjRBNDEzMkUwOTU3MDAwNjVBMEMgLyogV2ViSWNvbkRh
dGFiYXNlUHJveHkuY3BwICovOyB9OwotCQk1MTFCMjRBNzEzMkUwOTU3MDAwNjVBMEMgLyogV2Vi
SWNvbkRhdGFiYXNlUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxMUIyNEE1MTMyRTA5NTcwMDA2NUEwQyAvKiBXZWJJY29uRGF0YWJhc2VQcm94
eS5oICovOyB9OwotCQk1MTFCMjRBQTEzMkUwOTcyMDAwNjVBMEMgLyogV2ViSWNvbkRhdGFiYXNl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUIy
NEE4MTMyRTA5NzIwMDA2NUEwQyAvKiBXZWJJY29uRGF0YWJhc2UuY3BwICovOyB9OwotCQk1MTFC
MjRBQjEzMkUwOTcyMDAwNjVBMEMgLyogV2ViSWNvbkRhdGFiYXNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFCMjRBOTEzMkUwOTcyMDAwNjVBMEMg
LyogV2ViSWNvbkRhdGFiYXNlLmggKi87IH07CiAJCTUxMUY3RDQxMUVCMUJDRjUwMEU0N0I4MyAv
KiBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjdENDAxRUIxQkNFRTAwRTQ3QjgzIC8qIFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzLmggKi87IH07CiAJCTUxMUY3RDQyMUVCMUJDRjgwMEU0N0I4MyAv
KiBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFGN0QzRjFFQjFCQ0VFMDBFNDdCODMgLyogV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwICovOyB9OwogCQk1MTFGOEE3QjEzOEI0NjA5MDBBOTVG
NDQgLyogU2VjSXRlbVNoaW1MaWJyYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTFGOEE3NzEzOEI0NjA5MDBBOTVGNDQgLyogU2VjSXRlbVNoaW1M
aWJyYXJ5LmggKi87IH07CkBAIC0xMDIzLDggKzEwMTksNiBAQAogCQk1MTdDRjBFNDE2M0E0ODZD
MDBDMjk1MEUgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0NGMEUyMTYzQTQ4NkMwMEMy
OTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oICovOyB9OwogCQk1MTdE
RDVCRTE4MERBN0QzMDA4MTY2MEIgLyogRGF0YWJhc2VQcm9jZXNzUHJveHkuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3REQ1QkMxODBEQTdEMzAw
ODE2NjBCIC8qIERhdGFiYXNlUHJvY2Vzc1Byb3h5LmNwcCAqLzsgfTsKIAkJNTE3REQ1QkYxODBE
QTdEMzAwODE2NjBCIC8qIERhdGFiYXNlUHJvY2Vzc1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdERDVCRDE4MERBN0QzMDA4MTY2MEIgLyog
RGF0YWJhc2VQcm9jZXNzUHJveHkuaCAqLzsgfTsKLQkJNTE4MzQ1OTIxMzQ1MzJFOTAwOTJCNjk2
IC8qIFdlYkljb25EYXRhYmFzZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgzNDU5MDEzNDUzMkU4MDA5MkI2OTYgLyogV2ViSWNvbkRh
dGFiYXNlQ2xpZW50LmNwcCAqLzsgfTsKLQkJNTE4MzQ1OTMxMzQ1MzJFOTAwOTJCNjk2IC8qIFdl
Ykljb25EYXRhYmFzZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE4MzQ1OTExMzQ1MzJFODAwOTJCNjk2IC8qIFdlYkljb25EYXRhYmFzZUNs
aWVudC5oICovOyB9OwogCQk1MTgzRERFQzE2MzBCREZDMDA4QkU1QzcgLyogTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxMDVCMEQ0MTYyRjdBN0EwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwICovOyB9OwogCQk1MTg3MUI1QjEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1l
bnUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4
NzFCNTkxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmNwcCAqLzsgfTsKIAkJNTE4
NzFCNUMxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg3MUI1QTEyN0NCODlEMDBGNzYyMzIg
LyogV2ViQ29udGV4dE1lbnUuaCAqLzsgfTsKQEAgLTEwNjAsMTAgKzEwNTQsNiBAQAogCQk1MUNE
MUM2NTFCMzRCOUQ0MDAxNDJDQTUgLyogV0tTZWN1cml0eU9yaWdpbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDRDFDNUYxQjM0QjlDOTAwMTQyQ0E1
IC8qIFdLU2VjdXJpdHlPcmlnaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJs
aWMsICk7IH07IH07CiAJCTUxQ0QxQzY2MUIzNEI5REMwMDE0MkNBNSAvKiBXS1NlY3VyaXR5T3Jp
Z2luLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFD
RDFDNjAxQjM0QjlDOTAwMTQyQ0E1IC8qIFdLU2VjdXJpdHlPcmlnaW4ubW0gKi87IH07CiAJCTUx
Q0QxQzY3MUIzNEI5REYwMDE0MkNBNSAvKiBXS1NlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQ0QxQzYxMUIzNEI5
QzkwMDE0MkNBNSAvKiBXS1NlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCAqLzsgfTsKLQkJNTFEMDJG
NjQxMzJFQzVCOTAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZU1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQwMkY2MzEz
MkVDNUI5MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsg
fTsKLQkJNTFEMDJGNkExMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZU1lc3NhZ2Vz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQwMkY2
NzEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlTWVzc2FnZXMuaCAqLzsgfTsKLQkJ
NTFEMDJGNkIxMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZVByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxRDAyRjY4MTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi87IH07Ci0JCTUxRDAyRjZDMTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29u
RGF0YWJhc2VQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUQwMkY2OTEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNl
UHJveHlNZXNzYWdlcy5oICovOyB9OwogCQk1MUQxMjQyMzFFNkQzNEExMDAyQjI4MjAgLyogV2Vi
VVJMU2NoZW1lVGFza1Byb3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxRDEyNDIxMUU2RDM0OUEwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVUYXNr
UHJveHkuY3BwICovOyB9OwogCQk1MUQxMjQyODFFNkQzRjVEMDAyQjI4MjAgLyogV2ViVVJMU2No
ZW1lSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUQxMjQyNDFFNkQzQ0MzMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAg
Ki87IH07CiAJCTUxRDEyNDJDMUU2RDQxRkQwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVy
UHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFEMTI0MkExRTZENDFCQzAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAg
Ki87IH07CkBAIC0zMTg2LDEwICszMTc2LDYgQEAKIAkJNTEwRkJCOTkxMjg4Qzk1RTAwQUZGREY0
IC8qIFdlYkNvbnRleHRNZW51SXRlbURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MTEwQUUwQTEzM0MxNkNCMDA3MjcxN0EgLyogV0tJY29uRGF0YWJhc2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tJY29uRGF0YWJhc2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTEwQUUwQjEzM0MxNkNCMDA3MjcxN0EgLyogV0tJ
Y29uRGF0YWJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tJY29uRGF0
YWJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTExQjI0QTQxMzJFMDk1NzAw
MDY1QTBDIC8qIFdlYkljb25EYXRhYmFzZVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFdlYkljb25EYXRhYmFzZVByb3h5LmNwcDsgcGF0aCA9IEljb25EYXRh
YmFzZS9XZWJJY29uRGF0YWJhc2VQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTUxMUIyNEE1MTMyRTA5NTcwMDA2NUEwQyAvKiBXZWJJY29uRGF0YWJhc2VQcm94eS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJJY29uRGF0YWJhc2VQcm94eS5oOyBw
YXRoID0gSWNvbkRhdGFiYXNlL1dlYkljb25EYXRhYmFzZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTUxMUIyNEE4MTMyRTA5NzIwMDA2NUEwQyAvKiBXZWJJY29uRGF0YWJh
c2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSWNvbkRhdGFi
YXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTExQjI0QTkxMzJFMDk3MjAw
MDY1QTBDIC8qIFdlYkljb25EYXRhYmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJJY29uRGF0YWJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEx
RjdEM0YxRUIxQkNFRTAwRTQ3QjgzIC8qIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYnNpdGVEYXRhU3RvcmVQYXJh
bWV0ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTExRjdENDAxRUIxQkNF
RTAwRTQ3QjgzIC8qIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMUY4QTc3MTM4QjQ2MDkwMEE5NUY0NCAvKiBTZWNJdGVt
U2hpbUxpYnJhcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU2VjSXRlbVNo
aW1MaWJyYXJ5Lmg7IHBhdGggPSAuLi8uLi9XZWJQcm9jZXNzL21hYy9TZWNJdGVtU2hpbUxpYnJh
cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMyNzAsMTAgKzMyNTYsNyBAQAog
CQk1MTdDRjBFMjE2M0E0ODZDMDBDMjk1MEUgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVz
c2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3REQ1
QkMxODBEQTdEMzAwODE2NjBCIC8qIERhdGFiYXNlUHJvY2Vzc1Byb3h5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERhdGFiYXNlUHJvY2Vzc1Byb3h5LmNwcDsgcGF0
aCA9IERhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxN0RENUJEMTgwREE3RDMwMDgxNjYwQiAvKiBEYXRhYmFzZVByb2Nlc3NQ
cm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEYXRhYmFzZVByb2Nlc3NQ
cm94eS5oOyBwYXRoID0gRGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxODM0NTkwMTM0NTMyRTgwMDkyQjY5NiAvKiBXZWJJY29u
RGF0YWJhc2VDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NTE4MzQ1OTExMzQ1MzJFODAwOTJCNjk2IC8qIFdlYkljb25EYXRhYmFzZUNsaWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJY29uRGF0YWJhc2VDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4M0IzOTMxMzc5Rjg1QzAwRTg3NTRFIC8qIFNo
aW0ueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gU2hpbS54Y2NvbmZp
Zzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE4NEJDNEExMzJFOTA3QTAwNkI5RTI4
IC8qIFdlYkljb25EYXRhYmFzZS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBX
ZWJJY29uRGF0YWJhc2UubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxODcxQjU5MTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb250ZXh0TWVudS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODcxQjVBMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250
ZXh0TWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb250ZXh0TWVu
dS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MThBQ0FFOTEyQUVFNkJCMDBCMDRC
ODMgLyogV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0zMzE2LDE2ICszMjk5LDEyIEBACiAJCTUxQzBDOTc5MURERDc4NTQwMDMyQ0FEMyAv
KiBfV0tMaW5rSWNvblBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gX1dLTGlua0ljb25QYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxQzBDOTdBMURERDc4NTQwMDMyQ0FEMyAvKiBfV0tMaW5rSWNvblBhcmFtZXRlcnMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tMaW5rSWNvblBhcmFtZXRl
cnMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQzBDOTdCMURERDc4NTQwMDMy
Q0FEMyAvKiBfV0tMaW5rSWNvblBhcmFtZXRlcnNJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBfV0tMaW5rSWNvblBhcmFtZXRlcnNJbnRlcm5hbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MUM4RTE5QjFGMjE2MTcyMDBCRjczMUIgLyogV2ViSWNv
bkRhdGFiYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkljb25EYXRhYmFzZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MUNEMUM1OTFCMzQ5M0E5MDAxNDJDQTUgLyogV0tTZWN1cml0
eU9yaWdpblJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1Nl
Y3VyaXR5T3JpZ2luUmVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDRDFD
NUExQjM0OTNBOTAwMTQyQ0E1IC8qIFdLU2VjdXJpdHlPcmlnaW5SZWYuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTZWN1cml0eU9yaWdpblJlZi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MUNEMUM1RjFCMzRCOUM5MDAxNDJDQTUgLyogV0tTZWN1cml0eU9y
aWdpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1NlY3VyaXR5T3JpZ2lu
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQ0QxQzYwMUIzNEI5QzkwMDE0MkNB
NSAvKiBXS1NlY3VyaXR5T3JpZ2luLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV0tTZWN1cml0eU9yaWdpbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTFDRDFDNjExQjM0QjlDOTAwMTQyQ0E1IC8qIFdLU2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1NlY3VyaXR5T3JpZ2luSW50ZXJu
YWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTFEMDJGNjMxMzJFQzVCOTAwQkVB
QTk2IC8qIFdlYkljb25EYXRhYmFzZU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJY29uRGF0YWJhc2VNZXNzYWdlUmVjZWl2ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MUQwMkY2NTEzMkVDNkQzMDBCRUFBOTYg
LyogV2ViSWNvbkRhdGFiYXNlUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1l
ID0gV2ViSWNvbkRhdGFiYXNlUHJveHkubWVzc2FnZXMuaW47IHBhdGggPSBJY29uRGF0YWJhc2Uv
V2ViSWNvbkRhdGFiYXNlUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTUxRDAyRjY3MTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VNZXNzYWdl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJY29uRGF0YWJhc2VNZXNz
YWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MUQwMkY2ODEzMkVDNzM3MDBC
RUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSWNvbkRhdGFiYXNlUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MUQwMkY2OTEzMkVD
NzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDEyNDIxMUU2RDM0OUEwMDJCMjgyMCAvKiBX
ZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTFEMTI0MjIxRTZEMzQ5QTAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZVRhc2tQcm94eS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJVUkxTY2hlbWVUYXNrUHJveHku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMTI0MjQxRTZEM0NDMzAwMkIyODIw
IC8qIFdlYlVSTFNjaGVtZUhhbmRsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViVVJMU2NoZW1lSGFuZGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC02MjU5LDE2ICs2MjM4LDYgQEAKIAkJCXBhdGggPSBEYXRhYmFzZVNlcnZpY2U7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQk1MUZCQjlDMTEzMkUwNzkyMDBGMzI3
QjQgLyogSWNvbkRhdGFiYXNlICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJl
biA9ICgKLQkJCQk1MTFCMjRBNDEzMkUwOTU3MDAwNjVBMEMgLyogV2ViSWNvbkRhdGFiYXNlUHJv
eHkuY3BwICovLAotCQkJCTUxMUIyNEE1MTMyRTA5NTcwMDA2NUEwQyAvKiBXZWJJY29uRGF0YWJh
c2VQcm94eS5oICovLAotCQkJCTUxRDAyRjY1MTMyRUM2RDMwMEJFQUE5NiAvKiBXZWJJY29uRGF0
YWJhc2VQcm94eS5tZXNzYWdlcy5pbiAqLywKLQkJCSk7Ci0JCQluYW1lID0gSWNvbkRhdGFiYXNl
OwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJNTM5QkQ1QjIxREFEQjBCQTAw
RjJFNEUxIC8qIGNhcHR1cmUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKApAQCAtNjU2OSw3ICs2NTM4LDYgQEAKIAkJCQlDRDczQkEzRDEzMUEyQTIxMDBFRURFRDIg
LyogRnVsbFNjcmVlbiAqLywKIAkJCQk1MTVCRTE3MjFENTNGREI5MDBERDdDNjggLyogR2FtZXBh
ZCAqLywKIAkJCQlCQzBFNUZDQjEyRDY5NkREMDAxMkE3MkEgLyogR2VvbG9jYXRpb24gKi8sCi0J
CQkJNTFGQkI5QzExMzJFMDc5MjAwRjMyN0I0IC8qIEljb25EYXRhYmFzZSAqLywKIAkJCQlCQzIw
NEVERjExQzgzRTcyMDA4RjMzNzUgLyogSW5qZWN0ZWRCdW5kbGUgKi8sCiAJCQkJMzNEM0EzQkQx
MzM5NjA5ODAwNzA5QkU0IC8qIE1lZGlhQ2FjaGUgKi8sCiAJCQkJNEE0MTBGNDExOUFGN0IyNzAw
MkVCQUI1IC8qIE1lZGlhU3RyZWFtICovLApAQCAtNjgyMywxMSArNjc5MSw3IEBACiAJCQkJQkMw
RTYxNTIxMkQ2Q0FDODAwMTJBNzJBIC8qIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lm1lc3Nh
Z2VzLmluICovLAogCQkJCUJDMUJFMUYxMTJENTREQkQwMDA0QTIyOCAvKiBXZWJHZW9sb2NhdGlv
blByb3ZpZGVyLmNwcCAqLywKIAkJCQlCQzFCRTFGMDEyRDU0REJEMDAwNEEyMjggLyogV2ViR2Vv
bG9jYXRpb25Qcm92aWRlci5oICovLAotCQkJCTUxMUIyNEE4MTMyRTA5NzIwMDA2NUEwQyAvKiBX
ZWJJY29uRGF0YWJhc2UuY3BwICovLAotCQkJCTUxMUIyNEE5MTMyRTA5NzIwMDA2NUEwQyAvKiBX
ZWJJY29uRGF0YWJhc2UuaCAqLywKLQkJCQk1MTg0QkM0QTEzMkU5MDdBMDA2QjlFMjggLyogV2Vi
SWNvbkRhdGFiYXNlLm1lc3NhZ2VzLmluICovLAotCQkJCTUxODM0NTkwMTM0NTMyRTgwMDkyQjY5
NiAvKiBXZWJJY29uRGF0YWJhc2VDbGllbnQuY3BwICovLAotCQkJCTUxODM0NTkxMTM0NTMyRTgw
MDkyQjY5NiAvKiBXZWJJY29uRGF0YWJhc2VDbGllbnQuaCAqLywKKwkJCQk1MUM4RTE5QjFGMjE2
MTcyMDBCRjczMUIgLyogV2ViSWNvbkRhdGFiYXNlLmggKi8sCiAJCQkJMUM4RTI4MzMxMjc1RDcz
ODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclByb3h5LmNwcCAqLywKIAkJCQkxQzhFMjgzMjEyNzVE
NzM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yUHJveHkuaCAqLywKIAkJCQkxQzc3QzE5NTEyODhB
ODcyMDA2QTc0MkYgLyogV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4gKi8sCkBAIC03ODgw
LDEwICs3ODQ0LDYgQEAKIAkJCQlCQzBFNjA2MDEyRDZCQTkxMDAxMkE3MkEgLyogV2ViR2VvbG9j
YXRpb25NYW5hZ2VyTWVzc2FnZXMuaCAqLywKIAkJCQlCQzBFNjE4MDEyRDZDQjFEMDAxMkE3MkEg
LyogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJ
CUJDMEU2MTgxMTJENkNCMUQwMDEyQTcyQSAvKiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eU1l
c3NhZ2VzLmggKi8sCi0JCQkJNTFEMDJGNjMxMzJFQzVCOTAwQkVBQTk2IC8qIFdlYkljb25EYXRh
YmFzZU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCi0JCQkJNTFEMDJGNjcxMzJFQzczNzAwQkVBQTk2
IC8qIFdlYkljb25EYXRhYmFzZU1lc3NhZ2VzLmggKi8sCi0JCQkJNTFEMDJGNjgxMzJFQzczNzAw
QkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKLQkJ
CQk1MUQwMkY2OTEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlUHJveHlNZXNzYWdl
cy5oICovLAogCQkJCTUxMDUyMzc3MUM3M0RBNzAwMDc5OTNDQiAvKiBXZWJJREJDb25uZWN0aW9u
VG9DbGllbnRNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTUxMDUyMzc4MUM3M0RBNzAwMDc5
OTNDQiAvKiBXZWJJREJDb25uZWN0aW9uVG9DbGllbnRNZXNzYWdlcy5oICovLAogCQkJCTUxMDUy
MzcyMUM3M0QzN0IwMDc5OTNDQiAvKiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovLApAQCAtODcxNCwxMSArODY3NCw2IEBACiAJCQkJQkMxQkUxRjIxMkQ1NERC
RDAwMDRBMjI4IC8qIFdlYkdlb2xvY2F0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJENTAzNjc2MUJDRUQxOUYwMEUyMEJCMyAvKiBXZWJHZXN0dXJlRXZlbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTkzQTg4QjMzMUJDNkU5Q0QwMEFCQTVDMiAvKiBXZWJIaXRUZXN0UmVzdWx0RGF0
YS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTExQjI0QUIxMzJFMDk3MjAwMDY1QTBDIC8qIFdlYklj
b25EYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4MzQ1OTMxMzQ1MzJFOTAwOTJCNjk2
IC8qIFdlYkljb25EYXRhYmFzZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTFEMDJGNkEx
MzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZU1lc3NhZ2VzLmggaW4gSGVhZGVycyAq
LywKLQkJCQk1MTFCMjRBNzEzMkUwOTU3MDAwNjVBMEMgLyogV2ViSWNvbkRhdGFiYXNlUHJveHku
aCBpbiBIZWFkZXJzICovLAotCQkJCTUxRDAyRjZDMTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29u
RGF0YWJhc2VQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDRERkVCMjFFOUU3
NTJGMDAzOEQxOTYgLyogV2ViSWNvblV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEw
NTIzNzAxQzczOUQ0MjAwNzk5M0NCIC8qIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTEwNTIzN0ExQzczREE3NzAwNzk5M0NCIC8qIFdlYklEQkNvbm5lY3Rp
b25Ub0NsaWVudE1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKQEAgLTkzODgsNyArOTM0Myw3IEBA
CiAJCQkJTGFzdFN3aWZ0VXBkYXRlQ2hlY2sgPSAwNzAwOwogCQkJCUxhc3RVcGdyYWRlQ2hlY2sg
PSAwNzAwOwogCQkJfTsKLQkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxREVCOTFCMTA4NzMz
REE1MDAxMEU5Q0QgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJX
ZWJLaXQyIiAqLzsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxREVCOTFCMTA4NzMzREE1
MDAxMEU5Q0QgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJXZWJL
aXQiICovOwogCQkJY29tcGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMy4yIjsKIAkJCWRldmVs
b3BtZW50UmVnaW9uID0gRW5nbGlzaDsKIAkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAxOwpA
QCAtMTAzMTAsMTEgKzEwMjY1LDYgQEAKIAkJCQkyRDUwMzY3NTFCQ0VEMTlGMDBFMjBCQjMgLyog
V2ViR2VzdHVyZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzQTg4QjM2MUJDNkVBRDUw
MEFCQTVDMiAvKiBXZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
M0E4OEIzMDFCQzZFOTk3MDBBQkE1QzIgLyogV2ViSGl0VGVzdFJlc3VsdERhdGEubW0gaW4gU291
cmNlcyAqLywKLQkJCQk1MTFCMjRBQTEzMkUwOTcyMDAwNjVBMEMgLyogV2ViSWNvbkRhdGFiYXNl
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxODM0NTkyMTM0NTMyRTkwMDkyQjY5NiAvKiBXZWJJ
Y29uRGF0YWJhc2VDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTFEMDJGNjQxMzJFQzVC
OTAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQk1MTFCMjRBNjEzMkUwOTU3MDAwNjVBMEMgLyogV2ViSWNvbkRhdGFiYXNlUHJv
eHkuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTFEMDJGNkIxMzJFQzczNzAwQkVBQTk2IC8qIFdl
Ykljb25EYXRhYmFzZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUY0NERGRUIzMUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJY29uVXRpbGl0aWVzLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTEwNTIzNkYxQzczOUQ0MjAwNzk5M0NCIC8qIFdlYklEQkNvbm5lY3Rpb25U
b0NsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTA1MjM3OTFDNzNEQTc3MDA3OTkzQ0Ig
LyogV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMTExNjcsNyArMTExMTcsNyBAQAogCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zp
c2libGUgPSAwOwogCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKIAkJ
fTsKLQkJMURFQjkxQjEwODczM0RBNTAwMTBFOUNEIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlz
dCBmb3IgUEJYUHJvamVjdCAiV2ViS2l0MiIgKi8gPSB7CisJCTFERUI5MUIxMDg3MzNEQTUwMDEw
RTlDRCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIldlYktpdCIg
Ki8gPSB7CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0
aW9ucyA9ICgKIAkJCQkxREVCOTFCMjA4NzMzREE1MDAxMEU5Q0QgLyogRGVidWcgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSWNvbkRhdGFiYXNlL1dlYkljb25EYXRh
YmFzZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JY29uRGF0YWJhc2UvV2Vi
SWNvbkRhdGFiYXNlUHJveHkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDJl
ZGRkNmRjMC4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ljb25E
YXRhYmFzZS9XZWJJY29uRGF0YWJhc2VQcm94eS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDQg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJJ
Y29uRGF0YWJhc2VQcm94eS5oIgotCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgotI2luY2x1
ZGUgIldlYkljb25EYXRhYmFzZU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2ViSWNvbkRhdGFiYXNl
UHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNpbmNsdWRlICJXZWJQ
cm9jZXNzUHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViSWNvbkRhdGFiYXNlUHJveHk6On5XZWJJ
Y29uRGF0YWJhc2VQcm94eSgpCi17Ci19Ci0KLVdlYkljb25EYXRhYmFzZVByb3h5OjpXZWJJY29u
RGF0YWJhc2VQcm94eShXZWJQcm9jZXNzJiBwcm9jZXNzKQotICAgIDogbV9wcm9jZXNzKHByb2Nl
c3MpCi17Ci0gICAgbV9wcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSWNv
bkRhdGFiYXNlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOwotfQotCi1ib29s
IFdlYkljb25EYXRhYmFzZVByb3h5Ojppc0VuYWJsZWQoKSBjb25zdAotewotICAgIHJldHVybiBt
X2lzRW5hYmxlZDsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2VQcm94eTo6c2V0RW5hYmxlZChi
b29sIGVuYWJsZWQpCi17Ci0gICAgaWYgKGVuYWJsZWQgPT0gbV9pc0VuYWJsZWQpCi0gICAgICAg
IHJldHVybjsKLSAgICAKLSAgICBtX2lzRW5hYmxlZCA9IGVuYWJsZWQ7Ci0gICAgc2V0R2xvYmFs
SWNvbkRhdGFiYXNlKGVuYWJsZWQgPyB0aGlzIDogMCk7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFi
YXNlUHJveHk6OnJldGFpbkljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCkKLXsK
LSAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViUHJvY2Vzc1Byb3h5OjpSZXRhaW5JY29uRm9yUGFnZVVSTChwYWdlVVJMKSwgMCk7Ci19Ci0K
LXZvaWQgV2ViSWNvbkRhdGFiYXNlUHJveHk6OnJlbGVhc2VJY29uRm9yUGFnZVVSTChjb25zdCBT
dHJpbmcmIHBhZ2VVUkwpCi17Ci0gICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6UmVsZWFzZUljb25Gb3JQYWdlVVJM
KHBhZ2VVUkwpLCAwKTsKLX0KLQotSW1hZ2UqIFdlYkljb25EYXRhYmFzZVByb3h5OjpzeW5jaHJv
bm91c0ljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgY29uc3QgSW50U2l6ZSYg
LypzaXplKi8pCi17Ci0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdDsKLSAgICBpZiAoIW1f
cHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
SWNvbkRhdGFiYXNlOjpTeW5jaHJvbm91c0ljb25EYXRhRm9yUGFnZVVSTChwYWdlVVJMKSwgTWVz
c2FnZXM6OldlYkljb25EYXRhYmFzZTo6U3luY2hyb25vdXNJY29uRGF0YUZvclBhZ2VVUkw6OlJl
cGx5KHJlc3VsdCksIDApKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICAvLyBGSVhNRTog
UmV0dXJuIEltYWdlIGNyZWF0ZWQgd2l0aCB0aGUgYWJvdmUgZGF0YS4KLSAgICByZXR1cm4gMDsK
LX0KLQotCi1TdHJpbmcgV2ViSWNvbkRhdGFiYXNlUHJveHk6OnN5bmNocm9ub3VzSWNvblVSTEZv
clBhZ2VVUkwoY29uc3QgU3RyaW5nJiAvKnBhZ2VVUkwqLykKLXsKLSAgICAvLyBGSVhNRTogVGhp
cyBuZWVkcyB0byBhc2sgdGhlIFVJIHByb2Nlc3MgZm9yIHRoZSBpY29uVVJMLCBidXQgaXQgY2Fu
J3QgZG8gc28gc3luY2hyb25vdXNseSBiZWNhdXNlIGl0IHdpbGwgc2xvdyBkb3duIHBhZ2UgbG9h
ZGluZy4KLSAgICAvLyBUaGUgcGFydHMgaW4gV2ViQ29yZSB0aGF0IG5lZWQgdGhpcyBkYXRhIHdp
bGwgaGF2ZSB0byBiZSBjaGFuZ2VkIHRvIHdvcmsgYXN5Y25jaHJvbm91c2x5LgotICAgIHJldHVy
biBTdHJpbmcoKTsKLX0KLQotYm9vbCBXZWJJY29uRGF0YWJhc2VQcm94eTo6c3luY2hyb25vdXNJ
Y29uRGF0YUtub3duRm9ySWNvblVSTChjb25zdCBTdHJpbmcmIC8qaWNvblVSTCovKQotewotICAg
IC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGFzayB0aGUgVUkgcHJvY2VzcyBmb3IgdGhlIGljb25V
UkwsIGJ1dCBpdCBjYW4ndCBkbyBzbyBzeW5jaHJvbm91c2x5IGJlY2F1c2UgaXQgd2lsbCBzbG93
IGRvd24gcGFnZSBsb2FkaW5nLgotICAgIC8vIFRoZSBwYXJ0cyBpbiBXZWJDb3JlIHRoYXQgbmVl
ZCB0aGlzIGRhdGEgd2lsbCBoYXZlIHRvIGJlIGNoYW5nZWQgdG8gd29yayBhc3ljbmNocm9ub3Vz
bHkuCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1JY29uTG9hZERlY2lzaW9uIFdlYkljb25EYXRh
YmFzZVByb3h5OjpzeW5jaHJvbm91c0xvYWREZWNpc2lvbkZvckljb25VUkwoY29uc3QgU3RyaW5n
JiAvKmljb25VUkwqLywgRG9jdW1lbnRMb2FkZXIqKQotewotICAgIC8vIEZJWE1FOiBUaGlzIG5l
ZWRzIHRvIGFzayB0aGUgVUkgcHJvY2VzcyBmb3IgdGhlIGljb25VUkwsIGJ1dCBpdCBjYW4ndCBk
byBzbyBzeW5jaHJvbm91c2x5IGJlY2F1c2UgaXQgd2lsbCBzbG93IGRvd24gcGFnZSBsb2FkaW5n
LgotICAgIC8vIFRoZSBwYXJ0cyBpbiBXZWJDb3JlIHRoYXQgbmVlZCB0aGlzIGRhdGEgd2lsbCBo
YXZlIHRvIGJlIGNoYW5nZWQgdG8gd29yayBhc3ljbmNocm9ub3VzbHkuCi0gICAgcmV0dXJuIElj
b25Mb2FkTm87Ci19Ci0KLWJvb2wgV2ViSWNvbkRhdGFiYXNlUHJveHk6OnN1cHBvcnRzQXN5bmNo
cm9ub3VzTW9kZSgpCi17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFi
YXNlUHJveHk6OmxvYWREZWNpc2lvbkZvckljb25VUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBX
ZWJDb3JlOjpJY29uTG9hZERlY2lzaW9uQ2FsbGJhY2smIGNhbGxiYWNrKQotewotICAgIHVpbnQ2
NF90IGlkID0gY2FsbGJhY2suY2FsbGJhY2tJRCgpOwotICAgIG1faWNvbkxvYWREZWNpc2lvbkNh
bGxiYWNrcy5hZGQoaWQsICZjYWxsYmFjayk7Ci0gICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkljb25EYXRhYmFzZTo6R2V0TG9hZERlY2lz
aW9uRm9ySWNvblVSTChpY29uVVJMLCBpZCksIDApOwotfQotCi12b2lkIFdlYkljb25EYXRhYmFz
ZVByb3h5OjpyZWNlaXZlZEljb25Mb2FkRGVjaXNpb24oaW50IGRlY2lzaW9uLCB1aW50NjRfdCBj
YWxsYmFja0lEKQotewotICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9pY29uTG9hZERlY2lzaW9u
Q2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCkpCi0gICAgICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2Fs
bGJhY2soc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SWNvbkxvYWREZWNpc2lvbj4oZGVjaXNpb24pKTsK
LX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2VQcm94eTo6aWNvbkRhdGFGb3JJY29uVVJMKGNvbnN0
IFN0cmluZyYsIFdlYkNvcmU6Okljb25EYXRhQ2FsbGJhY2smKQotewotfQotCi12b2lkIFdlYklj
b25EYXRhYmFzZVByb3h5OjpzZXRJY29uVVJMRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIGljb25V
UkwsIGNvbnN0IFN0cmluZyYgcGFnZVVSTCkKLXsKLSAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSWNvbkRhdGFiYXNlOjpTZXRJY29uVVJM
Rm9yUGFnZVVSTChpY29uVVJMLCBwYWdlVVJMKSwgMCk7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFi
YXNlUHJveHk6OnNldEljb25EYXRhRm9ySWNvblVSTChTaGFyZWRCdWZmZXIqIGljb25EYXRhLCBj
b25zdCBTdHJpbmcmIGljb25VUkwpCi17Ci0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEocmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaWNvbkRhdGEgPyBpY29uRGF0YS0+ZGF0YSgp
IDogbnVsbHB0ciksIGljb25EYXRhID8gaWNvbkRhdGEtPnNpemUoKSA6IDApOwotICAgIG1fcHJv
Y2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJY29uRGF0
YWJhc2U6OlNldEljb25EYXRhRm9ySWNvblVSTChkYXRhLCBpY29uVVJMKSwgMCk7Ci19Ci0KLXZv
aWQgV2ViSWNvbkRhdGFiYXNlUHJveHk6OnVybEltcG9ydEZpbmlzaGVkKCkKLXsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SWNvbkRhdGFiYXNlL1dlYkljb25EYXRhYmFzZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSWNvbkRhdGFiYXNlL1dlYkljb25EYXRhYmFzZVByb3h5LmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDBhMjBkMzQ0M2MwLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSWNvbkRhdGFiYXNlL1dlYkljb25EYXRhYmFzZVByb3h5LmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
bmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL0ljb25EYXRhYmFzZUJhc2UuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNz
IFdlYlByb2Nlc3M7Ci0KLWNsYXNzIFdlYkljb25EYXRhYmFzZVByb3h5IGZpbmFsIDogcHVibGlj
IFdlYkNvcmU6Okljb25EYXRhYmFzZUJhc2UsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIg
ewotcHVibGljOgotICAgIGV4cGxpY2l0IFdlYkljb25EYXRhYmFzZVByb3h5KFdlYlByb2Nlc3Mm
KTsKLSAgICB2aXJ0dWFsIH5XZWJJY29uRGF0YWJhc2VQcm94eSgpOwotCi0gICAgdm9pZCBzZXRF
bmFibGVkKGJvb2wpIGZpbmFsOwotCi1wcml2YXRlOgotICAgIGJvb2wgaXNFbmFibGVkKCkgY29u
c3QgZmluYWw7Ci0KLSAgICB2b2lkIHJldGFpbkljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYp
IGZpbmFsOwotICAgIHZvaWQgcmVsZWFzZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpIGZp
bmFsOwotICAgIHZvaWQgc2V0SWNvblVSTEZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCBzZXRJY29uRGF0YUZvckljb25VUkwoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJikgZmluYWw7Ci0KLSAgICBTdHJpbmcgc3luY2hy
b25vdXNJY29uVVJMRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICBib29sIHN5
bmNocm9ub3VzSWNvbkRhdGFLbm93bkZvckljb25VUkwoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0g
ICAgV2ViQ29yZTo6SWNvbkxvYWREZWNpc2lvbiBzeW5jaHJvbm91c0xvYWREZWNpc2lvbkZvcklj
b25VUkwoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSBmaW5hbDsKLSAg
ICBXZWJDb3JlOjpJbWFnZSogc3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcm
LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgZmluYWw7Ci0gICAgCi0gICAgYm9vbCBzdXBwb3J0
c0FzeW5jaHJvbm91c01vZGUoKSBmaW5hbDsKLSAgICB2b2lkIGxvYWREZWNpc2lvbkZvckljb25V
UkwoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6SWNvbkxvYWREZWNpc2lvbkNhbGxiYWNrJikgZmlu
YWw7Ci0gICAgdm9pZCByZWNlaXZlZEljb25Mb2FkRGVjaXNpb24oaW50IGRlY2lzaW9uLCB1aW50
NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGljb25EYXRhRm9ySWNvblVSTChjb25zdCBTdHJp
bmcmLCBXZWJDb3JlOjpJY29uRGF0YUNhbGxiYWNrJikgZmluYWw7Ci0KLSAgICAvLyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlcgotICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0gICAgCi0gICAgLy8gQ2FsbGJhY2tzIGZyb20gdGhl
IFVJUHJvY2VzcwotICAgIHZvaWQgdXJsSW1wb3J0RmluaXNoZWQoKTsKLQotICAgIGJvb2wgbV9p
c0VuYWJsZWQgeyBmYWxzZSB9OwotICAgIFdlYlByb2Nlc3MmIG1fcHJvY2VzczsKLSAgICAKLSAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViQ29yZTo6SWNvbkxvYWREZWNpc2lvbkNhbGxi
YWNrPj4gbV9pY29uTG9hZERlY2lzaW9uQ2FsbGJhY2tzOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSWNvbkRhdGFiYXNl
L1dlYkljb25EYXRhYmFzZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0ljb25EYXRhYmFzZS9XZWJJY29uRGF0YWJhc2VQcm94eS5tZXNzYWdlcy5pbgpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQ5YTBkOTE4NDYuLjAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JY29uRGF0YWJhc2UvV2ViSWNvbkRhdGFiYXNlUHJveHku
bWVzc2FnZXMuaW4KKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0jIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0j
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLW1lc3NhZ2VzIC0+IFdlYkljb25EYXRhYmFzZVBy
b3h5IHsKLSAgICBVUkxJbXBvcnRGaW5pc2hlZCgpCi0gICAgUmVjZWl2ZWRJY29uTG9hZERlY2lz
aW9uKGludCBsb2FkRGVjaXNpb24sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi19CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCAyY2ZjZmNlMGM1NC4uMDE0ZjQ3M2I5NzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtNDgsNyArNDgsNiBAQAogI2luY2x1ZGUg
IldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyLmgiCi0jaW5jbHVkZSAiV2ViSWNvbkRhdGFiYXNl
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlLmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cFByb3h5LmgiCkBAIC0xNzkyLDEx
ICsxNzkxLDYgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVzdG9yZVNjcm9sbFBv
c2l0aW9uKCkKICAgICB3ZWJQYWdlLT5kaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKTsKIH0KIAot
Ym9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXNlSWNvbkxvYWRpbmdDbGllbnQoKQotewotICAg
IHJldHVybiBtX3VzZUljb25Mb2FkaW5nQ2xpZW50OwotfQotCiB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdl
YkNvcmU6OkxpbmtJY29uJiwgdWludDY0X3Q+PiYgaWNvbnMpCiB7CiAgICAgYXV0byogd2ViUGFn
ZSA9IG1fZnJhbWUtPnBhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNjU1
YjBiZDVhN2IuLmVhZjI5OGRkYzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAt
MjU2LDcgKzI1Niw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZFJlc3RvcmVTY3JvbGxQb3Np
dGlvbigpIGZpbmFsOwogCi0gICAgYm9vbCB1c2VJY29uTG9hZGluZ0NsaWVudCgpIGZpbmFsOwog
ICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxX
ZWJDb3JlOjpMaW5rSWNvbiYsIHVpbnQ2NF90Pj4mKSBmaW5hbDsKICAgICB2b2lkIGZpbmlzaGVk
TG9hZGluZ0ljb24odWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXIqKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmlu
ZGV4IGY2MWI3NzM5NjIwLi4zZWM0M2IyYWRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcApAQCAtNTEsNyArNTEsNiBAQAogI2luY2x1ZGUgIldlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJXZWJHYW1lcGFkUHJvdmlkZXIuaCIKICNpbmNsdWRl
ICJXZWJHZW9sb2NhdGlvbk1hbmFnZXIuaCIKLSNpbmNsdWRlICJXZWJJY29uRGF0YWJhc2VQcm94
eS5oIgogI2luY2x1ZGUgIldlYkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiV2ViTWVkaWFL
ZXlTdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYk1lbW9yeVNhbXBsZXIuaCIKQEAgLTg4
LDcgKzg3LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0dDQ29udHJvbGxlci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvR2x5cGhQYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MTWVkaWFFbGVtZW50
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JY29uRGF0YWJhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0pTRE9NV2luZG93Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MYW5ndWFnZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvTWFpbkZyYW1lLmg+CkBAIC0xNjMsNyArMTYxLDYgQEAgV2ViUHJvY2Vzczo6V2Vi
UHJvY2VzcygpCiAgICAgLCBtX3ZpZXdVcGRhdGVEaXNwYXRjaGVyKFZpZXdVcGRhdGVEaXNwYXRj
aGVyOjpjcmVhdGUoKSkKICNlbmRpZgogICAgICwgbV93ZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNw
YXRjaGVyKFdlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXI6OmNyZWF0ZSgpKQotICAgICwg
bV9pY29uRGF0YWJhc2VQcm94eSgqbmV3IFdlYkljb25EYXRhYmFzZVByb3h5KCp0aGlzKSkKICAg
ICAsIG1fd2ViTG9hZGVyU3RyYXRlZ3koKm5ldyBXZWJMb2FkZXJTdHJhdGVneSkKICAgICAsIG1f
ZG5zUHJlZmV0Y2hIeXN0ZXJlcmlzKFt0aGlzXShIeXN0ZXJlc2lzU3RhdGUgc3RhdGUpIHsgaWYg
KHN0YXRlID09IEh5c3RlcmVzaXNTdGF0ZTo6U3RvcHBlZCkgbV9kbnNQcmVmZXRjaGVkSG9zdHMu
Y2xlYXIoKTsgfSkKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKQEAgLTMwMCwxMCAr
Mjk3LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBhdXRvJiBkYXRhYmFzZU1hbmFn
ZXIgPSBEYXRhYmFzZU1hbmFnZXI6OnNpbmdsZXRvbigpOwogICAgIGRhdGFiYXNlTWFuYWdlci5p
bml0aWFsaXplKHBhcmFtZXRlcnMud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkpOwogCi0jaWYgRU5B
QkxFKElDT05EQVRBQkFTRSkKLSAgICBtX2ljb25EYXRhYmFzZVByb3h5LnNldEVuYWJsZWQocGFy
YW1ldGVycy5pY29uRGF0YWJhc2VFbmFibGVkKTsKLSNlbmRpZgotCiAgICAgLy8gRklYTUU6IFRo
aXMgc2hvdWxkIGJlIGNvbnN0cnVjdGVkIHBlciBkYXRhIHN0b3JlLCBub3QgcGVyIHByb2Nlc3Mu
CiAgICAgbV9hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSA9IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpjcmVhdGUocGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LCBwYXJhbWV0ZXJz
LmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUpOwogI2lmIFBMQVRGT1JN
KElPUykKQEAgLTEwMTUsMTIgKzEwMDgsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OmdldFdlYkNvcmVT
dGF0aXN0aWNzKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgZGF0YS5zdGF0aXN0aWNzTnVtYmVy
cy5zZXQoQVNDSUlMaXRlcmFsKCJGYXN0TWFsbG9jQ29tbWl0dGVkVk1CeXRlcyIpLCBmYXN0TWFs
bG9jU3RhdGlzdGljcy5jb21taXR0ZWRWTUJ5dGVzKTsKICAgICBkYXRhLnN0YXRpc3RpY3NOdW1i
ZXJzLnNldChBU0NJSUxpdGVyYWwoIkZhc3RNYWxsb2NGcmVlTGlzdEJ5dGVzIiksIGZhc3RNYWxs
b2NTdGF0aXN0aWNzLmZyZWVMaXN0Qnl0ZXMpOwogICAgIAotICAgIC8vIEdhdGhlciBpY29uIHN0
YXRpc3RpY3MuCi0gICAgZGF0YS5zdGF0aXN0aWNzTnVtYmVycy5zZXQoQVNDSUlMaXRlcmFsKCJJ
Y29uUGFnZVVSTE1hcHBpbmdDb3VudCIpLCBpY29uRGF0YWJhc2UoKS5wYWdlVVJMTWFwcGluZ0Nv
dW50KCkpOwotICAgIGRhdGEuc3RhdGlzdGljc051bWJlcnMuc2V0KEFTQ0lJTGl0ZXJhbCgiSWNv
blJldGFpbmVkUGFnZVVSTENvdW50IiksIGljb25EYXRhYmFzZSgpLnJldGFpbmVkUGFnZVVSTENv
dW50KCkpOwotICAgIGRhdGEuc3RhdGlzdGljc051bWJlcnMuc2V0KEFTQ0lJTGl0ZXJhbCgiSWNv
blJlY29yZENvdW50IiksIGljb25EYXRhYmFzZSgpLmljb25SZWNvcmRDb3VudCgpKTsKLSAgICBk
YXRhLnN0YXRpc3RpY3NOdW1iZXJzLnNldChBU0NJSUxpdGVyYWwoIkljb25zV2l0aERhdGFDb3Vu
dCIpLCBpY29uRGF0YWJhc2UoKS5pY29uUmVjb3JkQ291bnRXaXRoRGF0YSgpKTsKLSAgICAKICAg
ICAvLyBHYXRoZXIgZm9udCBzdGF0aXN0aWNzLgogICAgIGF1dG8mIGZvbnRDYWNoZSA9IEZvbnRD
YWNoZTo6c2luZ2xldG9uKCk7CiAgICAgZGF0YS5zdGF0aXN0aWNzTnVtYmVycy5zZXQoQVNDSUlM
aXRlcmFsKCJDYWNoZWRGb250RGF0YUNvdW50IiksIGZvbnRDYWNoZS5mb250Q291bnQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBjYTIzZTZmZmFhMy4uMDZlZDEw
NDg2MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtODIsNyArODIs
NiBAQCBjbGFzcyBXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXk7CiBjbGFzcyBXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5OwogY2xhc3MgV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzOwogY2xhc3MgV2Vi
RnJhbWU7Ci1jbGFzcyBXZWJJY29uRGF0YWJhc2VQcm94eTsKIGNsYXNzIFdlYkxvYWRlclN0cmF0
ZWd5OwogY2xhc3MgV2ViUGFnZTsKIGNsYXNzIFdlYlBhZ2VHcm91cFByb3h5OwpAQCAtMzc2LDgg
KzM3NSw2IEBAIHByaXZhdGU6CiAKICAgICBUZXh0Q2hlY2tlclN0YXRlIG1fdGV4dENoZWNrZXJT
dGF0ZTsKIAotICAgIFdlYkljb25EYXRhYmFzZVByb3h5JiBtX2ljb25EYXRhYmFzZVByb3h5Owot
CiAgICAgdm9pZCBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKICAgICBSZWZQdHI8
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uPiBtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsKICAg
ICBXZWJMb2FkZXJTdHJhdGVneSYgbV93ZWJMb2FkZXJTdHJhdGVneTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316035</attachid>
            <date>2017-07-20 16:04:24 -0700</date>
            <delta_ts>2017-07-20 20:32:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>84017</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0
L0NNYWtlTGlzdHMudHh0CmluZGV4IGQzMGEwYmZiYjdkLi4zMzAyMjNlYTBhNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtl
TGlzdHMudHh0CkBAIC0zMTEsOCArMzExLDYgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJ
UHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKICAgICBVSVByb2Nlc3MvV2Vi
R2VvbG9jYXRpb25Qcm92aWRlci5jcHAKICAgICBVSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5j
cHAKLSAgICBVSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmNwcAotICAgIFVJUHJvY2Vzcy9XZWJJ
Y29uRGF0YWJhc2VDbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNw
cAogICAgIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JVdGlsaXRpZXMuY3BwCiAgICAgVUlQcm9jZXNz
L1dlYk5hdmlnYXRpb25TdGF0ZS5jcHAKQEAgLTQ2Myw4ICs0NjEsNiBAQCBzZXQoV2ViS2l0Ml9T
T1VSQ0VTCiAgICAgV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlci5jcHAKICAgICBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0
aW9uTWFuYWdlci5jcHAKIAotICAgIFdlYlByb2Nlc3MvSWNvbkRhdGFiYXNlL1dlYkljb25EYXRh
YmFzZVByb3h5LmNwcAotCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFj
a0ZvcndhcmRMaXN0LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcApAQCAtNjE2LDcgKzYxMiw2IEBAIHNldChXZWJL
aXQyX01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94
eS5tZXNzYWdlcy5pbgogICAgIFVJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Lm1l
c3NhZ2VzLmluCiAgICAgVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lm1lc3Nh
Z2VzLmluCi0gICAgVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5tZXNzYWdlcy5pbgogICAgIFVJ
UHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgogICAgIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KICAgICBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1l
c3NhZ2VzLmluCkBAIC02NTIsOCArNjQ3LDYgQEAgc2V0KFdlYktpdDJfTUVTU0FHRVNfSU5fRklM
RVMKIAogICAgIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1l
c3NhZ2VzLmluCiAKLSAgICBXZWJQcm9jZXNzL0ljb25EYXRhYmFzZS9XZWJJY29uRGF0YWJhc2VQ
cm94eS5tZXNzYWdlcy5pbgotCiAgICAgV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENN
b25pdG9yLm1lc3NhZ2VzLmluCiAgICAgV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENS
ZXNvbHZlci5tZXNzYWdlcy5pbgogICAgIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRD
U29ja2V0Lm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVkNTNiMjgzMTMwLi5kODQ1ZjU2YzZkZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw3OCBAQAorMjAxNy0wNy0yMCAgQnJhZHkgRWlkc29uICA8YmVp
ZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0IHJpZCBvZiBJY29uRGF0YWJhc2UgcmVsYXRl
ZCBjb2RlIGluIFdlYktpdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NDY5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgbGVhdmVzIHRoZSBDLUFQSSBjbGFzcyBidXQgZ3V0cyBpdC4KKworICAg
ICAgICBObyBleHBsYW5hdGlvbnMgb2YgdGhlIG90aGVyIGNoYW5nZXMgYXJlIG5lZWRlZC4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6
CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgIChXS0NvbnRleHRHZXRJY29u
RGF0YWJhc2UpOgorICAgICAgICAoV0tDb250ZXh0U2V0SWNvbkRhdGFiYXNlUGF0aCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdLSWNv
bkRhdGFiYXNlU2V0SWNvbkRhdGFiYXNlQ2xpZW50KToKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNl
UmV0YWluSWNvbkZvclVSTCk6CisgICAgICAgIChXS0ljb25EYXRhYmFzZVJlbGVhc2VJY29uRm9y
VVJMKToKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNlU2V0SWNvbkRhdGFGb3JJY29uVVJMKToKKyAg
ICAgICAgKFdLSWNvbkRhdGFiYXNlU2V0SWNvblVSTEZvclBhZ2VVUkwpOgorICAgICAgICAoV0tJ
Y29uRGF0YWJhc2VDb3B5SWNvblVSTEZvclBhZ2VVUkwpOgorICAgICAgICAoV0tJY29uRGF0YWJh
c2VDb3B5SWNvbkRhdGFGb3JQYWdlVVJMKToKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNlRW5hYmxl
RGF0YWJhc2VDbGVhbnVwKToKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNlUmVtb3ZlQWxsSWNvbnMp
OgorICAgICAgICAoV0tJY29uRGF0YWJhc2VDaGVja0ludGVncml0eUJlZm9yZU9wZW5pbmcpOgor
ICAgICAgICAoV0tJY29uRGF0YWJhc2VDbG9zZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L2NnL1dLSWNvbkRhdGFiYXNlQ0cuY3BwOgorICAgICAgICAoV0tJY29uRGF0YWJhc2VUcnlHZXRD
R0ltYWdlRm9yVVJMKToKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNlVHJ5Q29weUNHSW1hZ2VBcnJh
eUZvclVSTCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1bHRJY29u
RGF0YWJhc2VQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSWNvbkRhdGFi
YXNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmg6
CisgICAgICAgIChXZWJLaXQ6OldlYkljb25EYXRhYmFzZTo6Y2xlYXJQcm9jZXNzUG9vbCk6IERl
bGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5tZXNzYWdlcy5pbjog
UmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlQ2xpZW50Lmg6IFJl
bW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6bV9oaWRkZW5QYWdlVGhyb3R0bGluZ1RpbWVyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6On5XZWJQcm9jZXNzUG9vbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpzZXRBbnlQYWdlR3JvdXBNaWdodEhhdmVQcml2YXRlQnJvd3NpbmdFbmFibGVk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0SWNvbkRhdGFiYXNlUGF0aCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjppY29uRGF0YWJhc2VQ
YXRoKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2lsbFNodXREb3duKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5OjpyZXRhaW5JY29uRm9yUGFnZVVSTCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cmVsZWFzZUljb25Gb3JQYWdlVVJMKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpyZWxlYXNlUmVtYWluaW5nSWNv
bnNGb3JQYWdlVVJMcyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46
CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1bHRJY29uRGF0YWJhc2VQYXRo
KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NQb29sV1BFLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdEljb25E
YXRhYmFzZVBhdGgpOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvSWNvbkRhdGFiYXNlL1dlYkljb25EYXRh
YmFzZVByb3h5LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0ljb25EYXRhYmFz
ZS9XZWJJY29uRGF0YWJhc2VQcm94eS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SWNvbkRhdGFiYXNlL1dlYkljb25EYXRhYmFzZVByb3h5Lm1lc3NhZ2VzLmluOiBSZW1vdmVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6dXNlSWNvbkxvYWRp
bmdDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpnZXRXZWJDb3JlU3RhdGlzdGljcyk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmg6CisKIDIwMTctMDctMTkgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0cyBub3QgdXBk
YXRlZCBmb3IgcHJvZ3JhbW1hdGljIHNjcm9sbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpp
bmRleCA4M2FkMGU4YTU3OC4uMTliNDJmOWRiYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1h
a2UKQEAgLTE0Miw4ICsxNDIsNiBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eSBcCiAgICAgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50IFwKICAg
ICBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIgXAotICAgIFdlYkljb25EYXRhYmFzZSBcCi0gICAg
V2ViSWNvbkRhdGFiYXNlUHJveHkgXAogICAgIFdlYkluc3BlY3RvciBcCiAgICAgV2ViSW5zcGVj
dG9ySW50ZXJydXB0RGlzcGF0Y2hlciBcCiAgICAgV2ViSW5zcGVjdG9yUHJveHkgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cAppbmRleCA0MzU4ZTc2NTNkNi4uMzE0NzFiYjllZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC04OSw3ICs4
OSw2IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5j
b2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHNob3VsZFVzZUZvbnRTbW9vdGhp
bmc7CiAgICAgZW5jb2RlciA8PCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDsKICAgICBl
bmNvZGVyIDw8IGZvbnRXaGl0ZWxpc3Q7Ci0gICAgZW5jb2RlciA8PCBpY29uRGF0YWJhc2VFbmFi
bGVkOwogICAgIGVuY29kZXIgPDwgdGVybWluYXRpb25UaW1lb3V0OwogICAgIGVuY29kZXIgPDwg
bGFuZ3VhZ2VzOwogICAgIGVuY29kZXIgPDwgdGV4dENoZWNrZXJTdGF0ZTsKQEAgLTIzMiw4ICsy
MzEsNiBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIsIFdlYlByb2Nlc3NDcmVhdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmZvbnRXaGl0ZWxpc3QpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmljb25E
YXRhYmFzZUVuYWJsZWQpKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYXJhbWV0ZXJzLnRlcm1pbmF0aW9uVGltZW91dCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMubGFuZ3VhZ2VzKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aAppbmRleCBjNWQyOTFiM2Y3Mi4uOWMxMThmZDNiMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTExNyw3ICsxMTcs
NiBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgYm9vbCBzaG91
bGRTdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxlciB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91
bGRVc2VGb250U21vb3RoaW5nIHsgdHJ1ZSB9OwogICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgaWNvbkRhdGFiYXNlRW5hYmxlZCB7IGZh
bHNlIH07CiAgICAgYm9vbCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkIHsgZmFsc2UgfTsKICAg
ICBib29sIG1lbW9yeUNhY2hlRGlzYWJsZWQgeyBmYWxzZSB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAppbmRleCAwNjVlZjgxMmNjYS4uYTUwMTliMjUy
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApAQCAt
NDAsNyArNDAsNiBAQAogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiV2ViQ2Vy
dGlmaWNhdGVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50
LmgiCi0jaW5jbHVkZSAiV2ViSWNvbkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bv
b2wuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CkBAIC00MTksOSArNDE4LDkgQEAgV0tHZW9sb2NhdGlvbk1hbmFnZXJSZWYgV0tDb250
ZXh0R2V0R2VvbG9jYXRpb25NYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQogICAgIHJl
dHVybiB0b0FQSSh0b0ltcGwoY29udGV4dFJlZiktPnN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk+KCkpOwogfQogCi1XS0ljb25EYXRhYmFzZVJlZiBXS0NvbnRleHRHZXRJY29u
RGF0YWJhc2UoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCitXS0ljb25EYXRhYmFzZVJlZiBXS0Nv
bnRleHRHZXRJY29uRGF0YWJhc2UoV0tDb250ZXh0UmVmKQogewotICAgIHJldHVybiB0b0FQSSh0
b0ltcGwoY29udGV4dFJlZiktPmljb25EYXRhYmFzZSgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAogV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIFdLQ29udGV4dEdldEtleVZhbHVlU3Rv
cmFnZU1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHQpCkBAIC00NTksOSArNDU4LDggQEAgdm9p
ZCBXS0NvbnRleHRTdG9wTWVtb3J5U2FtcGxlcihXS0NvbnRleHRSZWYgY29udGV4dFJlZikKICAg
ICB0b0ltcGwoY29udGV4dFJlZiktPnN0b3BNZW1vcnlTYW1wbGVyKCk7CiB9CiAKLXZvaWQgV0tD
b250ZXh0U2V0SWNvbkRhdGFiYXNlUGF0aChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tTdHJp
bmdSZWYgaWNvbkRhdGFiYXNlUGF0aCkKK3ZvaWQgV0tDb250ZXh0U2V0SWNvbkRhdGFiYXNlUGF0
aChXS0NvbnRleHRSZWYsIFdLU3RyaW5nUmVmKQogewotICAgIHRvSW1wbChjb250ZXh0UmVmKS0+
c2V0SWNvbkRhdGFiYXNlUGF0aCh0b0ltcGwoaWNvbkRhdGFiYXNlUGF0aCktPnN0cmluZygpKTsK
IH0KIAogdm9pZCBXS0NvbnRleHRBbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3Qo
V0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLQ2VydGlmaWNhdGVJbmZvUmVmIGNlcnRpZmljYXRl
UmVmLCBXS1N0cmluZ1JlZiBob3N0UmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tJY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tJY29uRGF0YWJhc2UuY3BwCmluZGV4IDAxNmZkYzJkZDE1Li4xZjEyNzQwYWQyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tJY29uRGF0YWJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLSWNvbkRhdGFiYXNlLmNw
cApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkFQSURhdGEuaCIKICNpbmNsdWRlICJXS0FQ
SUNhc3QuaCIKICNpbmNsdWRlICJXZWJJY29uRGF0YWJhc2UuaCIKLSNpbmNsdWRlICJXZWJJY29u
RGF0YWJhc2VDbGllbnQuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApAQCAtMzgsNTkg
KzM3LDQ4IEBAIFdLVHlwZUlEIFdLSWNvbkRhdGFiYXNlR2V0VHlwZUlEKCkKICAgICByZXR1cm4g
dG9BUEkoV2ViSWNvbkRhdGFiYXNlOjpBUElUeXBlKTsKIH0KIAotdm9pZCBXS0ljb25EYXRhYmFz
ZVNldEljb25EYXRhYmFzZUNsaWVudChXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2VSZWYs
IGNvbnN0IFdLSWNvbkRhdGFiYXNlQ2xpZW50QmFzZSogd2tDbGllbnQpCit2b2lkIFdLSWNvbkRh
dGFiYXNlU2V0SWNvbkRhdGFiYXNlQ2xpZW50KFdLSWNvbkRhdGFiYXNlUmVmLCBjb25zdCBXS0lj
b25EYXRhYmFzZUNsaWVudEJhc2UqKQogewotICAgIHRvSW1wbChpY29uRGF0YWJhc2VSZWYpLT5z
ZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJJY29uRGF0YWJhc2VDbGllbnQ+KHdrQ2xpZW50
KSk7CiB9CiAKLXZvaWQgV0tJY29uRGF0YWJhc2VSZXRhaW5JY29uRm9yVVJMKFdLSWNvbkRhdGFi
YXNlUmVmIGljb25EYXRhYmFzZVJlZiwgV0tVUkxSZWYgcGFnZVVSTFJlZikKK3ZvaWQgV0tJY29u
RGF0YWJhc2VSZXRhaW5JY29uRm9yVVJMKFdLSWNvbkRhdGFiYXNlUmVmLCBXS1VSTFJlZikKIHsK
LSAgICB0b0ltcGwoaWNvbkRhdGFiYXNlUmVmKS0+cmV0YWluSWNvbkZvclBhZ2VVUkwodG9XVEZT
dHJpbmcocGFnZVVSTFJlZikpOwogfQogCi12b2lkIFdLSWNvbkRhdGFiYXNlUmVsZWFzZUljb25G
b3JVUkwoV0tJY29uRGF0YWJhc2VSZWYgaWNvbkRhdGFiYXNlUmVmLCBXS1VSTFJlZiBwYWdlVVJM
UmVmKQordm9pZCBXS0ljb25EYXRhYmFzZVJlbGVhc2VJY29uRm9yVVJMKFdLSWNvbkRhdGFiYXNl
UmVmLCBXS1VSTFJlZikKIHsKLSAgICB0b0ltcGwoaWNvbkRhdGFiYXNlUmVmKS0+cmVsZWFzZUlj
b25Gb3JQYWdlVVJMKHRvV1RGU3RyaW5nKHBhZ2VVUkxSZWYpKTsKIH0KIAotdm9pZCBXS0ljb25E
YXRhYmFzZVNldEljb25EYXRhRm9ySWNvblVSTChXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJh
c2VSZWYsIFdLRGF0YVJlZiBpY29uRGF0YVJlZiwgV0tVUkxSZWYgaWNvblVSTFJlZikKK3ZvaWQg
V0tJY29uRGF0YWJhc2VTZXRJY29uRGF0YUZvckljb25VUkwoV0tJY29uRGF0YWJhc2VSZWYsIFdL
RGF0YVJlZiwgV0tVUkxSZWYpCiB7Ci0gICAgdG9JbXBsKGljb25EYXRhYmFzZVJlZiktPnNldElj
b25EYXRhRm9ySWNvblVSTCh0b0ltcGwoaWNvbkRhdGFSZWYpLT5kYXRhUmVmZXJlbmNlKCksIHRv
V1RGU3RyaW5nKGljb25VUkxSZWYpKTsKIH0KIAotdm9pZCBXS0ljb25EYXRhYmFzZVNldEljb25V
UkxGb3JQYWdlVVJMKFdLSWNvbkRhdGFiYXNlUmVmIGljb25EYXRhYmFzZVJlZiwgV0tVUkxSZWYg
aWNvblVSTFJlZiwgV0tVUkxSZWYgcGFnZVVSTFJlZikKK3ZvaWQgV0tJY29uRGF0YWJhc2VTZXRJ
Y29uVVJMRm9yUGFnZVVSTChXS0ljb25EYXRhYmFzZVJlZiwgV0tVUkxSZWYsIFdLVVJMUmVmKQog
ewotICAgIHRvSW1wbChpY29uRGF0YWJhc2VSZWYpLT5zZXRJY29uVVJMRm9yUGFnZVVSTCh0b1dU
RlN0cmluZyhpY29uVVJMUmVmKSwgdG9XVEZTdHJpbmcocGFnZVVSTFJlZikpOwogfQogCi1XS1VS
TFJlZiBXS0ljb25EYXRhYmFzZUNvcHlJY29uVVJMRm9yUGFnZVVSTChXS0ljb25EYXRhYmFzZVJl
ZiBpY29uRGF0YWJhc2VSZWYsIFdLVVJMUmVmIHBhZ2VVUkxSZWYpCitXS1VSTFJlZiBXS0ljb25E
YXRhYmFzZUNvcHlJY29uVVJMRm9yUGFnZVVSTChXS0ljb25EYXRhYmFzZVJlZiwgV0tVUkxSZWYp
CiB7Ci0gICAgU3RyaW5nIGljb25VUkxTdHJpbmc7Ci0gICAgdG9JbXBsKGljb25EYXRhYmFzZVJl
ZiktPnN5bmNocm9ub3VzSWNvblVSTEZvclBhZ2VVUkwodG9XVEZTdHJpbmcocGFnZVVSTFJlZiks
IGljb25VUkxTdHJpbmcpOwotICAgIHJldHVybiB0b0NvcGllZFVSTEFQSShpY29uVVJMU3RyaW5n
KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotV0tEYXRhUmVmIFdLSWNvbkRhdGFiYXNlQ29w
eUljb25EYXRhRm9yUGFnZVVSTChXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2VSZWYsIFdL
VVJMUmVmIHBhZ2VVUkwpCitXS0RhdGFSZWYgV0tJY29uRGF0YWJhc2VDb3B5SWNvbkRhdGFGb3JQ
YWdlVVJMKFdLSWNvbkRhdGFiYXNlUmVmLCBXS1VSTFJlZikKIHsKLSAgICByZXR1cm4gdG9BUEko
dG9JbXBsKGljb25EYXRhYmFzZVJlZiktPmljb25EYXRhRm9yUGFnZVVSTCh0b1dURlN0cmluZyhw
YWdlVVJMKSkubGVha1JlZigpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBXS0lj
b25EYXRhYmFzZUVuYWJsZURhdGFiYXNlQ2xlYW51cChXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0
YWJhc2VSZWYpCit2b2lkIFdLSWNvbkRhdGFiYXNlRW5hYmxlRGF0YWJhc2VDbGVhbnVwKFdLSWNv
bkRhdGFiYXNlUmVmKQogewotICAgIHRvSW1wbChpY29uRGF0YWJhc2VSZWYpLT5lbmFibGVEYXRh
YmFzZUNsZWFudXAoKTsKIH0KIAotdm9pZCBXS0ljb25EYXRhYmFzZVJlbW92ZUFsbEljb25zKFdL
SWNvbkRhdGFiYXNlUmVmIGljb25EYXRhYmFzZVJlZikKK3ZvaWQgV0tJY29uRGF0YWJhc2VSZW1v
dmVBbGxJY29ucyhXS0ljb25EYXRhYmFzZVJlZikKIHsKLSAgICB0b0ltcGwoaWNvbkRhdGFiYXNl
UmVmKS0+cmVtb3ZlQWxsSWNvbnMoKTsKIH0KIAotdm9pZCBXS0ljb25EYXRhYmFzZUNoZWNrSW50
ZWdyaXR5QmVmb3JlT3BlbmluZyhXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2VSZWYpCit2
b2lkIFdLSWNvbkRhdGFiYXNlQ2hlY2tJbnRlZ3JpdHlCZWZvcmVPcGVuaW5nKFdLSWNvbkRhdGFi
YXNlUmVmKQogewotICAgIHRvSW1wbChpY29uRGF0YWJhc2VSZWYpLT5jaGVja0ludGVncml0eUJl
Zm9yZU9wZW5pbmcoKTsKIH0KIAotdm9pZCBXS0ljb25EYXRhYmFzZUNsb3NlKFdLSWNvbkRhdGFi
YXNlUmVmIGljb25EYXRhYmFzZVJlZikKK3ZvaWQgV0tJY29uRGF0YWJhc2VDbG9zZShXS0ljb25E
YXRhYmFzZVJlZikKIHsKLSAgICB0b0ltcGwoaWNvbkRhdGFiYXNlUmVmKS0+Y2xvc2UoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL2NhaXJvL1dLSWNvbkRh
dGFiYXNlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvY2Fpcm8vV0tJ
Y29uRGF0YWJhc2VDYWlyby5jcHAKaW5kZXggMTE4YzRkOGNiNzUuLjg3ZWM0MWRmZmVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9jYWlyby9XS0ljb25EYXRhYmFz
ZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9jYWlyby9XS0lj
b25EYXRhYmFzZUNhaXJvLmNwcApAQCAtMzQsNSArMzQsNSBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwogCiBjYWlyb19zdXJmYWNlX3QqIFdLSWNvbkRhdGFiYXNlVHJ5R2V0Q2Fpcm9TdXJmYWNl
Rm9yVVJMKFdLSWNvbkRhdGFiYXNlUmVmIGljb25EYXRhYmFzZSwgV0tVUkxSZWYgdXJsKQogewot
ICAgIHJldHVybiB0b0ltcGwoaWNvbkRhdGFiYXNlKS0+bmF0aXZlSW1hZ2VGb3JQYWdlVVJMKHRv
V1RGU3RyaW5nKHVybCkpLmdldCgpOworCXJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvY2cvV0tJY29uRGF0YWJhc2VDRy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9jZy9XS0ljb25EYXRhYmFzZUNHLmNwcAppbmRl
eCBhMjc5YWY2MjU1Yi4uNGIwNDBkYmMyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL2NnL1dLSWNvbkRhdGFiYXNlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL2NnL1dLSWNvbkRhdGFiYXNlQ0cuY3BwCkBAIC0yNiw3ICsyNiw2IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV0tJY29uRGF0YWJhc2VDRy5oIgogCi0j
aW5jbHVkZSAiV2ViSWNvbkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5j
bHVkZSAiV0tTaGFyZWRBUElDYXN0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZS5oPgpAQCAt
MzQsMjUgKzMzLDEyIEBACiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKLUNHSW1hZ2VSZWYgV0tJY29uRGF0YWJhc2VUcnlHZXRDR0ltYWdlRm9yVVJM
KFdLSWNvbkRhdGFiYXNlUmVmIGljb25EYXRhYmFzZVJlZiwgV0tVUkxSZWYgdXJsUmVmLCBXS1Np
emUgc2l6ZSkKK0NHSW1hZ2VSZWYgV0tJY29uRGF0YWJhc2VUcnlHZXRDR0ltYWdlRm9yVVJMKFdL
SWNvbkRhdGFiYXNlUmVmLCBXS1VSTFJlZiwgV0tTaXplKQogewotICAgIEltYWdlKiBpbWFnZSA9
IHRvSW1wbChpY29uRGF0YWJhc2VSZWYpLT5pbWFnZUZvclBhZ2VVUkwodG9XVEZTdHJpbmcodXJs
UmVmKSk7Ci0gICAgcmV0dXJuIGltYWdlID8gaW1hZ2UtPm5hdGl2ZUltYWdlT2ZTaXplKEludFNp
emUoc3RhdGljX2Nhc3Q8aW50PihzaXplLndpZHRoKSwgc3RhdGljX2Nhc3Q8aW50PihzaXplLmhl
aWdodCkpKS5nZXQoKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUNGQXJy
YXlSZWYgV0tJY29uRGF0YWJhc2VUcnlDb3B5Q0dJbWFnZUFycmF5Rm9yVVJMKFdLSWNvbkRhdGFi
YXNlUmVmIGljb25EYXRhYmFzZVJlZiwgV0tVUkxSZWYgdXJsUmVmKQorQ0ZBcnJheVJlZiBXS0lj
b25EYXRhYmFzZVRyeUNvcHlDR0ltYWdlQXJyYXlGb3JVUkwoV0tJY29uRGF0YWJhc2VSZWYsIFdL
VVJMUmVmKQogewotICAgIEltYWdlKiBpbWFnZSA9IHRvSW1wbChpY29uRGF0YWJhc2VSZWYpLT5p
bWFnZUZvclBhZ2VVUkwodG9XVEZTdHJpbmcodXJsUmVmKSk7Ci0gICAgaWYgKCFpbWFnZSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIG5hdGl2ZUltYWdlcyA9IGltYWdlLT5m
cmFtZXNOYXRpdmVJbWFnZXMoKTsKLSAgICBpZiAoIW5hdGl2ZUltYWdlcy5zaXplKCkpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIAotICAgIENGTXV0YWJsZUFycmF5UmVmIGFycmF5ID0g
Q0ZBcnJheUNyZWF0ZU11dGFibGUobnVsbHB0ciwgbmF0aXZlSW1hZ2VzLnNpemUoKSwgJmtDRlR5
cGVBcnJheUNhbGxCYWNrcyk7Ci0gICAgZm9yIChhdXRvIG5hdGl2ZUltYWdlIDogbmF0aXZlSW1h
Z2VzKQotICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoYXJyYXksIG5hdGl2ZUltYWdlLmdldCgp
KTsKLSAgICAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZBcnJheVJlZj4oYXJyYXkpOworICAg
IHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCAzOGI3NWFhYmVkNy4uMjU4N2Y4ZTkx
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFdlYkNvbnRleHQuY3BwCkBAIC04OTYsMTIgKzg5NiwxMiBAQCB2b2lkIHdlYmtpdF93ZWJfY29u
dGV4dF9zZXRfZmF2aWNvbl9kYXRhYmFzZV9kaXJlY3RvcnkoV2ViS2l0V2ViQ29udGV4dCogY29u
dGV4dAogICAgIC8vIFVzZSBkZWZhdWx0IGlmIDAgaXMgcGFzc2VkIGFzIHBhcmFtZXRlci4KICAg
ICBTdHJpbmcgZGlyZWN0b3J5UGF0aCA9IFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24ocGF0aCk7CiAgICAgcHJpdi0+ZmF2aWNvbkRhdGFiYXNlRGlyZWN0b3J5ID0g
ZGlyZWN0b3J5UGF0aC5pc0VtcHR5KCkKLSAgICAgICAgPyBwcml2LT5wcm9jZXNzUG9vbC0+aWNv
bkRhdGFiYXNlUGF0aCgpLnV0ZjgoKQorICAgICAgICA/ICIiCiAgICAgICAgIDogZGlyZWN0b3J5
UGF0aC51dGY4KCk7CiAKICAgICAvLyBCdWlsZCB0aGUgZnVsbCBwYXRoIHRvIHRoZSBpY29uIGRh
dGFiYXNlIGZpbGUgb24gZGlzay4KICAgICBHVW5pcXVlUHRyPGdjaGFyPiBmYXZpY29uRGF0YWJh
c2VQYXRoKGdfYnVpbGRfZmlsZW5hbWUocHJpdi0+ZmF2aWNvbkRhdGFiYXNlRGlyZWN0b3J5LmRh
dGEoKSwKLSAgICAgICAgV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpkZWZhdWx0RGF0YWJhc2VGaWxl
bmFtZSgpLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIpKTsKKyAgICAgICAgIldlYnBhZ2VJY29ucy5k
YiIsIG51bGxwdHIpKTsKIAogICAgIC8vIFNldHRpbmcgdGhlIHBhdGggd2lsbCBjYXVzZSB0aGUg
aWNvbiBkYXRhYmFzZSB0byBiZSBvcGVuZWQuCiAgICAgd2Via2l0RmF2aWNvbkRhdGFiYXNlT3Bl
bihwcml2LT5mYXZpY29uRGF0YWJhc2UuZ2V0KCksIFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oZmF2aWNvbkRhdGFiYXNlUGF0aC5nZXQoKSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KaW5k
ZXggZDVkNjBiZGE1YWQuLmU1NGUwMmE0NmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTUwNSwxMSArNTA1LDYg
QEAgYm9vbCBXZWJQcm9jZXNzUG9vbDo6aXNOZXR3b3JrQ2FjaGVFbmFibGVkKCkKICNlbmRpZgog
fQogCi1TdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdEljb25EYXRhYmFzZVBh
dGgoKSBjb25zdAotewotICAgIHJldHVybiAiIjsKLX0KLQogYm9vbCBXZWJQcm9jZXNzUG9vbDo6
b21pdFBERlN1cHBvcnQoKQogewogICAgIC8vIFNpbmNlIHRoaXMgaXMgYSAic2VjcmV0IGRlZmF1
bHQiIHdlIGRvbid0IGJvdGhlciByZWdpc3RlcmluZyBpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJJY29uRGF0YWJhc2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBi
NWZkMmUzNzY3ZS4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
SWNvbkRhdGFiYXNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0MiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkljb25EYXRhYmFzZS5oIgot
Ci0jaW5jbHVkZSAiQVBJSWNvbkRhdGFiYXNlQ2xpZW50LmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5o
IgotI2luY2x1ZGUgIldlYkljb25EYXRhYmFzZU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2ViSWNv
bkRhdGFiYXNlUHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCi0j
aW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JY29uRGF0
YWJhc2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9T
aGFyZWRCdWZmZXIuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBX
ZWJLaXQgewotCi1SZWY8V2ViSWNvbkRhdGFiYXNlPiBXZWJJY29uRGF0YWJhc2U6OmNyZWF0ZShX
ZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViSWNvbkRhdGFiYXNlKCpwcm9jZXNzUG9vbCkpOwotfQotCi1XZWJJY29uRGF0YWJhc2U6On5X
ZWJJY29uRGF0YWJhc2UoKQotewotfQotCi1XZWJJY29uRGF0YWJhc2U6OldlYkljb25EYXRhYmFz
ZShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wpCi0gICAgOiBtX3Byb2Nlc3NQb29sKCZwcm9j
ZXNzUG9vbCkKLSAgICAsIG1fdXJsSW1wb3J0Q29tcGxldGVkKGZhbHNlKQotICAgICwgbV9kYXRh
YmFzZUNsZWFudXBEaXNhYmxlZChmYWxzZSkKLSAgICAsIG1fc2hvdWxkRGVyZWZXaGVuQXBwcm9w
cmlhdGUoZmFsc2UpCi0gICAgLCBtX2NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SWNvbkRh
dGFiYXNlQ2xpZW50PigpKQotewotICAgIG1fcHJvY2Vzc1Bvb2wtPmFkZE1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6V2ViSWNvbkRhdGFiYXNlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlz
KTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2U6OmludmFsaWRhdGUoKQotewotICAgIHNldEds
b2JhbEljb25EYXRhYmFzZShudWxscHRyKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2U6OnNl
dERhdGFiYXNlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgaWYgKGlzT3BlbigpKSB7
Ci0gICAgICAgIExPR19FUlJPUigiSWNvbiBkYXRhYmFzZSBhbHJlYWR5IGhhcyBhIHBhdGggYW5k
IGlzIGFscmVhZHkgb3Blbi4gV2UgZG9uJ3QgY3VycmVudGx5IHN1cHBvcnQgY2hhbmdpbmcgaXRz
IHBhdGggYW5kIHJlb3BlbmluZy4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1f
aWNvbkRhdGFiYXNlSW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8SWNvbkRhdGFiYXNlPigpOwotICAg
IG1faWNvbkRhdGFiYXNlSW1wbC0+c2V0Q2xpZW50KHRoaXMpOwotICAgIEljb25EYXRhYmFzZTo6
ZGVsYXlEYXRhYmFzZUNsZWFudXAoKTsKLSAgICBtX2RhdGFiYXNlQ2xlYW51cERpc2FibGVkID0g
dHJ1ZTsKLSAgICBtX2ljb25EYXRhYmFzZUltcGwtPnNldEVuYWJsZWQodHJ1ZSk7Ci0KLSAgICAv
LyBGSVhNRTogV2ViSWNvbkRhdGFiYXNlcyBhcmUgcGVyLVByb2Nlc3NQb29sIGJ1dCBQcm9jZXNz
UG9vbHMncyBkb24ndCBoYXZlIHRoZWlyIG93biBub3Rpb24gb2YgdGhlIGN1cnJlbnQgcHJpdmF0
ZSBicm93c2luZyBzZXR0aW5nLgotICAgIC8vIEFzIHdlIGNsZWFuIHVwIHByaXZhdGUgYnJvd3Np
bmcgdGhyb3VnaG91dCB0aGUgc3RhY2sgd2UgbmVlZCB0byBjbGVhbiBpdCB1cCBoZXJlLgotICAg
IG1faWNvbkRhdGFiYXNlSW1wbC0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChXZWJQcmVmZXJl
bmNlczo6YW55UGFnZXNBcmVVc2luZ1ByaXZhdGVCcm93c2luZygpKTsKLQotICAgIGlmICghbV9p
Y29uRGF0YWJhc2VJbXBsLT5vcGVuKGRpcmVjdG9yeU5hbWUocGF0aCksIHBhdGhHZXRGaWxlTmFt
ZShwYXRoKSkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gb3BlbiBXZWJLaXQyIGlj
b24gZGF0YWJhc2Ugb24gZGlzayIpOwotICAgICAgICBtX2ljb25EYXRhYmFzZUltcGwgPSBudWxs
cHRyOwotICAgICAgICBzZXRHbG9iYWxJY29uRGF0YWJhc2UobnVsbHB0cik7Ci0gICAgICAgIElj
b25EYXRhYmFzZTo6YWxsb3dEYXRhYmFzZUNsZWFudXAoKTsKLSAgICAgICAgbV9kYXRhYmFzZUNs
ZWFudXBEaXNhYmxlZCA9IGZhbHNlOwotICAgIH0KLSAgICBzZXRHbG9iYWxJY29uRGF0YWJhc2Uo
bV9pY29uRGF0YWJhc2VJbXBsLmdldCgpKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2U6OmVu
YWJsZURhdGFiYXNlQ2xlYW51cCgpCi17Ci0gICAgaWYgKCFtX2ljb25EYXRhYmFzZUltcGwpIHsK
LSAgICAgICAgTE9HX0VSUk9SKCJDYW5ub3QgZW5hYmxlZCBJY29uIERhdGFiYXNlIGNsZWFudXAg
LSBpdCBoYXNuJ3QgYmVlbiBvcGVuZWQgeWV0LiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKCFtX2RhdGFiYXNlQ2xlYW51cERpc2FibGVkKSB7Ci0gICAgICAgIExPR19FUlJP
UigiQXR0ZW1wdCB0byBlbmFibGUgZGF0YWJhc2UgY2xlYW51cCwgYnV0IGl0J3MgYWxyZWFkeSBl
bmFibGVkLiIpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIEljb25EYXRhYmFzZTo6YWxsb3dEYXRhYmFzZUNsZWFudXAoKTsKLSAg
ICBtX2RhdGFiYXNlQ2xlYW51cERpc2FibGVkID0gZmFsc2U7Ci19Ci0KLXZvaWQgV2ViSWNvbkRh
dGFiYXNlOjpyZXRhaW5JY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwpCi17Ci0g
ICAgaWYgKG1faWNvbkRhdGFiYXNlSW1wbCkKLSAgICAgICAgbV9pY29uRGF0YWJhc2VJbXBsLT5y
ZXRhaW5JY29uRm9yUGFnZVVSTChwYWdlVVJMKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2U6
OnJlbGVhc2VJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwpCi17Ci0gICAgaWYg
KG1faWNvbkRhdGFiYXNlSW1wbCkKLSAgICAgICAgbV9pY29uRGF0YWJhc2VJbXBsLT5yZWxlYXNl
SWNvbkZvclBhZ2VVUkwocGFnZVVSTCk7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpzZXRJ
Y29uVVJMRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFN0cmluZyYgcGFn
ZVVSTCkKLXsKLSAgICBMT0coSWNvbkRhdGFiYXNlLCAiV0syIFVJUHJvY2VzcyBzZXR0aW5nIGlj
b24gVVJMICVzIGZvciBwYWdlIFVSTCAlcyIsIGljb25VUkwuYXNjaWkoKS5kYXRhKCksIHBhZ2VV
UkwuYXNjaWkoKS5kYXRhKCkpOwotICAgIGlmIChtX2ljb25EYXRhYmFzZUltcGwpCi0gICAgICAg
IG1faWNvbkRhdGFiYXNlSW1wbC0+c2V0SWNvblVSTEZvclBhZ2VVUkwoaWNvblVSTCwgcGFnZVVS
TCk7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpzZXRJY29uRGF0YUZvckljb25VUkwoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBpY29uRGF0YSwgY29uc3QgU3RyaW5nJiBpY29uVVJMKQot
ewotICAgIExPRyhJY29uRGF0YWJhc2UsICJXSzIgVUlQcm9jZXNzIHNldHRpbmcgaWNvbiBkYXRh
ICglaSBieXRlcykgZm9yIHBhZ2UgVVJMICVzIiwgKGludClpY29uRGF0YS5zaXplKCksIGljb25V
UkwuYXNjaWkoKS5kYXRhKCkpOwotICAgIGlmICghbV9pY29uRGF0YWJhc2VJbXBsKQotICAgICAg
ICByZXR1cm47Ci0gICAgbV9pY29uRGF0YWJhc2VJbXBsLT5zZXRJY29uRGF0YUZvckljb25VUkwo
U2hhcmVkQnVmZmVyOjpjcmVhdGUoaWNvbkRhdGEuZGF0YSgpLCBpY29uRGF0YS5zaXplKCkpLnB0
cigpLCBpY29uVVJMKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2U6OnN5bmNocm9ub3VzSWNv
bkRhdGFGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIElQQzo6RGF0YVJlZmVyZW5jZSYgaWNvbkRh
dGEpCi17Ci0gICAgaWNvbkRhdGEgPSBJUEM6OkRhdGFSZWZlcmVuY2UoKTsKLX0KLQotdm9pZCBX
ZWJJY29uRGF0YWJhc2U6OnN5bmNocm9ub3VzSWNvblVSTEZvclBhZ2VVUkwoY29uc3QgU3RyaW5n
JiBwYWdlVVJMLCBTdHJpbmcmIGljb25VUkwpCi17Ci0gICAgaWYgKCFtX2ljb25EYXRhYmFzZUlt
cGwpIHsKLSAgICAgICAgaWNvblVSTCA9IFN0cmluZygpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGljb25VUkwgPSBtX2ljb25EYXRhYmFzZUltcGwtPnN5bmNocm9ub3VzSWNvblVSTEZv
clBhZ2VVUkwocGFnZVVSTCk7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91
c0ljb25EYXRhS25vd25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYsIGJvb2wmIGljb25EYXRhS25v
d24pIGNvbnN0Ci17Ci0gICAgaWNvbkRhdGFLbm93biA9IGZhbHNlOwotfQotCi12b2lkIFdlYklj
b25EYXRhYmFzZTo6c3luY2hyb25vdXNMb2FkRGVjaXNpb25Gb3JJY29uVVJMKGNvbnN0IFN0cmlu
ZyYsIGludCYgbG9hZERlY2lzaW9uKSBjb25zdAotewotICAgIGxvYWREZWNpc2lvbiA9IHN0YXRp
Y19jYXN0PGludD4oSWNvbkxvYWRObyk7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpnZXRM
b2FkRGVjaXNpb25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKLXsKLSAgICBMT0coSWNvbkRhdGFiYXNlLCAiV0syIFVJUHJvY2VzcyBnZXR0aW5n
IGxvYWQgZGVjaXNpb24gZm9yIGljb24gVVJMICVzIHdpdGggY2FsbGJhY2sgSUQgJWxsaSIsIGlj
b25VUkwuYXNjaWkoKS5kYXRhKCksIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oY2FsbGJhY2tJRCkp
OwotCi0gICAgaWYgKCFtX3Byb2Nlc3NQb29sKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAo
IW1faWNvbkRhdGFiYXNlSW1wbCB8fCAhbV9pY29uRGF0YWJhc2VJbXBsLT5pc09wZW4oKSB8fCBp
Y29uVVJMLmlzRW1wdHkoKSkgewotICAgICAgICAvLyBGSVhNRSAoTXVsdGktV2ViUHJvY2Vzcyk6
IDxyZGFyOi8vcHJvYmxlbS8xMjI0MDIyMz4gV2UgbmVlZCB0byBrbm93IHdoaWNoIGNvbm5lY3Rp
b24gdG8gc2VuZCB0aGlzIG1lc3NhZ2UgdG8uCi0gICAgICAgIG1fcHJvY2Vzc1Bvb2wtPnNlbmRU
b0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViSWNvbkRhdGFiYXNlUHJveHk6OlJlY2VpdmVkSWNv
bkxvYWREZWNpc2lvbihzdGF0aWNfY2FzdDxpbnQ+KEljb25Mb2FkTm8pLCBjYWxsYmFja0lEKSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgLy8gSWYgdGhlIGRlY2lzaW9uIGhh
c24ndCBiZWVuIHJlYWQgZnJvbSBkaXNrIHlldCwgc2V0IHRoaXMgdXJsIGFuZCBjYWxsYmFjayBJ
RCBhc2lkZSB0byBiZSBub3RpZmVkIGxhdGVyCi0gICAgSWNvbkxvYWREZWNpc2lvbiBkZWNpc2lv
biA9IG1faWNvbkRhdGFiYXNlSW1wbC0+c3luY2hyb25vdXNMb2FkRGVjaXNpb25Gb3JJY29uVVJM
KGljb25VUkwsIDApOwotICAgIGlmIChkZWNpc2lvbiA9PSBJY29uTG9hZFVua25vd24pIHsKLSAg
ICAgICAgLy8gV2Ugc2hvdWxkIG5ldmVyIGdldCBhbiB1bmtub3duIGxvYWQgZGVjaXNpb24gYWZ0
ZXIgdGhlIFVSTCBpbXBvcnQgaGFzIGNvbXBsZXRlZC4KLSAgICAgICAgQVNTRVJUKCFtX3VybElt
cG9ydENvbXBsZXRlZCk7Ci0gICAgICAgIAotICAgICAgICBtX3BlbmRpbmdMb2FkRGVjaXNpb25V
UkxNYXAuc2V0KGNhbGxiYWNrSUQsIGljb25VUkwpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3MpOiA8cmRhcjovL3Byb2JsZW0vMTIyNDAy
MjM+IFdlIG5lZWQgdG8ga25vdyB3aGljaCBjb25uZWN0aW9uIHRvIHNlbmQgdGhpcyBtZXNzYWdl
IHRvLgotICAgIG1fcHJvY2Vzc1Bvb2wtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2Vi
SWNvbkRhdGFiYXNlUHJveHk6OlJlY2VpdmVkSWNvbkxvYWREZWNpc2lvbigoaW50KWRlY2lzaW9u
LCBjYWxsYmFja0lEKSk7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpkaWRSZWNlaXZlSWNv
bkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMKQotewotICAgIG5vdGlmeUljb25EYXRh
UmVhZHlGb3JQYWdlVVJMKHBhZ2VVUkwpOwotfQotCi1JbWFnZSogV2ViSWNvbkRhdGFiYXNlOjpp
bWFnZUZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBjb25zdCBJbnRTaXplJiBpY29u
U2l6ZSkKLXsKLSAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wgfHwgIW1faWNvbkRhdGFiYXNlSW1wbCB8
fCAhbV9pY29uRGF0YWJhc2VJbXBsLT5pc09wZW4oKSB8fCBwYWdlVVJMLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAvLyBUaGUgV2ViQ29yZSBJY29uRGF0YWJhc2Ug
aWdub3JlcyB0aGUgcGFzc2VkIGluIHNpemUgcGFyYW1ldGVyLgotICAgIC8vIElmIHRoYXQgY2hh
bmdlcyB3ZSdsbCBuZWVkIHRvIHJldGhpbmsgaG93IHRoaXMgQVBJIGlzIGV4cG9zZWQuCi0gICAg
cmV0dXJuIG1faWNvbkRhdGFiYXNlSW1wbC0+c3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChwYWdl
VVJMLCBpY29uU2l6ZSk7Ci19Ci0KLU5hdGl2ZUltYWdlUHRyIFdlYkljb25EYXRhYmFzZTo6bmF0
aXZlSW1hZ2VGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgY29uc3QgSW50U2l6ZSYg
aWNvblNpemUpCi17Ci0gICAgaWYgKCFtX3Byb2Nlc3NQb29sIHx8ICFtX2ljb25EYXRhYmFzZUlt
cGwgfHwgIW1faWNvbkRhdGFiYXNlSW1wbC0+aXNPcGVuKCkgfHwgcGFnZVVSTC5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIG1faWNvbkRhdGFiYXNlSW1w
bC0+c3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChwYWdlVVJMLCBpY29uU2l6ZSk7Ci19
Ci0KLWJvb2wgV2ViSWNvbkRhdGFiYXNlOjppc09wZW4oKQotewotICAgIHJldHVybiBtX2ljb25E
YXRhYmFzZUltcGwgJiYgbV9pY29uRGF0YWJhc2VJbXBsLT5pc09wZW4oKTsKLX0KLQotYm9vbCBX
ZWJJY29uRGF0YWJhc2U6OmlzVXJsSW1wb3J0Q29tcGxldGVkKCkKLXsKLSAgICByZXR1cm4gbV91
cmxJbXBvcnRDb21wbGV0ZWQ7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpyZW1vdmVBbGxJ
Y29ucygpCi17Ci0gICAgbV9pY29uRGF0YWJhc2VJbXBsLT5yZW1vdmVBbGxJY29ucygpOwotfQot
Ci12b2lkIFdlYkljb25EYXRhYmFzZTo6Y2hlY2tJbnRlZ3JpdHlCZWZvcmVPcGVuaW5nKCkKLXsK
LSAgICBJY29uRGF0YWJhc2U6OmNoZWNrSW50ZWdyaXR5QmVmb3JlT3BlbmluZygpOwotfQotCi12
b2lkIFdlYkljb25EYXRhYmFzZTo6Y2xvc2UoKQotewotICAgIGlmIChtX2ljb25EYXRhYmFzZUlt
cGwpCi0gICAgICAgIG1faWNvbkRhdGFiYXNlSW1wbC0+Y2xvc2UoKTsKLX0KLQotdm9pZCBXZWJJ
Y29uRGF0YWJhc2U6OnNldENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJY29uRGF0YWJhc2VD
bGllbnQ+JiYgY2xpZW50KQotewotICAgIGlmICghY2xpZW50KQotICAgICAgICBtX2NsaWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJY29uRGF0YWJhc2VDbGllbnQ+KCk7Ci0gICAgZWxzZQot
ICAgICAgICBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsKLX0KLQotLy8gV2ViQ29yZTo6SWNv
bkRhdGFiYXNlQ2xpZW50Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpkaWRJbXBvcnRJY29uVVJM
Rm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwpCi17Ci0gICAgZGlkQ2hhbmdlSWNvbkZv
clBhZ2VVUkwocGFnZVVSTCk7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpkaWRJbXBvcnRJ
Y29uRGF0YUZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMKQotewotICAgIG5vdGlmeUlj
b25EYXRhUmVhZHlGb3JQYWdlVVJMKHBhZ2VVUkwpOwotfQotCi12b2lkIFdlYkljb25EYXRhYmFz
ZTo6ZGlkQ2hhbmdlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMKQotewotICAg
IG1fY2xpZW50LT5kaWRDaGFuZ2VJY29uRm9yUGFnZVVSTCgqdGhpcywgcGFnZVVSTCk7Ci19Ci0K
LXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpkaWRSZW1vdmVBbGxJY29ucygpCi17Ci0gICAgbV9jbGll
bnQtPmRpZFJlbW92ZUFsbEljb25zKCp0aGlzKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2U6
OmRpZEZpbmlzaFVSTEltcG9ydCgpCi17Ci0gICAgaWYgKCFtX3Byb2Nlc3NQb29sKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBBU1NFUlQoIW1fdXJsSW1wb3J0Q29tcGxldGVkKTsKLQotICAgIExP
RyhJY29uRGF0YWJhc2UsICJXSzIgVUlQcm9jZXNzIFVSTCBpbXBvcnQgY29tcGxldGUsIG5vdGlm
eWluZyBhbGwgJWkgcGVuZGluZyBwYWdlIFVSTCBsb2FkIGRlY2lzaW9ucyIsIG1fcGVuZGluZ0xv
YWREZWNpc2lvblVSTE1hcC5zaXplKCkpOwotICAgIAotICAgIGZvciAoYXV0byYgc2xvdCA6IG1f
cGVuZGluZ0xvYWREZWNpc2lvblVSTE1hcCkgewotICAgICAgICBMT0coSWNvbkRhdGFiYXNlLCAi
V0syIFVJUHJvY2VzcyBwZXJmb3JtaW5nIGRlbGF5ZWQgY2FsbGJhY2sgb24gY2FsbGJhY2sgSUQg
JWkgZm9yIHBhZ2UgdXJsICVzIiwgKGludClzbG90LmtleSwgc2xvdC52YWx1ZS5hc2NpaSgpLmRh
dGEoKSk7Ci0gICAgICAgIEljb25Mb2FkRGVjaXNpb24gZGVjaXNpb24gPSBtX2ljb25EYXRhYmFz
ZUltcGwtPnN5bmNocm9ub3VzTG9hZERlY2lzaW9uRm9ySWNvblVSTChzbG90LnZhbHVlLCBudWxs
cHRyKTsKLQotICAgICAgICAvLyBEZWNpc2lvbnMgc2hvdWxkIG5ldmVyIGJlIHVua25vd24gYWZ0
ZXIgdGhlIGluaXRhbCBpbXBvcnQgaXMgY29tcGxldGUuCi0gICAgICAgIEFTU0VSVChkZWNpc2lv
biAhPSBJY29uTG9hZFVua25vd24pOwotCi0gICAgICAgIC8vIEZJWE1FIChNdWx0aS1XZWJQcm9j
ZXNzKTogPHJkYXI6Ly9wcm9ibGVtLzEyMjQwMjIzPiBXZSBuZWVkIHRvIGtub3cgd2hpY2ggY29u
bmVjdGlvbiB0byBzZW5kIHRoaXMgbWVzc2FnZSB0by4KLSAgICAgICAgbV9wcm9jZXNzUG9vbC0+
c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJJY29uRGF0YWJhc2VQcm94eTo6UmVjZWl2
ZWRJY29uTG9hZERlY2lzaW9uKHN0YXRpY19jYXN0PGludD4oZGVjaXNpb24pLCBzbG90LmtleSkp
OwotICAgIH0KLQotICAgIG1fcGVuZGluZ0xvYWREZWNpc2lvblVSTE1hcC5jbGVhcigpOwotCi0g
ICAgbV91cmxJbXBvcnRDb21wbGV0ZWQgPSB0cnVlOwotfQotCi12b2lkIFdlYkljb25EYXRhYmFz
ZTo6ZGlkQ2xvc2UoKQotewotICAgIGlmICghbV9zaG91bGREZXJlZldoZW5BcHByb3ByaWF0ZSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZGVyZWYoKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJh
c2U6OmRlcmVmV2hlbkFwcHJvcHJpYXRlKCkKLXsKLSAgICBpZiAobV9pY29uRGF0YWJhc2VJbXBs
ICYmIG1faWNvbkRhdGFiYXNlSW1wbC0+aXNPcGVuKCkpIHsKLSAgICAgICAgbV9zaG91bGREZXJl
ZldoZW5BcHByb3ByaWF0ZSA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBk
ZXJlZigpOwotfQotCi12b2lkIFdlYkljb25EYXRhYmFzZTo6bm90aWZ5SWNvbkRhdGFSZWFkeUZv
clBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMKQotewotICAgIG1fY2xpZW50LT5pY29uRGF0
YVJlYWR5Rm9yUGFnZVVSTCgqdGhpcywgcGFnZVVSTCk7Ci0gICAgZGlkQ2hhbmdlSWNvbkZvclBh
Z2VVUkwocGFnZVVSTCk7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpzZXRQcml2YXRlQnJv
d3NpbmdFbmFibGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKLXsKLSAgICBpZiAobV9p
Y29uRGF0YWJhc2VJbXBsKQotICAgICAgICBtX2ljb25EYXRhYmFzZUltcGwtPnNldFByaXZhdGVC
cm93c2luZ0VuYWJsZWQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7Ci19Ci0KLVJlZlB0cjxBUEk6
OkRhdGE+IFdlYkljb25EYXRhYmFzZTo6aWNvbkRhdGFGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYg
cGFnZVVSTCkKLXsKLSAgICBhdXRvKiBpbWFnZSA9IGltYWdlRm9yUGFnZVVSTChwYWdlVVJMKTsK
LSAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIFNoYXJlZEJ1
ZmZlciogc2hhcmVkQnVmZmVyID0gaW1hZ2UtPmRhdGEoKTsKLSAgICBpZiAoIXNoYXJlZEJ1ZmZl
cikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAvLyBCYWxhbmNlZCBieSBkZXJlZigp
IGJlbG93LgotICAgIHNoYXJlZEJ1ZmZlci0+cmVmKCk7Ci0gICAgcmV0dXJuIEFQSTo6RGF0YTo6
Y3JlYXRlV2l0aG91dENvcHlpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFy
Kj4oc2hhcmVkQnVmZmVyLT5kYXRhKCkpLCBzaGFyZWRCdWZmZXItPnNpemUoKSwKLSAgICAgICAg
W10odW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIHVudHlwZWRTaGFyZWRCdWZmZXIpIHsKLSAg
ICAgICAgICAgIC8vIEJhbGFuY2VkIGJ5IHJlZigpIGFib3ZlLgotICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8U2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDx2b2lkKj4odW50eXBlZFNoYXJlZEJ1ZmZl
cikpLT5kZXJlZigpOwotICAgICAgICB9LCBzaGFyZWRCdWZmZXIpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkljb25E
YXRhYmFzZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmgKaW5k
ZXggODcxM2E4YmZkNTMuLmJlYzliZWFmODI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJJY29uRGF0YWJhc2UuaApAQCAtMjMsMTAxICsyMywxMyBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViSWNvbkRhdGFiYXNlX2gKLSNkZWZp
bmUgV2ViSWNvbkRhdGFiYXNlX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCi0jaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIldlYkljb25EYXRhYmFzZUNs
aWVudC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvSWNvbkRhdGFiYXNlQ2xpZW50Lmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9JbnRTaXplLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9OYXRpdmVJbWFnZS5oPgot
Ci1uYW1lc3BhY2UgQVBJIHsKLWNsYXNzIERhdGE7Ci1jbGFzcyBJY29uRGF0YWJhc2VDbGllbnQ7
Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEljb25EYXRhYmFzZTsKLWNsYXNzIElt
YWdlOwotfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7Ci0K
LWNsYXNzIFdlYkljb25EYXRhYmFzZSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmpl
Y3Q6OlR5cGU6Okljb25EYXRhYmFzZT4sIHByaXZhdGUgV2ViQ29yZTo6SWNvbkRhdGFiYXNlQ2xp
ZW50LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFdlYkljb25EYXRhYmFzZT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sKik7Ci0gICAgdmlydHVh
bCB+V2ViSWNvbkRhdGFiYXNlKCk7Ci0KLSAgICB2b2lkIGludmFsaWRhdGUoKTsKLSAgICB2b2lk
IGNsZWFyUHJvY2Vzc1Bvb2woKSB7IG1fcHJvY2Vzc1Bvb2wgPSBudWxscHRyOyB9Ci0gICAgdm9p
ZCBzZXREYXRhYmFzZVBhdGgoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBlbmFibGVEYXRhYmFz
ZUNsZWFudXAoKTsKLQotICAgIHZvaWQgcmV0YWluSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5n
Jik7Ci0gICAgdm9pZCByZWxlYXNlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJik7Ci0gICAg
dm9pZCBzZXRJY29uVVJMRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsK
LSAgICB2b2lkIHNldEljb25EYXRhRm9ySWNvblVSTChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
LCBjb25zdCBTdHJpbmcmKTsKLQotICAgIHZvaWQgc3luY2hyb25vdXNJY29uRGF0YUZvclBhZ2VV
UkwoY29uc3QgU3RyaW5nJiwgSVBDOjpEYXRhUmVmZXJlbmNlJik7Ci0gICAgdm9pZCBzeW5jaHJv
bm91c0ljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIFN0cmluZyYpOwotICAgIHZvaWQg
c3luY2hyb25vdXNJY29uRGF0YUtub3duRm9ySWNvblVSTChjb25zdCBTdHJpbmcmLCBib29sJikg
Y29uc3Q7Ci0gICAgdm9pZCBzeW5jaHJvbm91c0xvYWREZWNpc2lvbkZvckljb25VUkwoY29uc3Qg
U3RyaW5nJiwgaW50JikgY29uc3Q7Ci0KLSAgICB2b2lkIGdldExvYWREZWNpc2lvbkZvckljb25V
UkwoY29uc3QgU3RyaW5nJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJik7Ci0KLSAgICBXZWJDb3JlOjpJbWFnZSog
aW1hZ2VGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGlj
b25TaXplID0gV2ViQ29yZTo6SW50U2l6ZSgzMiwgMzIpKTsKLSAgICBXZWJDb3JlOjpOYXRpdmVJ
bWFnZVB0ciBuYXRpdmVJbWFnZUZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgaWNvblNpemUgPSBXZWJDb3JlOjpJbnRTaXplKDMyLCAzMikpOwotICAgIFJl
ZlB0cjxBUEk6OkRhdGE+IGljb25EYXRhRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwp
OwotCi0gICAgYm9vbCBpc09wZW4oKTsKLSAgICBib29sIGlzVXJsSW1wb3J0Q29tcGxldGVkKCk7
Ci0KLSAgICB2b2lkIHJlbW92ZUFsbEljb25zKCk7Ci0gICAgdm9pZCBjaGVja0ludGVncml0eUJl
Zm9yZU9wZW5pbmcoKTsKLSAgICB2b2lkIGNsb3NlKCk7Ci0KLSAgICB2b2lkIHNldENsaWVudChz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpJY29uRGF0YWJhc2VDbGllbnQ+JiYpOwotCi0gICAgdm9pZCBz
ZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wpOwotCi0gICAgLy8gQ2FsbGVkIHdoZW4gdGhl
IFdlYlByb2Nlc3NQb29sIGlzIHRocm91Z2ggd2l0aCB0aGlzIFdlYkljb25EYXRhYmFzZSBidXQg
dGhlCi0gICAgLy8gV2ViQ29yZTo6SWNvbkRhdGFiYXNlIHBvc3NpYmx5IGlzbid0IGRvbmUgc2h1
dHRpbmcgZG93bi4KLSAgICAvLyBJbiB0aGF0IGNhc2UgdGhpcyBXZWJJY29uRGF0YWJhc2Ugd2ls
bCBkZXJlZigpIGl0c2VsZiB3aGVuIHRoZSB0aW1lIGlzIHJpZ2h0LgotICAgIHZvaWQgZGVyZWZX
aGVuQXBwcm9wcmlhdGUoKTsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJJY29uRGF0YWJh
c2UoV2ViUHJvY2Vzc1Bvb2wmKTsKLQotICAgIC8vIFdlYkNvcmU6Okljb25EYXRhYmFzZUNsaWVu
dAotICAgIHZvaWQgZGlkSW1wb3J0SWNvblVSTEZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkaWRJbXBvcnRJY29uRGF0YUZvclBhZ2VVUkwoY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRDaGFuZ2VJY29uRm9yUGFnZVVSTChjb25zdCBTdHJp
bmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlbW92ZUFsbEljb25zKCkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkaWRGaW5pc2hVUkxJbXBvcnQoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZENsb3Nl
KCkgb3ZlcnJpZGU7Ci0KLSAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgotICAgIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKLQotICAg
IHZvaWQgbm90aWZ5SWNvbkRhdGFSZWFkeUZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJik7Ci0KLSAg
ICBXZWJQcm9jZXNzUG9vbCogbV9wcm9jZXNzUG9vbDsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpJY29uRGF0YWJhc2U+IG1faWNvbkRhdGFiYXNlSW1wbDsKLSAgICBib29sIG1fdXJs
SW1wb3J0Q29tcGxldGVkOwotICAgIGJvb2wgbV9kYXRhYmFzZUNsZWFudXBEaXNhYmxlZDsKLSAg
ICBib29sIG1fc2hvdWxkRGVyZWZXaGVuQXBwcm9wcmlhdGU7Ci0gICAgSGFzaE1hcDx1aW50NjRf
dCwgU3RyaW5nPiBtX3BlbmRpbmdMb2FkRGVjaXNpb25VUkxNYXA7Ci0KLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpJY29uRGF0YWJhc2VDbGllbnQ+IG1fY2xpZW50OworY2xhc3MgV2ViSWNvbkRh
dGFiYXNlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6SWNvbkRh
dGFiYXNlPiB7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYklj
b25EYXRhYmFzZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJY29u
RGF0YWJhc2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJY29uRGF0
YWJhc2UubWVzc2FnZXMuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1Yjk2ZmQx
ZjY2Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJY29uRGF0
YWJhc2UubWVzc2FnZXMuaW4KKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0jIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLW1lc3NhZ2VzIC0+IFdlYkljb25EYXRh
YmFzZSB7Ci0gICAgU2V0SWNvblVSTEZvclBhZ2VVUkwoU3RyaW5nIGljb25VUkwsIFN0cmluZyBw
YWdlVVJMKQotICAgIFNldEljb25EYXRhRm9ySWNvblVSTChJUEM6OkRhdGFSZWZlcmVuY2UgaWNv
bkRhdGEsIFN0cmluZyBpY29uVVJMKQotICAgIAotICAgIFN5bmNocm9ub3VzSWNvbkRhdGFGb3JQ
YWdlVVJMKFN0cmluZyBwYWdlVVJMKSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIGljb25EYXRhKQot
ICAgIFN5bmNocm9ub3VzSWNvblVSTEZvclBhZ2VVUkwoU3RyaW5nIHBhZ2VVUkwpIC0+IChTdHJp
bmcgaWNvblVSTCkKLSAgICBTeW5jaHJvbm91c0ljb25EYXRhS25vd25Gb3JJY29uVVJMKFN0cmlu
ZyBpY29uVVJMKSAtPiAoYm9vbCBkYXRhS25vd24pCi0gICAgU3luY2hyb25vdXNMb2FkRGVjaXNp
b25Gb3JJY29uVVJMKFN0cmluZyBpY29uVVJMKSAtPiAoaW50IGxvYWREZWNpc2lvbikKLSAgICAK
LSAgICBHZXRMb2FkRGVjaXNpb25Gb3JJY29uVVJMKFN0cmluZyBpY29uVVJMLCB1aW50NjRfdCBj
YWxsYmFja0lEKQotICAgIERpZFJlY2VpdmVJY29uRm9yUGFnZVVSTChTdHJpbmcgcGFnZVVSTCkK
LX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZUNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2VDbGllbnQu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDcyMDUwYzhlNC4uMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmgiCi0KLSNpbmNsdWRl
ICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIKLSNpbmNsdWRlICJX
ZWJJY29uRGF0YWJhc2UuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYkljb25EYXRhYmFz
ZUNsaWVudDo6V2ViSWNvbkRhdGFiYXNlQ2xpZW50KGNvbnN0IFdLSWNvbkRhdGFiYXNlQ2xpZW50
QmFzZSogd2tDbGllbnQpCi17Ci0gICAgaW5pdGlhbGl6ZSh3a0NsaWVudCk7Ci19Ci0KLXZvaWQg
V2ViSWNvbkRhdGFiYXNlQ2xpZW50OjpkaWRDaGFuZ2VJY29uRm9yUGFnZVVSTChXZWJJY29uRGF0
YWJhc2UmIGljb25EYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBwYWdlVVJMKQotewotICAgIGlmICgh
bV9jbGllbnQuZGlkQ2hhbmdlSWNvbkZvclBhZ2VVUkwpCi0gICAgICAgIHJldHVybjsKLQotICAg
IG1fY2xpZW50LmRpZENoYW5nZUljb25Gb3JQYWdlVVJMKHRvQVBJKCZpY29uRGF0YWJhc2UpLCB0
b0FQSShBUEk6OlVSTDo6Y3JlYXRlKHBhZ2VVUkwpLnB0cigpKSwgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2VDbGllbnQ6OmRpZFJlbW92ZUFsbElj
b25zKFdlYkljb25EYXRhYmFzZSYgaWNvbkRhdGFiYXNlKQotewotICAgIGlmICghbV9jbGllbnQu
ZGlkUmVtb3ZlQWxsSWNvbnMpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY2xpZW50LmRpZFJl
bW92ZUFsbEljb25zKHRvQVBJKCZpY29uRGF0YWJhc2UpLCAgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2VDbGllbnQ6Omljb25EYXRhUmVhZHlGb3JQ
YWdlVVJMKFdlYkljb25EYXRhYmFzZSYgaWNvbkRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIHBhZ2VV
UkwpCi17Ci0gICAgaWYgKCFtX2NsaWVudC5pY29uRGF0YVJlYWR5Rm9yUGFnZVVSTCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgbV9jbGllbnQuaWNvbkRhdGFSZWFkeUZvclBhZ2VVUkwodG9BUEko
Jmljb25EYXRhYmFzZSksIHRvQVBJKEFQSTo6VVJMOjpjcmVhdGUocGFnZVVSTCkucHRyKCkpLCBt
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZUNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2YWMxYThmYWUxLi4wMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2VDbGllbnQuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkljb25EYXRhYmFz
ZUNsaWVudF9oCi0jZGVmaW5lIFdlYkljb25EYXRhYmFzZUNsaWVudF9oCi0KLSNpbmNsdWRlICJB
UElDbGllbnQuaCIKLSNpbmNsdWRlICJBUElJY29uRGF0YWJhc2VDbGllbnQuaCIKLSNpbmNsdWRl
ICJXS0ljb25EYXRhYmFzZS5oIgotCi1uYW1lc3BhY2UgQVBJIHsKLWNsYXNzIFVSTDsKLXRlbXBs
YXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS0ljb25EYXRhYmFzZUNsaWVudEJhc2U+IHsKLSAg
ICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tJY29uRGF0YWJhc2VDbGllbnRWMCwgV0tJY29uRGF0YWJh
c2VDbGllbnRWMT4gVmVyc2lvbnM7Ci19OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xh
c3MgV2ViSWNvbkRhdGFiYXNlOwotCi1jbGFzcyBXZWJJY29uRGF0YWJhc2VDbGllbnQgOiBwdWJs
aWMgQVBJOjpJY29uRGF0YWJhc2VDbGllbnQsIEFQSTo6Q2xpZW50PFdLSWNvbkRhdGFiYXNlQ2xp
ZW50QmFzZT4gewotcHVibGljOgotICAgIGV4cGxpY2l0IFdlYkljb25EYXRhYmFzZUNsaWVudChj
b25zdCBXS0ljb25EYXRhYmFzZUNsaWVudEJhc2UqKTsKLQotICAgIHZvaWQgZGlkQ2hhbmdlSWNv
bkZvclBhZ2VVUkwoV2ViSWNvbkRhdGFiYXNlJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkaWRSZW1vdmVBbGxJY29ucyhXZWJJY29uRGF0YWJhc2UmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGljb25EYXRhUmVhZHlGb3JQYWdlVVJMKFdlYkljb25EYXRhYmFzZSYsIGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAv
LyBXZWJJY29uRGF0YWJhc2VDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCmluZGV4IGNlODM2MDVhNjQ1Li44Y2U1YjU4Nzk5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNTcsNyArNTcsNiBAQAogI2lu
Y2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgiCi0jaW5j
bHVkZSAiV2ViSWNvbkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiV2ViS2l0MkluaXRpYWxpemUuaCIK
ICNpbmNsdWRlICJXZWJNZW1vcnlTYW1wbGVyLmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5LmgiCkBAIC0yNTgsOCArMjU3LDYgQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlBy
b2Nlc3NQb29sKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQog
ICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUHJvY2Vzc1Bvb2w6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgKnRoaXMpOwogCiAgICAgLy8gTk9URTogVGhlc2Ugc3ViLW9iamVjdHMg
bXVzdCBiZSBpbml0aWFsaXplZCBhZnRlciBtX21lc3NhZ2VSZWNlaXZlck1hcC4uCi0gICAgbV9p
Y29uRGF0YWJhc2UgPSBXZWJJY29uRGF0YWJhc2U6OmNyZWF0ZSh0aGlzKTsKLQogICAgIGFkZFN1
cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpOwogICAgIGFkZFN1cHBsZW1lbnQ8V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCk7CiAgICAgYWRkU3VwcGxlbWVudDxXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHk+KCk7CkBAIC0zMDUsMTEgKzMwMiw2IEBAIFdlYlByb2Nlc3NQb29s
Ojp+V2ViUHJvY2Vzc1Bvb2woKQogICAgICAgICBzdXBwbGVtZW50LT5jbGVhclByb2Nlc3NQb29s
KCk7CiAgICAgfQogCi0gICAgbV9pY29uRGF0YWJhc2UtPmludmFsaWRhdGUoKTsKLSAgICBtX2lj
b25EYXRhYmFzZS0+Y2xlYXJQcm9jZXNzUG9vbCgpOwotICAgIFdlYkljb25EYXRhYmFzZSogcmF3
SWNvbkRhdGFiYXNlID0gbV9pY29uRGF0YWJhc2UubGVha1JlZigpOwotICAgIHJhd0ljb25EYXRh
YmFzZS0+ZGVyZWZXaGVuQXBwcm9wcmlhdGUoKTsKLQogICAgIGludmFsaWRhdGVDYWxsYmFja01h
cChtX2RpY3Rpb25hcnlDYWxsYmFja3MsIENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52
YWxpZGF0ZWQpOwogCiAgICAgcGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4dCgpOwpAQCAtNTk1LDgg
KzU4Nyw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0
ZUNoYW5nZWQoKQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRBbnlQYWdlR3JvdXBNaWdodEhh
dmVQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKIHsK
LSAgICBtX2ljb25EYXRhYmFzZS0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChwcml2YXRlQnJv
d3NpbmdFbmFibGVkKTsKLQogICAgIGlmIChuZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgIGlm
IChwcml2YXRlQnJvd3NpbmdFbmFibGVkKQogICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+
c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oe1Nlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpLCB7IH0sIHsgfSwgeyB9fSks
IDApOwpAQCAtNzI2LDggKzcxNiw2IEBAIFdlYlByb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6
OmNyZWF0ZU5ld1dlYlByb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhCiAgICAgcGFy
YW1ldGVycy5zaG91bGRBbHdheXNVc2VDb21wbGV4VGV4dENvZGVQYXRoID0gbV9hbHdheXNVc2Vz
Q29tcGxleFRleHRDb2RlUGF0aDsKICAgICBwYXJhbWV0ZXJzLnNob3VsZFVzZUZvbnRTbW9vdGhp
bmcgPSBtX3Nob3VsZFVzZUZvbnRTbW9vdGhpbmc7CiAKLSAgICBwYXJhbWV0ZXJzLmljb25EYXRh
YmFzZUVuYWJsZWQgPSAhaWNvbkRhdGFiYXNlUGF0aCgpLmlzRW1wdHkoKTsKLQogICAgIHBhcmFt
ZXRlcnMudGVybWluYXRpb25UaW1lb3V0ID0gMF9zOwogCiAgICAgcGFyYW1ldGVycy50ZXh0Q2hl
Y2tlclN0YXRlID0gVGV4dENoZWNrZXI6OnN0YXRlKCk7CkBAIC0xMjkwLDIzICsxMjc4LDYgQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6c3RvcE1lbW9yeVNhbXBsZXIoKQogICAgIHNlbmRUb0FsbFBy
b2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U3RvcE1lbW9yeVNhbXBsZXIoKSk7CiB9CiAK
LXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEljb25EYXRhYmFzZVBhdGgoY29uc3QgU3RyaW5nJiBw
YXRoKQotewotICAgIG1fb3ZlcnJpZGVJY29uRGF0YWJhc2VQYXRoID0gcGF0aDsKLSAgICBpZiAo
IW1fb3ZlcnJpZGVJY29uRGF0YWJhc2VQYXRoLmlzRW1wdHkoKSkgewotICAgICAgICAvLyBUaGlz
IGltcGxpY2l0bHkgZW5hYmxlcyB0aGUgZGF0YWJhc2Ugb24gVUkgcHJvY2VzcyBzaWRlLgotICAg
ICAgICBtX2ljb25EYXRhYmFzZS0+c2V0RGF0YWJhc2VQYXRoKHBhdGgpOwotICAgIH0KLX0KLQot
U3RyaW5nIFdlYlByb2Nlc3NQb29sOjppY29uRGF0YWJhc2VQYXRoKCkgY29uc3QKLXsKLSAgICBp
ZiAoIW1fb3ZlcnJpZGVJY29uRGF0YWJhc2VQYXRoLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4g
bV9vdmVycmlkZUljb25EYXRhYmFzZVBhdGg7Ci0KLSAgICByZXR1cm4gcGxhdGZvcm1EZWZhdWx0
SWNvbkRhdGFiYXNlUGF0aCgpOwotfQotCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp1c2VUZXN0aW5n
TmV0d29ya1Nlc3Npb24oKQogewogICAgIEFTU0VSVChtX3Byb2Nlc3Nlcy5pc0VtcHR5KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggOTRkZWVhMzFmNGYu
LmVlZTY3MmIyNTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgK
QEAgLTg5LDcgKzg5LDYgQEAgY2xhc3MgVUlHYW1lcGFkOwogY2xhc3MgUGVyQWN0aXZpdHlTdGF0
ZUNQVVVzYWdlU2FtcGxlcjsKIGNsYXNzIFdlYkF1dG9tYXRpb25TZXNzaW9uOwogY2xhc3MgV2Vi
Q29udGV4dFN1cHBsZW1lbnQ7Ci1jbGFzcyBXZWJJY29uRGF0YWJhc2U7CiBjbGFzcyBXZWJQYWdl
R3JvdXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnM7CkBAIC0yNDQsOCArMjQzLDYgQEAgcHVibGljOgogCiAgICAgQVBJOjpDdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQmIGN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCgpIGNv
bnN0IHsgcmV0dXJuICptX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDsgfQogCi0gICAgV2Vi
SWNvbkRhdGFiYXNlKiBpY29uRGF0YWJhc2UoKSBjb25zdCB7IHJldHVybiBtX2ljb25EYXRhYmFz
ZS5nZXQoKTsgfQotCiAgICAgc3RydWN0IFN0YXRpc3RpY3MgewogICAgICAgICB1bnNpZ25lZCB3
a1ZpZXdDb3VudDsKICAgICAgICAgdW5zaWduZWQgd2tQYWdlQ291bnQ7CkBAIC0yNTMsOCArMjUw
LDYgQEAgcHVibGljOgogICAgIH07CiAgICAgc3RhdGljIFN0YXRpc3RpY3MmIHN0YXRpc3RpY3Mo
KTsgICAgCiAKLSAgICB2b2lkIHNldEljb25EYXRhYmFzZVBhdGgoY29uc3QgU3RyaW5nJik7Ci0g
ICAgU3RyaW5nIGljb25EYXRhYmFzZVBhdGgoKSBjb25zdDsKICAgICB2b2lkIHNldENvb2tpZVN0
b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXIpIHsgbV9vdmVycmlkZUNvb2tpZVN0b3Jh
Z2VEaXJlY3RvcnkgPSBkaXI7IH0KIAogICAgIHZvaWQgdXNlVGVzdGluZ05ldHdvcmtTZXNzaW9u
KCk7CkBAIC00NTAsOCArNDQ1LDYgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBsYW5ndWFn
ZUNoYW5nZWQodm9pZCogY29udGV4dCk7CiAgICAgdm9pZCBsYW5ndWFnZUNoYW5nZWQoKTsKIAot
ICAgIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRJY29uRGF0YWJhc2VQYXRoKCkgY29uc3Q7Ci0KICNp
ZiBQTEFURk9STShJT1MpCiAgICAgU3RyaW5nIGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkoKSBjb25z
dDsKICNlbmRpZgpAQCAtNTMwLDggKzUyMyw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX21lbW9y
eVNhbXBsZXJFbmFibGVkOwogICAgIGRvdWJsZSBtX21lbW9yeVNhbXBsZXJJbnRlcnZhbDsKIAot
ICAgIFJlZlB0cjxXZWJJY29uRGF0YWJhc2U+IG1faWNvbkRhdGFiYXNlOwotCiAgICAgY29uc3Qg
UmVmPEFQSTo6V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0YVN0b3JlOwogCiAgICAgdHlw
ZWRlZiBIYXNoTWFwPGNvbnN0IGNoYXIqLCBSZWZQdHI8V2ViQ29udGV4dFN1cHBsZW1lbnQ+LCBQ
dHJIYXNoPGNvbnN0IGNoYXIqPj4gV2ViQ29udGV4dFN1cHBsZW1lbnRNYXA7CkBAIC01NTQsNyAr
NTQ1LDYgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGVyQWN0aXZpdHlTdGF0ZUNQ
VVVzYWdlU2FtcGxlcj4gbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyOwogI2VuZGlm
CiAKLSAgICBTdHJpbmcgbV9vdmVycmlkZUljb25EYXRhYmFzZVBhdGg7CiAgICAgU3RyaW5nIG1f
b3ZlcnJpZGVDb29raWVTdG9yYWdlRGlyZWN0b3J5OwogCiAgICAgYm9vbCBtX3Nob3VsZFVzZVRl
c3RpbmdOZXR3b3JrU2Vzc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwCmluZGV4IGUwOTZiNjI3NTI3Li40Mjc1MDU2Mjg5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0zOCw3ICszOCw2IEBACiAjaW5j
bHVkZSAiVGV4dENoZWNrZXJTdGF0ZS5oIgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCiAjaW5jbHVk
ZSAiV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIgotI2luY2x1ZGUgIldlYkljb25EYXRhYmFzZS5o
IgogI2luY2x1ZGUgIldlYkluc3BlY3RvclV0aWxpdGllcy5oIgogI2luY2x1ZGUgIldlYk5hdmln
YXRpb25EYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHku
aCIKQEAgLTE2Nyw4ICsxNjYsNiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc1dpbGxT
aHV0RG93bihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAKICAgICBmb3IgKGF1dG8mIHBh
Z2UgOiBtX3BhZ2VNYXAudmFsdWVzKCkpCiAgICAgICAgIHBhZ2UtPndlYlByb2Nlc3NXaWxsU2h1
dERvd24oKTsKLQotICAgIHJlbGVhc2VSZW1haW5pbmdJY29uc0ZvclBhZ2VVUkxzKCk7CiB9CiAK
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzaHV0RG93bigpCkBAIC01NzksNTMgKzU3Niw2IEBAIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKFJlZjxNZXNz
YWdlczo6V2ViUHJvY2Vzc1Byb3h5CiB9CiAjZW5kaWYgLy8gRU5BQkxFKERBVEFCQVNFX1BST0NF
U1MpCiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZXRhaW5JY29uRm9yUGFnZVVSTChjb25zdCBT
dHJpbmcmIHBhZ2VVUkwpCi17Ci0gICAgV2ViSWNvbkRhdGFiYXNlKiBpY29uRGF0YWJhc2UgPSBw
cm9jZXNzUG9vbCgpLmljb25EYXRhYmFzZSgpOwotICAgIGlmICghaWNvbkRhdGFiYXNlIHx8IHBh
Z2VVUkwuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBUcmFjayByZXRhaW4g
Y291bnRzIHNvIHdlIGNhbiByZWxlYXNlIHRoZW0gaWYgdGhlIFdlYlByb2Nlc3MgdGVybWluYXRl
cyBlYXJseS4KLSAgICBhdXRvIHJlc3VsdCA9IG1fcGFnZVVSTFJldGFpbkNvdW50TWFwLmFkZChw
YWdlVVJMLCAxKTsKLSAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICArK3Jlc3Vs
dC5pdGVyYXRvci0+dmFsdWU7Ci0KLSAgICBpY29uRGF0YWJhc2UtPnJldGFpbkljb25Gb3JQYWdl
VVJMKHBhZ2VVUkwpOwotfQotCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVsZWFzZUljb25Gb3JQ
YWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCkKLXsKLSAgICBXZWJJY29uRGF0YWJhc2UqIGlj
b25EYXRhYmFzZSA9IHByb2Nlc3NQb29sKCkuaWNvbkRhdGFiYXNlKCk7Ci0gICAgaWYgKCFpY29u
RGF0YWJhc2UgfHwgcGFnZVVSTC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8v
IFRyYWNrIHJldGFpbiBjb3VudHMgc28gd2UgY2FuIHJlbGVhc2UgdGhlbSBpZiB0aGUgV2ViUHJv
Y2VzcyB0ZXJtaW5hdGVzIGVhcmx5LgotICAgIGF1dG8gcmVzdWx0ID0gbV9wYWdlVVJMUmV0YWlu
Q291bnRNYXAuZmluZChwYWdlVVJMKTsKLSAgICBpZiAocmVzdWx0ID09IG1fcGFnZVVSTFJldGFp
bkNvdW50TWFwLmVuZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAtLXJlc3VsdC0+dmFsdWU7
Ci0gICAgaWYgKCFyZXN1bHQtPnZhbHVlKQotICAgICAgICBtX3BhZ2VVUkxSZXRhaW5Db3VudE1h
cC5yZW1vdmUocmVzdWx0KTsKLQotICAgIGljb25EYXRhYmFzZS0+cmVsZWFzZUljb25Gb3JQYWdl
VVJMKHBhZ2VVUkwpOwotfQotCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVsZWFzZVJlbWFpbmlu
Z0ljb25zRm9yUGFnZVVSTHMoKQotewotICAgIFdlYkljb25EYXRhYmFzZSogaWNvbkRhdGFiYXNl
ID0gcHJvY2Vzc1Bvb2woKS5pY29uRGF0YWJhc2UoKTsKLSAgICBpZiAoIWljb25EYXRhYmFzZSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fcGFnZVVSTFJldGFp
bkNvdW50TWFwKSB7Ci0gICAgICAgIHVpbnQ2NF90IGNvdW50ID0gZW50cnkudmFsdWU7Ci0gICAg
ICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKQotICAgICAgICAgICAgaWNv
bkRhdGFiYXNlLT5yZWxlYXNlSWNvbkZvclBhZ2VVUkwoZW50cnkua2V5KTsKLSAgICB9Ci0KLSAg
ICBtX3BhZ2VVUkxSZXRhaW5Db3VudE1hcC5jbGVhcigpOwotfQotCiAjaWYgIVBMQVRGT1JNKENP
Q09BKQogYm9vbCBXZWJQcm9jZXNzUHJveHk6OnBsYXRmb3JtSXNCZWluZ0RlYnVnZ2VkKCkgY29u
c3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggNTY5
MThiMzlkMzUuLjViYjM2YzY3MWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaApAQCAtMjE4LDEwICsyMTgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0RGF0
YWJhc2VQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0
RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKICNlbmRpZgogCi0g
ICAgdm9pZCByZXRhaW5JY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwpOwotICAg
IHZvaWQgcmVsZWFzZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCk7Ci0gICAg
dm9pZCByZWxlYXNlUmVtYWluaW5nSWNvbnNGb3JQYWdlVVJMcygpOwotCiAgICAgYm9vbCBwbGF0
Zm9ybUlzQmVpbmdEZWJ1Z2dlZCgpIGNvbnN0OwogCiAgICAgc3RhdGljIGNvbnN0IEhhc2hTZXQ8
U3RyaW5nPiYgcGxhdGZvcm1QYXRoc1dpdGhBc3N1bWVkUmVhZEFjY2VzcygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4
IGIyYmI3ODEyMGY1Li40N2U1Y2QyZmI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNTEsOSArNTEsNiBAQCBtZXNz
YWdlcyAtPiBXZWJQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgU3RvcFJlc3Bv
bnNpdmVuZXNzVGltZXIoKQogCi0gICAgUmV0YWluSWNvbkZvclBhZ2VVUkwoU3RyaW5nIHBhZ2VV
UkwpCi0gICAgUmVsZWFzZUljb25Gb3JQYWdlVVJMKFN0cmluZyBwYWdlVVJMKQotCiAgICAgRGlk
UmVjZWl2ZU1haW5UaHJlYWRQaW5nKCkKICAgICBEaWRSZWNlaXZlQmFja2dyb3VuZFJlc3BvbnNp
dmVuZXNzUGluZygpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9X
ZWJQcm9jZXNzUG9vbEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUHJv
Y2Vzc1Bvb2xHdGsuY3BwCmluZGV4IGIwYWNlZTM5NzY4Li5jNTk1ZDU2ZGYzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCkBAIC0x
MDYsMTIgKzEwNiw2IEBAIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZh
dWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQogICAgIHJldHVybiBBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwogfQogCi1TdHJp
bmcgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdEljb25EYXRhYmFzZVBhdGgoKSBjb25z
dAotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRhdGFiYXNlRGlyZWN0b3J5KGdfYnVpbGRfZmls
ZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndlYmtpdGd0ayIsICJpY29uZGF0YWJhc2Ui
LCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oZGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOwotfQotCiBTdHJpbmcgV2ViUHJv
Y2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCiB7
CiAgICAgcmV0dXJuIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURp
cmVjdG9yeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlBy
b2Nlc3NQb29sV1BFLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQcm9jZXNz
UG9vbFdQRS5jcHAKaW5kZXggMGI5YzZmYmU4YWQuLmU1MjJhNTk1NThkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUHJvY2Vzc1Bvb2xXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQcm9jZXNzUG9vbFdQRS5jcHAKQEAgLTExMSwx
MiArMTExLDYgQEAgU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRJ
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIFdlYkNvcmU6OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkuZ2V0
KCkpOwogfQogCi1TdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdEljb25EYXRh
YmFzZVBhdGgoKSBjb25zdAotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRhdGFiYXNlRGlyZWN0
b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndwZSIsICJpY29u
ZGF0YWJhc2UiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oZGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOwotfQotCiBTdHJp
bmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdExvY2FsU3RvcmFnZURpcmVj
dG9yeSgpCiB7CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gc3RvcmFnZURpcmVjdG9yeShnX2J1aWxk
X2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndwZSIsICJsb2NhbHN0b3JhZ2UiLCBu
dWxscHRyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBiM2MzYmE1NTk0Yi4uNTc4YzkzMzY4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTM3LDEwICs5MzcsNiBAQAog
CQk1MTBGQkI5QjEyODhDOTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRkJCOTkxMjg4
Qzk1RTAwQUZGREY0IC8qIFdlYkNvbnRleHRNZW51SXRlbURhdGEuaCAqLzsgfTsKIAkJNTExMEFF
MEMxMzNDMTZDQjAwNzI3MTdBIC8qIFdLSWNvbkRhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTBBRTBBMTMzQzE2Q0IwMDcyNzE3QSAv
KiBXS0ljb25EYXRhYmFzZS5jcHAgKi87IH07CiAJCTUxMTBBRTBEMTMzQzE2Q0IwMDcyNzE3QSAv
KiBXS0ljb25EYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTExMEFFMEIxMzNDMTZDQjAwNzI3MTdBIC8qIFdLSWNvbkRhdGFiYXNlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTExQjI0QTYx
MzJFMDk1NzAwMDY1QTBDIC8qIFdlYkljb25EYXRhYmFzZVByb3h5LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUIyNEE0MTMyRTA5NTcwMDA2NUEw
QyAvKiBXZWJJY29uRGF0YWJhc2VQcm94eS5jcHAgKi87IH07Ci0JCTUxMUIyNEE3MTMyRTA5NTcw
MDA2NUEwQyAvKiBXZWJJY29uRGF0YWJhc2VQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExQjI0QTUxMzJFMDk1NzAwMDY1QTBDIC8qIFdlYklj
b25EYXRhYmFzZVByb3h5LmggKi87IH07Ci0JCTUxMUIyNEFBMTMyRTA5NzIwMDA2NUEwQyAvKiBX
ZWJJY29uRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTExQjI0QTgxMzJFMDk3MjAwMDY1QTBDIC8qIFdlYkljb25EYXRhYmFzZS5jcHAg
Ki87IH07Ci0JCTUxMUIyNEFCMTMyRTA5NzIwMDA2NUEwQyAvKiBXZWJJY29uRGF0YWJhc2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUIyNEE5MTMy
RTA5NzIwMDA2NUEwQyAvKiBXZWJJY29uRGF0YWJhc2UuaCAqLzsgfTsKIAkJNTExRjdENDExRUIx
QkNGNTAwRTQ3QjgzIC8qIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFGN0Q0MDFFQjFCQ0VFMDBFNDdC
ODMgLyogV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCAqLzsgfTsKIAkJNTExRjdENDIxRUIx
QkNGODAwRTQ3QjgzIC8qIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUY3RDNGMUVCMUJDRUUwMEU0
N0I4MyAvKiBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAgKi87IH07CiAJCTUxMUY4QTdC
MTM4QjQ2MDkwMEE5NUY0NCAvKiBTZWNJdGVtU2hpbUxpYnJhcnkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUY4QTc3MTM4QjQ2MDkwMEE5NUY0NCAv
KiBTZWNJdGVtU2hpbUxpYnJhcnkuaCAqLzsgfTsKQEAgLTEwMjMsOCArMTAxOSw2IEBACiAJCTUx
N0NGMEU0MTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3Q0Yw
RTIxNjNBNDg2QzAwQzI5NTBFIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgg
Ki87IH07CiAJCTUxN0RENUJFMTgwREE3RDMwMDgxNjYwQiAvKiBEYXRhYmFzZVByb2Nlc3NQcm94
eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdE
RDVCQzE4MERBN0QzMDA4MTY2MEIgLyogRGF0YWJhc2VQcm9jZXNzUHJveHkuY3BwICovOyB9Owog
CQk1MTdERDVCRjE4MERBN0QzMDA4MTY2MEIgLyogRGF0YWJhc2VQcm9jZXNzUHJveHkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0RENUJEMTgwREE3
RDMwMDgxNjYwQiAvKiBEYXRhYmFzZVByb2Nlc3NQcm94eS5oICovOyB9OwotCQk1MTgzNDU5MjEz
NDUzMkU5MDA5MkI2OTYgLyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODM0NTkwMTM0NTMyRTgwMDkyQjY5
NiAvKiBXZWJJY29uRGF0YWJhc2VDbGllbnQuY3BwICovOyB9OwotCQk1MTgzNDU5MzEzNDUzMkU5
MDA5MkI2OTYgLyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgzNDU5MTEzNDUzMkU4MDA5MkI2OTYgLyogV2Vi
SWNvbkRhdGFiYXNlQ2xpZW50LmggKi87IH07CiAJCTUxODNEREVDMTYzMEJERkMwMDhCRTVDNyAv
KiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNUIwRDQxNjJGN0E3QTAwRTI3NzA5IC8qIE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAgKi87IH07CiAJCTUxODcxQjVCMTI3Q0I4OUQwMEY3NjIzMiAv
KiBXZWJDb250ZXh0TWVudS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTg3MUI1OTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuY3Bw
ICovOyB9OwogCQk1MTg3MUI1QzEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODcxQjVBMTI3
Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oICovOyB9OwpAQCAtMTA2MCwxMCArMTA1
NCw2IEBACiAJCTUxQ0QxQzY1MUIzNEI5RDQwMDE0MkNBNSAvKiBXS1NlY3VyaXR5T3JpZ2luLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUNEMUM1RjFC
MzRCOUM5MDAxNDJDQTUgLyogV0tTZWN1cml0eU9yaWdpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJNTFDRDFDNjYxQjM0QjlEQzAwMTQyQ0E1IC8q
IFdLU2VjdXJpdHlPcmlnaW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUNEMUM2MDFCMzRCOUM5MDAxNDJDQTUgLyogV0tTZWN1cml0eU9yaWdpbi5t
bSAqLzsgfTsKIAkJNTFDRDFDNjcxQjM0QjlERjAwMTQyQ0E1IC8qIFdLU2VjdXJpdHlPcmlnaW5J
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFDRDFDNjExQjM0QjlDOTAwMTQyQ0E1IC8qIFdLU2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oICov
OyB9OwotCQk1MUQwMkY2NDEzMkVDNUI5MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxRDAyRjYzMTMyRUM1QjkwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovOyB9OwotCQk1MUQwMkY2QTEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRh
dGFiYXNlTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRDAyRjY3MTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VNZXNzYWdl
cy5oICovOyB9OwotCQk1MUQwMkY2QjEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNl
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFEMDJGNjgxMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFz
ZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKLQkJNTFEMDJGNkMxMzJFQzczNzAwQkVB
QTk2IC8qIFdlYkljb25EYXRhYmFzZVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDAyRjY5MTMyRUM3MzcwMEJFQUE5NiAvKiBX
ZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VzLmggKi87IH07CiAJCTUxRDEyNDIzMUU2RDM0QTEw
MDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0MjExRTZEMzQ5QTAwMkIyODIwIC8qIFdl
YlVSTFNjaGVtZVRhc2tQcm94eS5jcHAgKi87IH07CiAJCTUxRDEyNDI4MUU2RDNGNUQwMDJCMjgy
MCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDI0MUU2RDNDQzMwMDJCMjgyMCAvKiBXZWJVUkxTY2hl
bWVIYW5kbGVyLmNwcCAqLzsgfTsKIAkJNTFEMTI0MkMxRTZENDFGRDAwMkIyODIwIC8qIFdlYlVS
TFNjaGVtZUhhbmRsZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUQxMjQyQTFFNkQ0MUJDMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFu
ZGxlclByb3h5LmNwcCAqLzsgfTsKQEAgLTMxODYsMTAgKzMxNzYsNiBAQAogCQk1MTBGQkI5OTEy
ODhDOTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxMTBBRTBBMTMzQzE2Q0IwMDcyNzE3QSAvKiBXS0ljb25EYXRh
YmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0ljb25EYXRh
YmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMTBBRTBCMTMzQzE2Q0Iw
MDcyNzE3QSAvKiBXS0ljb25EYXRhYmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS0ljb25EYXRhYmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTFC
MjRBNDEzMkUwOTU3MDAwNjVBMEMgLyogV2ViSWNvbkRhdGFiYXNlUHJveHkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViSWNvbkRhdGFiYXNlUHJveHkuY3BwOyBw
YXRoID0gSWNvbkRhdGFiYXNlL1dlYkljb25EYXRhYmFzZVByb3h5LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNTExQjI0QTUxMzJFMDk1NzAwMDY1QTBDIC8qIFdlYkljb25EYXRh
YmFzZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkljb25EYXRh
YmFzZVByb3h5Lmg7IHBhdGggPSBJY29uRGF0YWJhc2UvV2ViSWNvbkRhdGFiYXNlUHJveHkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTExQjI0QTgxMzJFMDk3MjAwMDY1QTBDIC8q
IFdlYkljb25EYXRhYmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJJY29uRGF0YWJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTFC
MjRBOTEzMkUwOTcyMDAwNjVBMEMgLyogV2ViSWNvbkRhdGFiYXNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkljb25EYXRhYmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTFGN0QzRjFFQjFCQ0VFMDBFNDdCODMgLyogV2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTFGN0Q0MDFFQjFCQ0VFMDBFNDdCODMgLyogV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTExRjhBNzcxMzhCNDYwOTAwQTk1
RjQ0IC8qIFNlY0l0ZW1TaGltTGlicmFyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBTZWNJdGVtU2hpbUxpYnJhcnkuaDsgcGF0aCA9IC4uLy4uL1dlYlByb2Nlc3MvbWFjL1Nl
Y0l0ZW1TaGltTGlicmFyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzI3MCwx
MCArMzI1Niw3IEBACiAJCTUxN0NGMEUyMTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MTdERDVCQzE4MERBN0QzMDA4MTY2MEIgLyogRGF0YWJhc2VQcm9jZXNzUHJveHku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGF0YWJhc2VQcm9jZXNz
UHJveHkuY3BwOyBwYXRoID0gRGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3REQ1QkQxODBEQTdEMzAwODE2NjBCIC8qIERh
dGFiYXNlUHJvY2Vzc1Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERh
dGFiYXNlUHJvY2Vzc1Byb3h5Lmg7IHBhdGggPSBEYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJv
eHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE4MzQ1OTAxMzQ1MzJFODAwOTJC
Njk2IC8qIFdlYkljb25EYXRhYmFzZUNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJJY29uRGF0YWJhc2VDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk1MTgzNDU5MTEzNDUzMkU4MDA5MkI2OTYgLyogV2ViSWNvbkRhdGFiYXNl
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkljb25EYXRhYmFz
ZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTgzQjM5MzEzNzlGODVD
MDBFODc1NEUgLyogU2hpbS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGgg
PSBTaGltLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTg0QkM0QTEz
MkU5MDdBMDA2QjlFMjggLyogV2ViSWNvbkRhdGFiYXNlLm1lc3NhZ2VzLmluICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFdlYkljb25EYXRhYmFzZS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTE4NzFCNTkxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvbnRleHRNZW51
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4NzFCNUExMjdDQjg5RDAwRjc2
MjMyIC8qIFdlYkNvbnRleHRNZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkNvbnRleHRNZW51Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxOEFDQUU5
MTJBRUU2QkIwMEIwNEI4MyAvKiBXS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUHJvdGVjdGlvblNwYWNlVHlwZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMzMTYsMTYgKzMyOTksMTIgQEAKIAkJNTFDMEM5NzkxRERE
Nzg1NDAwMzJDQUQzIC8qIF9XS0xpbmtJY29uUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBfV0tMaW5rSWNvblBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTFDMEM5N0ExRERENzg1NDAwMzJDQUQzIC8qIF9XS0xpbmtJY29uUGFy
YW1ldGVycy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0xp
bmtJY29uUGFyYW1ldGVycy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDMEM5
N0IxRERENzg1NDAwMzJDQUQzIC8qIF9XS0xpbmtJY29uUGFyYW1ldGVyc0ludGVybmFsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0xpbmtJY29uUGFyYW1ldGVyc0ludGVy
bmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQzhFMTlCMUYyMTYxNzIwMEJG
NzMxQiAvKiBXZWJJY29uRGF0YWJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSWNvbkRhdGFiYXNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQ0QxQzU5MUIzNDkzQTkwMDE0MkNB
NSAvKiBXS1NlY3VyaXR5T3JpZ2luUmVmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdLU2VjdXJpdHlPcmlnaW5SZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUNEMUM1QTFCMzQ5M0E5MDAxNDJDQTUgLyogV0tTZWN1cml0eU9yaWdpblJlZi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1NlY3VyaXR5T3JpZ2luUmVmLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQ0QxQzVGMUIzNEI5QzkwMDE0MkNBNSAv
KiBXS1NlY3VyaXR5T3JpZ2luLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
U2VjdXJpdHlPcmlnaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDRDFDNjAx
QjM0QjlDOTAwMTQyQ0E1IC8qIFdLU2VjdXJpdHlPcmlnaW4ubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1NlY3VyaXR5T3JpZ2luLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MUNEMUM2MTFCMzRCOUM5MDAxNDJDQTUgLyogV0tTZWN1cml0eU9y
aWdpbkludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU2VjdXJp
dHlPcmlnaW5JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MUQwMkY2
MzEzMkVDNUI5MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkljb25EYXRhYmFzZU1lc3Nh
Z2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxRDAyRjY1MTMy
RUM2RDMwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IG5hbWUgPSBXZWJJY29uRGF0YWJhc2VQcm94eS5tZXNzYWdlcy5pbjsgcGF0aCA9
IEljb25EYXRhYmFzZS9XZWJJY29uRGF0YWJhc2VQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTFEMDJGNjcxMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25E
YXRhYmFzZU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYklj
b25EYXRhYmFzZU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxRDAy
RjY4MTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJY29uRGF0YWJh
c2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTUxRDAyRjY5MTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2Vz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkljb25EYXRhYmFzZVByb3h5
TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMTI0MjExRTZEMzQ5
QTAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MUQxMjQyMjFFNkQzNDlBMDAyQjI4MjAgLyogV2ViVVJMU2No
ZW1lVGFza1Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlVSTFNj
aGVtZVRhc2tQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUQxMjQyNDFF
NkQzQ0MzMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJVUkxTY2hlbWVIYW5kbGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyNTksMTYgKzYyMzgsNiBAQAogCQkJcGF0aCA9IERhdGFi
YXNlU2VydmljZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCTUxRkJCOUMx
MTMyRTA3OTIwMEYzMjdCNCAvKiBJY29uRGF0YWJhc2UgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91
cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTUxMUIyNEE0MTMyRTA5NTcwMDA2NUEwQyAvKiBXZWJJ
Y29uRGF0YWJhc2VQcm94eS5jcHAgKi8sCi0JCQkJNTExQjI0QTUxMzJFMDk1NzAwMDY1QTBDIC8q
IFdlYkljb25EYXRhYmFzZVByb3h5LmggKi8sCi0JCQkJNTFEMDJGNjUxMzJFQzZEMzAwQkVBQTk2
IC8qIFdlYkljb25EYXRhYmFzZVByb3h5Lm1lc3NhZ2VzLmluICovLAotCQkJKTsKLQkJCW5hbWUg
PSBJY29uRGF0YWJhc2U7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwogCQk1MzlC
RDVCMjFEQURCMEJBMDBGMkU0RTEgLyogY2FwdHVyZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCkBAIC02NTY5LDcgKzY1MzgsNiBAQAogCQkJCUNENzNCQTNEMTMx
QTJBMjEwMEVFREVEMiAvKiBGdWxsU2NyZWVuICovLAogCQkJCTUxNUJFMTcyMUQ1M0ZEQjkwMERE
N0M2OCAvKiBHYW1lcGFkICovLAogCQkJCUJDMEU1RkNCMTJENjk2REQwMDEyQTcyQSAvKiBHZW9s
b2NhdGlvbiAqLywKLQkJCQk1MUZCQjlDMTEzMkUwNzkyMDBGMzI3QjQgLyogSWNvbkRhdGFiYXNl
ICovLAogCQkJCUJDMjA0RURGMTFDODNFNzIwMDhGMzM3NSAvKiBJbmplY3RlZEJ1bmRsZSAqLywK
IAkJCQkzM0QzQTNCRDEzMzk2MDk4MDA3MDlCRTQgLyogTWVkaWFDYWNoZSAqLywKIAkJCQk0QTQx
MEY0MTE5QUY3QjI3MDAyRUJBQjUgLyogTWVkaWFTdHJlYW0gKi8sCkBAIC02ODIzLDExICs2Nzkx
LDcgQEAKIAkJCQlCQzBFNjE1MjEyRDZDQUM4MDAxMkE3MkEgLyogV2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJQkMxQkUxRjExMkQ1NERCRDAwMDRBMjI4IC8q
IFdlYkdlb2xvY2F0aW9uUHJvdmlkZXIuY3BwICovLAogCQkJCUJDMUJFMUYwMTJENTREQkQwMDA0
QTIyOCAvKiBXZWJHZW9sb2NhdGlvblByb3ZpZGVyLmggKi8sCi0JCQkJNTExQjI0QTgxMzJFMDk3
MjAwMDY1QTBDIC8qIFdlYkljb25EYXRhYmFzZS5jcHAgKi8sCi0JCQkJNTExQjI0QTkxMzJFMDk3
MjAwMDY1QTBDIC8qIFdlYkljb25EYXRhYmFzZS5oICovLAotCQkJCTUxODRCQzRBMTMyRTkwN0Ew
MDZCOUUyOCAvKiBXZWJJY29uRGF0YWJhc2UubWVzc2FnZXMuaW4gKi8sCi0JCQkJNTE4MzQ1OTAx
MzQ1MzJFODAwOTJCNjk2IC8qIFdlYkljb25EYXRhYmFzZUNsaWVudC5jcHAgKi8sCi0JCQkJNTE4
MzQ1OTExMzQ1MzJFODAwOTJCNjk2IC8qIFdlYkljb25EYXRhYmFzZUNsaWVudC5oICovLAorCQkJ
CTUxQzhFMTlCMUYyMTYxNzIwMEJGNzMxQiAvKiBXZWJJY29uRGF0YWJhc2UuaCAqLywKIAkJCQkx
QzhFMjgzMzEyNzVENzM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yUHJveHkuY3BwICovLAogCQkJ
CTFDOEUyODMyMTI3NUQ3MzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JQcm94eS5oICovLAogCQkJ
CTFDNzdDMTk1MTI4OEE4NzIwMDZBNzQyRiAvKiBXZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5p
biAqLywKQEAgLTc4ODAsMTAgKzc4NDQsNiBAQAogCQkJCUJDMEU2MDYwMTJENkJBOTEwMDEyQTcy
QSAvKiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJNZXNzYWdlcy5oICovLAogCQkJCUJDMEU2MTgwMTJE
NkNCMUQwMDEyQTcyQSAvKiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi8sCiAJCQkJQkMwRTYxODExMkQ2Q0IxRDAwMTJBNzJBIC8qIFdlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLywKLQkJCQk1MUQwMkY2MzEzMkVDNUI5MDBCRUFBOTYg
LyogV2ViSWNvbkRhdGFiYXNlTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKLQkJCQk1MUQwMkY2NzEz
MkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlTWVzc2FnZXMuaCAqLywKLQkJCQk1MUQw
MkY2ODEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwICovLAotCQkJCTUxRDAyRjY5MTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJh
c2VQcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJNTEwNTIzNzcxQzczREE3MDAwNzk5M0NCIC8qIFdl
YklEQkNvbm5lY3Rpb25Ub0NsaWVudE1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJNTEwNTIz
NzgxQzczREE3MDAwNzk5M0NCIC8qIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudE1lc3NhZ2VzLmgg
Ki8sCiAJCQkJNTEwNTIzNzIxQzczRDM3QjAwNzk5M0NCIC8qIFdlYklEQkNvbm5lY3Rpb25Ub1Nl
cnZlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC04NzE0LDExICs4Njc0LDYgQEAKIAkJCQlC
QzFCRTFGMjEyRDU0REJEMDAwNEEyMjggLyogV2ViR2VvbG9jYXRpb25Qcm92aWRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMkQ1MDM2NzYxQkNFRDE5RjAwRTIwQkIzIC8qIFdlYkdlc3R1cmVFdmVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNBODhCMzMxQkM2RTlDRDAwQUJBNUMyIC8qIFdlYkhp
dFRlc3RSZXN1bHREYXRhLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTFCMjRBQjEzMkUwOTcyMDAw
NjVBMEMgLyogV2ViSWNvbkRhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTgzNDU5MzEz
NDUzMkU5MDA5MkI2OTYgLyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
LQkJCQk1MUQwMkY2QTEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovLAotCQkJCTUxMUIyNEE3MTMyRTA5NTcwMDA2NUEwQyAvKiBXZWJJY29u
RGF0YWJhc2VQcm94eS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTFEMDJGNkMxMzJFQzczNzAwQkVB
QTk2IC8qIFdlYkljb25EYXRhYmFzZVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUY0NERGRUIyMUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJY29uVXRpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTA1MjM3MDFDNzM5RDQyMDA3OTkzQ0IgLyogV2ViSURCQ29ubmVjdGlvblRv
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTA1MjM3QTFDNzNEQTc3MDA3OTkzQ0IgLyog
V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApAQCAtOTM4
OCw3ICs5MzQzLDcgQEAKIAkJCQlMYXN0U3dpZnRVcGRhdGVDaGVjayA9IDA3MDA7CiAJCQkJTGFz
dFVwZ3JhZGVDaGVjayA9IDA3MDA7CiAJCQl9OwotCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9
IDFERUI5MUIxMDg3MzNEQTUwMDEwRTlDRCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9y
IFBCWFByb2plY3QgIldlYktpdDIiICovOworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDFE
RUI5MUIxMDg3MzNEQTUwMDEwRTlDRCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBC
WFByb2plY3QgIldlYktpdCIgKi87CiAJCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSAz
LjIiOwogCQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBFbmdsaXNoOwogCQkJaGFzU2Nhbm5lZEZvckVu
Y29kaW5ncyA9IDE7CkBAIC0xMDMxMCwxMSArMTAyNjUsNiBAQAogCQkJCTJENTAzNjc1MUJDRUQx
OUYwMEUyMEJCMyAvKiBXZWJHZXN0dXJlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNB
ODhCMzYxQkM2RUFENTAwQUJBNUMyIC8qIFdlYkhpdFRlc3RSZXN1bHREYXRhLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTkzQTg4QjMwMUJDNkU5OTcwMEFCQTVDMiAvKiBXZWJIaXRUZXN0UmVzdWx0
RGF0YS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTUxMUIyNEFBMTMyRTA5NzIwMDA2NUEwQyAvKiBX
ZWJJY29uRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4MzQ1OTIxMzQ1MzJFOTAw
OTJCNjk2IC8qIFdlYkljb25EYXRhYmFzZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1
MUQwMkY2NDEzMkVDNUI5MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlTWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxMUIyNEE2MTMyRTA5NTcwMDA2NUEwQyAvKiBXZWJJ
Y29uRGF0YWJhc2VQcm94eS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MUQwMkY2QjEzMkVDNzM3
MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRjQ0REZFQjMxRTlFNzUyRjAwMzhEMTk2IC8qIFdlYkljb25VdGlsaXRp
ZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTA1MjM2RjFDNzM5RDQyMDA3OTkzQ0IgLyogV2Vi
SURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMDUyMzc5MUM3
M0RBNzcwMDc5OTNDQiAvKiBXZWJJREJDb25uZWN0aW9uVG9DbGllbnRNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMTE2Nyw3ICsxMTExNyw3IEBACiAJCQlkZWZhdWx0Q29u
ZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQ
cm9kdWN0aW9uOwogCQl9OwotCQkxREVCOTFCMTA4NzMzREE1MDAxMEU5Q0QgLyogQnVpbGQgY29u
ZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJXZWJLaXQyIiAqLyA9IHsKKwkJMURFQjkx
QjEwODczM0RBNTAwMTBFOUNEIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJv
amVjdCAiV2ViS2l0IiAqLyA9IHsKIAkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJCQli
dWlsZENvbmZpZ3VyYXRpb25zID0gKAogCQkJCTFERUI5MUIyMDg3MzNEQTUwMDEwRTlDRCAvKiBE
ZWJ1ZyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JY29uRGF0YWJh
c2UvV2ViSWNvbkRhdGFiYXNlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lj
b25EYXRhYmFzZS9XZWJJY29uRGF0YWJhc2VQcm94eS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDU0MmVkZGQ2ZGMwLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSWNvbkRhdGFiYXNlL1dlYkljb25EYXRhYmFzZVByb3h5LmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDE0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIldlYkljb25EYXRhYmFzZVByb3h5LmgiCi0KLSNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCi0jaW5jbHVkZSAiV2ViSWNvbkRhdGFiYXNlTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJX
ZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgot
I2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9T
aGFyZWRCdWZmZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJJY29uRGF0YWJh
c2VQcm94eTo6fldlYkljb25EYXRhYmFzZVByb3h5KCkKLXsKLX0KLQotV2ViSWNvbkRhdGFiYXNl
UHJveHk6OldlYkljb25EYXRhYmFzZVByb3h5KFdlYlByb2Nlc3MmIHByb2Nlc3MpCi0gICAgOiBt
X3Byb2Nlc3MocHJvY2VzcykKLXsKLSAgICBtX3Byb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJJY29uRGF0YWJhc2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhp
cyk7Ci19Ci0KLWJvb2wgV2ViSWNvbkRhdGFiYXNlUHJveHk6OmlzRW5hYmxlZCgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1faXNFbmFibGVkOwotfQotCi12b2lkIFdlYkljb25EYXRhYmFzZVByb3h5
OjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKLXsKLSAgICBpZiAoZW5hYmxlZCA9PSBtX2lzRW5h
YmxlZCkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIG1faXNFbmFibGVkID0gZW5hYmxlZDsK
LSAgICBzZXRHbG9iYWxJY29uRGF0YWJhc2UoZW5hYmxlZCA/IHRoaXMgOiAwKTsKLX0KLQotdm9p
ZCBXZWJJY29uRGF0YWJhc2VQcm94eTo6cmV0YWluSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5n
JiBwYWdlVVJMKQotewotICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OlJldGFpbkljb25Gb3JQYWdlVVJMKHBhZ2VV
UkwpLCAwKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2VQcm94eTo6cmVsZWFzZUljb25Gb3JQ
YWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCkKLXsKLSAgICBtX3Byb2Nlc3MucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpSZWxlYXNl
SWNvbkZvclBhZ2VVUkwocGFnZVVSTCksIDApOwotfQotCi1JbWFnZSogV2ViSWNvbkRhdGFiYXNl
UHJveHk6OnN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBj
b25zdCBJbnRTaXplJiAvKnNpemUqLykKLXsKLSAgICBJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdWx0
OwotICAgIGlmICghbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJJY29uRGF0YWJhc2U6OlN5bmNocm9ub3VzSWNvbkRhdGFGb3JQYWdlVVJM
KHBhZ2VVUkwpLCBNZXNzYWdlczo6V2ViSWNvbkRhdGFiYXNlOjpTeW5jaHJvbm91c0ljb25EYXRh
Rm9yUGFnZVVSTDo6UmVwbHkocmVzdWx0KSwgMCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIAot
ICAgIC8vIEZJWE1FOiBSZXR1cm4gSW1hZ2UgY3JlYXRlZCB3aXRoIHRoZSBhYm92ZSBkYXRhLgot
ICAgIHJldHVybiAwOwotfQotCi0KLVN0cmluZyBXZWJJY29uRGF0YWJhc2VQcm94eTo6c3luY2hy
b25vdXNJY29uVVJMRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIC8qcGFnZVVSTCovKQotewotICAg
IC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGFzayB0aGUgVUkgcHJvY2VzcyBmb3IgdGhlIGljb25V
UkwsIGJ1dCBpdCBjYW4ndCBkbyBzbyBzeW5jaHJvbm91c2x5IGJlY2F1c2UgaXQgd2lsbCBzbG93
IGRvd24gcGFnZSBsb2FkaW5nLgotICAgIC8vIFRoZSBwYXJ0cyBpbiBXZWJDb3JlIHRoYXQgbmVl
ZCB0aGlzIGRhdGEgd2lsbCBoYXZlIHRvIGJlIGNoYW5nZWQgdG8gd29yayBhc3ljbmNocm9ub3Vz
bHkuCi0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi1ib29sIFdlYkljb25EYXRhYmFzZVByb3h5
OjpzeW5jaHJvbm91c0ljb25EYXRhS25vd25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYgLyppY29u
VVJMKi8pCi17Ci0gICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gYXNrIHRoZSBVSSBwcm9jZXNz
IGZvciB0aGUgaWNvblVSTCwgYnV0IGl0IGNhbid0IGRvIHNvIHN5bmNocm9ub3VzbHkgYmVjYXVz
ZSBpdCB3aWxsIHNsb3cgZG93biBwYWdlIGxvYWRpbmcuCi0gICAgLy8gVGhlIHBhcnRzIGluIFdl
YkNvcmUgdGhhdCBuZWVkIHRoaXMgZGF0YSB3aWxsIGhhdmUgdG8gYmUgY2hhbmdlZCB0byB3b3Jr
IGFzeWNuY2hyb25vdXNseS4KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLUljb25Mb2FkRGVjaXNp
b24gV2ViSWNvbkRhdGFiYXNlUHJveHk6OnN5bmNocm9ub3VzTG9hZERlY2lzaW9uRm9ySWNvblVS
TChjb25zdCBTdHJpbmcmIC8qaWNvblVSTCovLCBEb2N1bWVudExvYWRlciopCi17Ci0gICAgLy8g
RklYTUU6IFRoaXMgbmVlZHMgdG8gYXNrIHRoZSBVSSBwcm9jZXNzIGZvciB0aGUgaWNvblVSTCwg
YnV0IGl0IGNhbid0IGRvIHNvIHN5bmNocm9ub3VzbHkgYmVjYXVzZSBpdCB3aWxsIHNsb3cgZG93
biBwYWdlIGxvYWRpbmcuCi0gICAgLy8gVGhlIHBhcnRzIGluIFdlYkNvcmUgdGhhdCBuZWVkIHRo
aXMgZGF0YSB3aWxsIGhhdmUgdG8gYmUgY2hhbmdlZCB0byB3b3JrIGFzeWNuY2hyb25vdXNseS4K
LSAgICByZXR1cm4gSWNvbkxvYWRObzsKLX0KLQotYm9vbCBXZWJJY29uRGF0YWJhc2VQcm94eTo6
c3VwcG9ydHNBc3luY2hyb25vdXNNb2RlKCkKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9p
ZCBXZWJJY29uRGF0YWJhc2VQcm94eTo6bG9hZERlY2lzaW9uRm9ySWNvblVSTChjb25zdCBTdHJp
bmcmIGljb25VUkwsIFdlYkNvcmU6Okljb25Mb2FkRGVjaXNpb25DYWxsYmFjayYgY2FsbGJhY2sp
Ci17Ci0gICAgdWludDY0X3QgaWQgPSBjYWxsYmFjay5jYWxsYmFja0lEKCk7Ci0gICAgbV9pY29u
TG9hZERlY2lzaW9uQ2FsbGJhY2tzLmFkZChpZCwgJmNhbGxiYWNrKTsKLSAgICBtX3Byb2Nlc3Mu
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSWNvbkRhdGFiYXNl
OjpHZXRMb2FkRGVjaXNpb25Gb3JJY29uVVJMKGljb25VUkwsIGlkKSwgMCk7Ci19Ci0KLXZvaWQg
V2ViSWNvbkRhdGFiYXNlUHJveHk6OnJlY2VpdmVkSWNvbkxvYWREZWNpc2lvbihpbnQgZGVjaXNp
b24sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi17Ci0gICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX2lj
b25Mb2FkRGVjaXNpb25DYWxsYmFja3MudGFrZShjYWxsYmFja0lEKSkKLSAgICAgICAgY2FsbGJh
Y2stPnBlcmZvcm1DYWxsYmFjayhzdGF0aWNfY2FzdDxXZWJDb3JlOjpJY29uTG9hZERlY2lzaW9u
PihkZWNpc2lvbikpOwotfQotCi12b2lkIFdlYkljb25EYXRhYmFzZVByb3h5OjppY29uRGF0YUZv
ckljb25VUkwoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6SWNvbkRhdGFDYWxsYmFjayYpCi17Ci19
Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlUHJveHk6OnNldEljb25VUkxGb3JQYWdlVVJMKGNvbnN0
IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiBwYWdlVVJMKQotewotICAgIG1fcHJvY2Vz
cy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJY29uRGF0YWJh
c2U6OlNldEljb25VUkxGb3JQYWdlVVJMKGljb25VUkwsIHBhZ2VVUkwpLCAwKTsKLX0KLQotdm9p
ZCBXZWJJY29uRGF0YWJhc2VQcm94eTo6c2V0SWNvbkRhdGFGb3JJY29uVVJMKFNoYXJlZEJ1ZmZl
ciogaWNvbkRhdGEsIGNvbnN0IFN0cmluZyYgaWNvblVSTCkKLXsKLSAgICBJUEM6OkRhdGFSZWZl
cmVuY2UgZGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpY29uRGF0YSA/IGlj
b25EYXRhLT5kYXRhKCkgOiBudWxscHRyKSwgaWNvbkRhdGEgPyBpY29uRGF0YS0+c2l6ZSgpIDog
MCk7Ci0gICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYkljb25EYXRhYmFzZTo6U2V0SWNvbkRhdGFGb3JJY29uVVJMKGRhdGEsIGljb25VUkwp
LCAwKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2VQcm94eTo6dXJsSW1wb3J0RmluaXNoZWQo
KQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JY29uRGF0YWJhc2UvV2ViSWNvbkRhdGFiYXNlUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JY29uRGF0YWJhc2UvV2ViSWNvbkRhdGFiYXNlUHJveHkuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGEyMGQzNDQzYzAuLjAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JY29uRGF0YWJhc2UvV2ViSWNvbkRhdGFiYXNl
UHJveHkuaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2luY2x1ZGUgIkFQSU9iamVjdC5oIgotI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvSWNvbkRhdGFiYXNlQmFzZS5oPgotI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotY2xhc3MgV2ViUHJvY2VzczsKLQotY2xhc3MgV2ViSWNvbkRhdGFiYXNlUHJveHkg
ZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6SWNvbkRhdGFiYXNlQmFzZSwgcHJpdmF0ZSBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgV2ViSWNvbkRhdGFiYXNlUHJv
eHkoV2ViUHJvY2VzcyYpOwotICAgIHZpcnR1YWwgfldlYkljb25EYXRhYmFzZVByb3h5KCk7Ci0K
LSAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCkgZmluYWw7Ci0KLXByaXZhdGU6Ci0gICAgYm9vbCBp
c0VuYWJsZWQoKSBjb25zdCBmaW5hbDsKLQotICAgIHZvaWQgcmV0YWluSWNvbkZvclBhZ2VVUkwo
Y29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCByZWxlYXNlSWNvbkZvclBhZ2VVUkwoY29u
c3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCBzZXRJY29uVVJMRm9yUGFnZVVSTChjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICB2b2lkIHNldEljb25EYXRhRm9ySWNv
blVSTChXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKLQotICAg
IFN0cmluZyBzeW5jaHJvbm91c0ljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpIGZpbmFs
OwotICAgIGJvb2wgc3luY2hyb25vdXNJY29uRGF0YUtub3duRm9ySWNvblVSTChjb25zdCBTdHJp
bmcmKSBmaW5hbDsKLSAgICBXZWJDb3JlOjpJY29uTG9hZERlY2lzaW9uIHN5bmNocm9ub3VzTG9h
ZERlY2lzaW9uRm9ySWNvblVSTChjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciopIGZpbmFsOwotICAgIFdlYkNvcmU6OkltYWdlKiBzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJM
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBmaW5hbDsKLSAgICAKLSAg
ICBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzTW9kZSgpIGZpbmFsOwotICAgIHZvaWQgbG9hZERl
Y2lzaW9uRm9ySWNvblVSTChjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpJY29uTG9hZERlY2lzaW9u
Q2FsbGJhY2smKSBmaW5hbDsKLSAgICB2b2lkIHJlY2VpdmVkSWNvbkxvYWREZWNpc2lvbihpbnQg
ZGVjaXNpb24sIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgaWNvbkRhdGFGb3JJY29u
VVJMKGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6Okljb25EYXRhQ2FsbGJhY2smKSBmaW5hbDsKLQot
ICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCi0gICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKLSAgICAKLSAgICAvLyBDYWxs
YmFja3MgZnJvbSB0aGUgVUlQcm9jZXNzCi0gICAgdm9pZCB1cmxJbXBvcnRGaW5pc2hlZCgpOwot
Ci0gICAgYm9vbCBtX2lzRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgV2ViUHJvY2VzcyYgbV9wcm9j
ZXNzOwotICAgIAotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJDb3JlOjpJY29uTG9h
ZERlY2lzaW9uQ2FsbGJhY2s+PiBtX2ljb25Mb2FkRGVjaXNpb25DYWxsYmFja3M7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JY29uRGF0YWJhc2UvV2ViSWNvbkRhdGFiYXNlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSWNvbkRhdGFiYXNlL1dlYkljb25EYXRhYmFzZVByb3h5Lm1lc3Nh
Z2VzLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDlhMGQ5MTg0Ni4uMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ljb25EYXRhYmFzZS9XZWJJY29u
RGF0YWJhc2VQcm94eS5tZXNzYWdlcy5pbgorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAK
LSMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMK
LSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwK
LSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotbWVzc2FnZXMgLT4gV2Vi
SWNvbkRhdGFiYXNlUHJveHkgewotICAgIFVSTEltcG9ydEZpbmlzaGVkKCkKLSAgICBSZWNlaXZl
ZEljb25Mb2FkRGVjaXNpb24oaW50IGxvYWREZWNpc2lvbiwgdWludDY0X3QgY2FsbGJhY2tJRCkK
LX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDJjZmNmY2UwYzU0Li4wMTRm
NDczYjk3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC00OCw3ICs0OCw2
IEBACiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViRnVsbFNjcmVlbk1hbmFnZXIuaCIKLSNpbmNsdWRlICJX
ZWJJY29uRGF0YWJhc2VNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYk5hdmlnYXRpb25EYXRhU3Rv
cmUuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwUHJveHku
aCIKQEAgLTE3OTIsMTEgKzE3OTEsNiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRS
ZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQogICAgIHdlYlBhZ2UtPmRpZFJlc3RvcmVTY3JvbGxQb3Np
dGlvbigpOwogfQogCi1ib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1c2VJY29uTG9hZGluZ0Ns
aWVudCgpCi17Ci0gICAgcmV0dXJuIG1fdXNlSWNvbkxvYWRpbmdDbGllbnQ7Ci19Ci0KIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmdldExvYWREZWNpc2lvbkZvckljb25zKGNvbnN0IFZlY3Rv
cjxzdGQ6OnBhaXI8V2ViQ29yZTo6TGlua0ljb24mLCB1aW50NjRfdD4+JiBpY29ucykKIHsKICAg
ICBhdXRvKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaAppbmRleCA2NTViMGJkNWE3Yi4uZWFmMjk4ZGRjMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCkBAIC0yNTYsNyArMjU2LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkUmVz
dG9yZVNjcm9sbFBvc2l0aW9uKCkgZmluYWw7CiAKLSAgICBib29sIHVzZUljb25Mb2FkaW5nQ2xp
ZW50KCkgZmluYWw7CiAgICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhjb25zdCBWZWN0
b3I8c3RkOjpwYWlyPFdlYkNvcmU6OkxpbmtJY29uJiwgdWludDY0X3Q+PiYpIGZpbmFsOwogICAg
IHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciopIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKaW5kZXggZjYxYjc3Mzk2MjAuLjNlYzQzYjJhZGIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC01MSw3ICs1MSw2IEBACiAjaW5jbHVkZSAi
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkdhbWVwYWRQcm92aWRl
ci5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uTWFuYWdlci5oIgotI2luY2x1ZGUgIldlYklj
b25EYXRhYmFzZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViTG9hZGVyU3RyYXRlZ3kuaCIKICNpbmNs
dWRlICJXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViTWVtb3J5U2Ft
cGxlci5oIgpAQCAtODgsNyArODcsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR0NDb250cm9sbGVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HbHlwaFBhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hU
TUxNZWRpYUVsZW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ljb25EYXRhYmFzZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSlNET01XaW5kb3cuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xhbmd1YWdl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NYWluRnJhbWUuaD4KQEAgLTE2Myw3ICsxNjEsNiBAQCBX
ZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICAgICAsIG1fdmlld1VwZGF0ZURpc3BhdGNoZXIoVmll
d1VwZGF0ZURpc3BhdGNoZXI6OmNyZWF0ZSgpKQogI2VuZGlmCiAgICAgLCBtX3dlYkluc3BlY3Rv
ckludGVycnVwdERpc3BhdGNoZXIoV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlcjo6Y3Jl
YXRlKCkpCi0gICAgLCBtX2ljb25EYXRhYmFzZVByb3h5KCpuZXcgV2ViSWNvbkRhdGFiYXNlUHJv
eHkoKnRoaXMpKQogICAgICwgbV93ZWJMb2FkZXJTdHJhdGVneSgqbmV3IFdlYkxvYWRlclN0cmF0
ZWd5KQogICAgICwgbV9kbnNQcmVmZXRjaEh5c3RlcmVyaXMoW3RoaXNdKEh5c3RlcmVzaXNTdGF0
ZSBzdGF0ZSkgeyBpZiAoc3RhdGUgPT0gSHlzdGVyZXNpc1N0YXRlOjpTdG9wcGVkKSBtX2Ruc1By
ZWZldGNoZWRIb3N0cy5jbGVhcigpOyB9KQogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQpAQCAtMzAwLDEwICsyOTcsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9j
ZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIGF1dG8m
IGRhdGFiYXNlTWFuYWdlciA9IERhdGFiYXNlTWFuYWdlcjo6c2luZ2xldG9uKCk7CiAgICAgZGF0
YWJhc2VNYW5hZ2VyLmluaXRpYWxpemUocGFyYW1ldGVycy53ZWJTUUxEYXRhYmFzZURpcmVjdG9y
eSk7CiAKLSNpZiBFTkFCTEUoSUNPTkRBVEFCQVNFKQotICAgIG1faWNvbkRhdGFiYXNlUHJveHku
c2V0RW5hYmxlZChwYXJhbWV0ZXJzLmljb25EYXRhYmFzZUVuYWJsZWQpOwotI2VuZGlmCi0KICAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgY29uc3RydWN0ZWQgcGVyIGRhdGEgc3RvcmUsIG5v
dCBwZXIgcHJvY2Vzcy4KICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlID0gQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnksIHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7
CiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMTAxNSwxMiArMTAwOCw2IEBAIHZvaWQgV2ViUHJvY2Vz
czo6Z2V0V2ViQ29yZVN0YXRpc3RpY3ModWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBkYXRhLnN0
YXRpc3RpY3NOdW1iZXJzLnNldChBU0NJSUxpdGVyYWwoIkZhc3RNYWxsb2NDb21taXR0ZWRWTUJ5
dGVzIiksIGZhc3RNYWxsb2NTdGF0aXN0aWNzLmNvbW1pdHRlZFZNQnl0ZXMpOwogICAgIGRhdGEu
c3RhdGlzdGljc051bWJlcnMuc2V0KEFTQ0lJTGl0ZXJhbCgiRmFzdE1hbGxvY0ZyZWVMaXN0Qnl0
ZXMiKSwgZmFzdE1hbGxvY1N0YXRpc3RpY3MuZnJlZUxpc3RCeXRlcyk7CiAgICAgCi0gICAgLy8g
R2F0aGVyIGljb24gc3RhdGlzdGljcy4KLSAgICBkYXRhLnN0YXRpc3RpY3NOdW1iZXJzLnNldChB
U0NJSUxpdGVyYWwoIkljb25QYWdlVVJMTWFwcGluZ0NvdW50IiksIGljb25EYXRhYmFzZSgpLnBh
Z2VVUkxNYXBwaW5nQ291bnQoKSk7Ci0gICAgZGF0YS5zdGF0aXN0aWNzTnVtYmVycy5zZXQoQVND
SUlMaXRlcmFsKCJJY29uUmV0YWluZWRQYWdlVVJMQ291bnQiKSwgaWNvbkRhdGFiYXNlKCkucmV0
YWluZWRQYWdlVVJMQ291bnQoKSk7Ci0gICAgZGF0YS5zdGF0aXN0aWNzTnVtYmVycy5zZXQoQVND
SUlMaXRlcmFsKCJJY29uUmVjb3JkQ291bnQiKSwgaWNvbkRhdGFiYXNlKCkuaWNvblJlY29yZENv
dW50KCkpOwotICAgIGRhdGEuc3RhdGlzdGljc051bWJlcnMuc2V0KEFTQ0lJTGl0ZXJhbCgiSWNv
bnNXaXRoRGF0YUNvdW50IiksIGljb25EYXRhYmFzZSgpLmljb25SZWNvcmRDb3VudFdpdGhEYXRh
KCkpOwotICAgIAogICAgIC8vIEdhdGhlciBmb250IHN0YXRpc3RpY3MuCiAgICAgYXV0byYgZm9u
dENhY2hlID0gRm9udENhY2hlOjpzaW5nbGV0b24oKTsKICAgICBkYXRhLnN0YXRpc3RpY3NOdW1i
ZXJzLnNldChBU0NJSUxpdGVyYWwoIkNhY2hlZEZvbnREYXRhQ291bnQiKSwgZm9udENhY2hlLmZv
bnRDb3VudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGNhMjNl
NmZmYWEzLi4wNmVkMTA0ODYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
CkBAIC04Miw3ICs4Miw2IEBAIGNsYXNzIFdheWxhbmRDb21wb3NpdG9yRGlzcGxheTsKIGNsYXNz
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk7CiBjbGFzcyBXZWJDb25uZWN0aW9uVG9VSVByb2Nl
c3M7CiBjbGFzcyBXZWJGcmFtZTsKLWNsYXNzIFdlYkljb25EYXRhYmFzZVByb3h5OwogY2xhc3Mg
V2ViTG9hZGVyU3RyYXRlZ3k7CiBjbGFzcyBXZWJQYWdlOwogY2xhc3MgV2ViUGFnZUdyb3VwUHJv
eHk7CkBAIC0zNzYsOCArMzc1LDYgQEAgcHJpdmF0ZToKIAogICAgIFRleHRDaGVja2VyU3RhdGUg
bV90ZXh0Q2hlY2tlclN0YXRlOwogCi0gICAgV2ViSWNvbkRhdGFiYXNlUHJveHkmIG1faWNvbkRh
dGFiYXNlUHJveHk7Ci0KICAgICB2b2lkIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
OwogICAgIFJlZlB0cjxOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24+IG1fbmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uOwogICAgIFdlYkxvYWRlclN0cmF0ZWd5JiBtX3dlYkxvYWRlclN0cmF0ZWd5Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316040</attachid>
            <date>2017-07-20 16:40:36 -0700</date>
            <delta_ts>2017-07-20 20:32:24 -0700</delta_ts>
            <desc>Patch with &lt;tab&gt; fixed</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>84020</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0
L0NNYWtlTGlzdHMudHh0CmluZGV4IGQzMGEwYmZiYjdkLi4zMzAyMjNlYTBhNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtl
TGlzdHMudHh0CkBAIC0zMTEsOCArMzExLDYgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJ
UHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKICAgICBVSVByb2Nlc3MvV2Vi
R2VvbG9jYXRpb25Qcm92aWRlci5jcHAKICAgICBVSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5j
cHAKLSAgICBVSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmNwcAotICAgIFVJUHJvY2Vzcy9XZWJJ
Y29uRGF0YWJhc2VDbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNw
cAogICAgIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JVdGlsaXRpZXMuY3BwCiAgICAgVUlQcm9jZXNz
L1dlYk5hdmlnYXRpb25TdGF0ZS5jcHAKQEAgLTQ2Myw4ICs0NjEsNiBAQCBzZXQoV2ViS2l0Ml9T
T1VSQ0VTCiAgICAgV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlci5jcHAKICAgICBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0
aW9uTWFuYWdlci5jcHAKIAotICAgIFdlYlByb2Nlc3MvSWNvbkRhdGFiYXNlL1dlYkljb25EYXRh
YmFzZVByb3h5LmNwcAotCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFj
a0ZvcndhcmRMaXN0LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcApAQCAtNjE2LDcgKzYxMiw2IEBAIHNldChXZWJL
aXQyX01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94
eS5tZXNzYWdlcy5pbgogICAgIFVJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Lm1l
c3NhZ2VzLmluCiAgICAgVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Lm1lc3Nh
Z2VzLmluCi0gICAgVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5tZXNzYWdlcy5pbgogICAgIFVJ
UHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgogICAgIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KICAgICBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1l
c3NhZ2VzLmluCkBAIC02NTIsOCArNjQ3LDYgQEAgc2V0KFdlYktpdDJfTUVTU0FHRVNfSU5fRklM
RVMKIAogICAgIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1l
c3NhZ2VzLmluCiAKLSAgICBXZWJQcm9jZXNzL0ljb25EYXRhYmFzZS9XZWJJY29uRGF0YWJhc2VQ
cm94eS5tZXNzYWdlcy5pbgotCiAgICAgV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENN
b25pdG9yLm1lc3NhZ2VzLmluCiAgICAgV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENS
ZXNvbHZlci5tZXNzYWdlcy5pbgogICAgIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvV2ViUlRD
U29ja2V0Lm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVkNTNiMjgzMTMwLi5kODQ1ZjU2YzZkZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw3OCBAQAorMjAxNy0wNy0yMCAgQnJhZHkgRWlkc29uICA8YmVp
ZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0IHJpZCBvZiBJY29uRGF0YWJhc2UgcmVsYXRl
ZCBjb2RlIGluIFdlYktpdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NDY5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgbGVhdmVzIHRoZSBDLUFQSSBjbGFzcyBidXQgZ3V0cyBpdC4KKworICAg
ICAgICBObyBleHBsYW5hdGlvbnMgb2YgdGhlIG90aGVyIGNoYW5nZXMgYXJlIG5lZWRlZC4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6
CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgIChXS0NvbnRleHRHZXRJY29u
RGF0YWJhc2UpOgorICAgICAgICAoV0tDb250ZXh0U2V0SWNvbkRhdGFiYXNlUGF0aCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdLSWNv
bkRhdGFiYXNlU2V0SWNvbkRhdGFiYXNlQ2xpZW50KToKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNl
UmV0YWluSWNvbkZvclVSTCk6CisgICAgICAgIChXS0ljb25EYXRhYmFzZVJlbGVhc2VJY29uRm9y
VVJMKToKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNlU2V0SWNvbkRhdGFGb3JJY29uVVJMKToKKyAg
ICAgICAgKFdLSWNvbkRhdGFiYXNlU2V0SWNvblVSTEZvclBhZ2VVUkwpOgorICAgICAgICAoV0tJ
Y29uRGF0YWJhc2VDb3B5SWNvblVSTEZvclBhZ2VVUkwpOgorICAgICAgICAoV0tJY29uRGF0YWJh
c2VDb3B5SWNvbkRhdGFGb3JQYWdlVVJMKToKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNlRW5hYmxl
RGF0YWJhc2VDbGVhbnVwKToKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNlUmVtb3ZlQWxsSWNvbnMp
OgorICAgICAgICAoV0tJY29uRGF0YWJhc2VDaGVja0ludGVncml0eUJlZm9yZU9wZW5pbmcpOgor
ICAgICAgICAoV0tJY29uRGF0YWJhc2VDbG9zZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L2NnL1dLSWNvbkRhdGFiYXNlQ0cuY3BwOgorICAgICAgICAoV0tJY29uRGF0YWJhc2VUcnlHZXRD
R0ltYWdlRm9yVVJMKToKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNlVHJ5Q29weUNHSW1hZ2VBcnJh
eUZvclVSTCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1bHRJY29u
RGF0YWJhc2VQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSWNvbkRhdGFi
YXNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmg6
CisgICAgICAgIChXZWJLaXQ6OldlYkljb25EYXRhYmFzZTo6Y2xlYXJQcm9jZXNzUG9vbCk6IERl
bGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5tZXNzYWdlcy5pbjog
UmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlQ2xpZW50Lmg6IFJl
bW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6bV9oaWRkZW5QYWdlVGhyb3R0bGluZ1RpbWVyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6On5XZWJQcm9jZXNzUG9vbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpzZXRBbnlQYWdlR3JvdXBNaWdodEhhdmVQcml2YXRlQnJvd3NpbmdFbmFibGVk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0SWNvbkRhdGFiYXNlUGF0aCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjppY29uRGF0YWJhc2VQ
YXRoKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2lsbFNodXREb3duKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5OjpyZXRhaW5JY29uRm9yUGFnZVVSTCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cmVsZWFzZUljb25Gb3JQYWdlVVJMKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpyZWxlYXNlUmVtYWluaW5nSWNv
bnNGb3JQYWdlVVJMcyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46
CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1bHRJY29uRGF0YWJhc2VQYXRo
KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NQb29sV1BFLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdEljb25E
YXRhYmFzZVBhdGgpOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvSWNvbkRhdGFiYXNlL1dlYkljb25EYXRh
YmFzZVByb3h5LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0ljb25EYXRhYmFz
ZS9XZWJJY29uRGF0YWJhc2VQcm94eS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SWNvbkRhdGFiYXNlL1dlYkljb25EYXRhYmFzZVByb3h5Lm1lc3NhZ2VzLmluOiBSZW1vdmVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6dXNlSWNvbkxvYWRp
bmdDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpnZXRXZWJDb3JlU3RhdGlzdGljcyk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmg6CisKIDIwMTctMDctMTkgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0cyBub3QgdXBk
YXRlZCBmb3IgcHJvZ3JhbW1hdGljIHNjcm9sbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpp
bmRleCA4M2FkMGU4YTU3OC4uMTliNDJmOWRiYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1h
a2UKQEAgLTE0Miw4ICsxNDIsNiBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eSBcCiAgICAgV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50IFwKICAg
ICBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIgXAotICAgIFdlYkljb25EYXRhYmFzZSBcCi0gICAg
V2ViSWNvbkRhdGFiYXNlUHJveHkgXAogICAgIFdlYkluc3BlY3RvciBcCiAgICAgV2ViSW5zcGVj
dG9ySW50ZXJydXB0RGlzcGF0Y2hlciBcCiAgICAgV2ViSW5zcGVjdG9yUHJveHkgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cAppbmRleCA0MzU4ZTc2NTNkNi4uMzE0NzFiYjllZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC04OSw3ICs4
OSw2IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5j
b2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHNob3VsZFVzZUZvbnRTbW9vdGhp
bmc7CiAgICAgZW5jb2RlciA8PCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDsKICAgICBl
bmNvZGVyIDw8IGZvbnRXaGl0ZWxpc3Q7Ci0gICAgZW5jb2RlciA8PCBpY29uRGF0YWJhc2VFbmFi
bGVkOwogICAgIGVuY29kZXIgPDwgdGVybWluYXRpb25UaW1lb3V0OwogICAgIGVuY29kZXIgPDwg
bGFuZ3VhZ2VzOwogICAgIGVuY29kZXIgPDwgdGV4dENoZWNrZXJTdGF0ZTsKQEAgLTIzMiw4ICsy
MzEsNiBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIsIFdlYlByb2Nlc3NDcmVhdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmZvbnRXaGl0ZWxpc3QpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmljb25E
YXRhYmFzZUVuYWJsZWQpKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYXJhbWV0ZXJzLnRlcm1pbmF0aW9uVGltZW91dCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMubGFuZ3VhZ2VzKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aAppbmRleCBjNWQyOTFiM2Y3Mi4uOWMxMThmZDNiMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTExNyw3ICsxMTcs
NiBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgYm9vbCBzaG91
bGRTdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxlciB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91
bGRVc2VGb250U21vb3RoaW5nIHsgdHJ1ZSB9OwogICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgaWNvbkRhdGFiYXNlRW5hYmxlZCB7IGZh
bHNlIH07CiAgICAgYm9vbCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkIHsgZmFsc2UgfTsKICAg
ICBib29sIG1lbW9yeUNhY2hlRGlzYWJsZWQgeyBmYWxzZSB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAppbmRleCAwNjVlZjgxMmNjYS4uYTUwMTliMjUy
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApAQCAt
NDAsNyArNDAsNiBAQAogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCiAjaW5jbHVkZSAiV2ViQ2Vy
dGlmaWNhdGVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50
LmgiCi0jaW5jbHVkZSAiV2ViSWNvbkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bv
b2wuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CkBAIC00MTksOSArNDE4LDkgQEAgV0tHZW9sb2NhdGlvbk1hbmFnZXJSZWYgV0tDb250
ZXh0R2V0R2VvbG9jYXRpb25NYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQogICAgIHJl
dHVybiB0b0FQSSh0b0ltcGwoY29udGV4dFJlZiktPnN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk+KCkpOwogfQogCi1XS0ljb25EYXRhYmFzZVJlZiBXS0NvbnRleHRHZXRJY29u
RGF0YWJhc2UoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCitXS0ljb25EYXRhYmFzZVJlZiBXS0Nv
bnRleHRHZXRJY29uRGF0YWJhc2UoV0tDb250ZXh0UmVmKQogewotICAgIHJldHVybiB0b0FQSSh0
b0ltcGwoY29udGV4dFJlZiktPmljb25EYXRhYmFzZSgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAogV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIFdLQ29udGV4dEdldEtleVZhbHVlU3Rv
cmFnZU1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHQpCkBAIC00NTksOSArNDU4LDggQEAgdm9p
ZCBXS0NvbnRleHRTdG9wTWVtb3J5U2FtcGxlcihXS0NvbnRleHRSZWYgY29udGV4dFJlZikKICAg
ICB0b0ltcGwoY29udGV4dFJlZiktPnN0b3BNZW1vcnlTYW1wbGVyKCk7CiB9CiAKLXZvaWQgV0tD
b250ZXh0U2V0SWNvbkRhdGFiYXNlUGF0aChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tTdHJp
bmdSZWYgaWNvbkRhdGFiYXNlUGF0aCkKK3ZvaWQgV0tDb250ZXh0U2V0SWNvbkRhdGFiYXNlUGF0
aChXS0NvbnRleHRSZWYsIFdLU3RyaW5nUmVmKQogewotICAgIHRvSW1wbChjb250ZXh0UmVmKS0+
c2V0SWNvbkRhdGFiYXNlUGF0aCh0b0ltcGwoaWNvbkRhdGFiYXNlUGF0aCktPnN0cmluZygpKTsK
IH0KIAogdm9pZCBXS0NvbnRleHRBbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3Qo
V0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLQ2VydGlmaWNhdGVJbmZvUmVmIGNlcnRpZmljYXRl
UmVmLCBXS1N0cmluZ1JlZiBob3N0UmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tJY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tJY29uRGF0YWJhc2UuY3BwCmluZGV4IDAxNmZkYzJkZDE1Li4xZjEyNzQwYWQyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tJY29uRGF0YWJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLSWNvbkRhdGFiYXNlLmNw
cApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkFQSURhdGEuaCIKICNpbmNsdWRlICJXS0FQ
SUNhc3QuaCIKICNpbmNsdWRlICJXZWJJY29uRGF0YWJhc2UuaCIKLSNpbmNsdWRlICJXZWJJY29u
RGF0YWJhc2VDbGllbnQuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApAQCAtMzgsNTkg
KzM3LDQ4IEBAIFdLVHlwZUlEIFdLSWNvbkRhdGFiYXNlR2V0VHlwZUlEKCkKICAgICByZXR1cm4g
dG9BUEkoV2ViSWNvbkRhdGFiYXNlOjpBUElUeXBlKTsKIH0KIAotdm9pZCBXS0ljb25EYXRhYmFz
ZVNldEljb25EYXRhYmFzZUNsaWVudChXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2VSZWYs
IGNvbnN0IFdLSWNvbkRhdGFiYXNlQ2xpZW50QmFzZSogd2tDbGllbnQpCit2b2lkIFdLSWNvbkRh
dGFiYXNlU2V0SWNvbkRhdGFiYXNlQ2xpZW50KFdLSWNvbkRhdGFiYXNlUmVmLCBjb25zdCBXS0lj
b25EYXRhYmFzZUNsaWVudEJhc2UqKQogewotICAgIHRvSW1wbChpY29uRGF0YWJhc2VSZWYpLT5z
ZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJJY29uRGF0YWJhc2VDbGllbnQ+KHdrQ2xpZW50
KSk7CiB9CiAKLXZvaWQgV0tJY29uRGF0YWJhc2VSZXRhaW5JY29uRm9yVVJMKFdLSWNvbkRhdGFi
YXNlUmVmIGljb25EYXRhYmFzZVJlZiwgV0tVUkxSZWYgcGFnZVVSTFJlZikKK3ZvaWQgV0tJY29u
RGF0YWJhc2VSZXRhaW5JY29uRm9yVVJMKFdLSWNvbkRhdGFiYXNlUmVmLCBXS1VSTFJlZikKIHsK
LSAgICB0b0ltcGwoaWNvbkRhdGFiYXNlUmVmKS0+cmV0YWluSWNvbkZvclBhZ2VVUkwodG9XVEZT
dHJpbmcocGFnZVVSTFJlZikpOwogfQogCi12b2lkIFdLSWNvbkRhdGFiYXNlUmVsZWFzZUljb25G
b3JVUkwoV0tJY29uRGF0YWJhc2VSZWYgaWNvbkRhdGFiYXNlUmVmLCBXS1VSTFJlZiBwYWdlVVJM
UmVmKQordm9pZCBXS0ljb25EYXRhYmFzZVJlbGVhc2VJY29uRm9yVVJMKFdLSWNvbkRhdGFiYXNl
UmVmLCBXS1VSTFJlZikKIHsKLSAgICB0b0ltcGwoaWNvbkRhdGFiYXNlUmVmKS0+cmVsZWFzZUlj
b25Gb3JQYWdlVVJMKHRvV1RGU3RyaW5nKHBhZ2VVUkxSZWYpKTsKIH0KIAotdm9pZCBXS0ljb25E
YXRhYmFzZVNldEljb25EYXRhRm9ySWNvblVSTChXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJh
c2VSZWYsIFdLRGF0YVJlZiBpY29uRGF0YVJlZiwgV0tVUkxSZWYgaWNvblVSTFJlZikKK3ZvaWQg
V0tJY29uRGF0YWJhc2VTZXRJY29uRGF0YUZvckljb25VUkwoV0tJY29uRGF0YWJhc2VSZWYsIFdL
RGF0YVJlZiwgV0tVUkxSZWYpCiB7Ci0gICAgdG9JbXBsKGljb25EYXRhYmFzZVJlZiktPnNldElj
b25EYXRhRm9ySWNvblVSTCh0b0ltcGwoaWNvbkRhdGFSZWYpLT5kYXRhUmVmZXJlbmNlKCksIHRv
V1RGU3RyaW5nKGljb25VUkxSZWYpKTsKIH0KIAotdm9pZCBXS0ljb25EYXRhYmFzZVNldEljb25V
UkxGb3JQYWdlVVJMKFdLSWNvbkRhdGFiYXNlUmVmIGljb25EYXRhYmFzZVJlZiwgV0tVUkxSZWYg
aWNvblVSTFJlZiwgV0tVUkxSZWYgcGFnZVVSTFJlZikKK3ZvaWQgV0tJY29uRGF0YWJhc2VTZXRJ
Y29uVVJMRm9yUGFnZVVSTChXS0ljb25EYXRhYmFzZVJlZiwgV0tVUkxSZWYsIFdLVVJMUmVmKQog
ewotICAgIHRvSW1wbChpY29uRGF0YWJhc2VSZWYpLT5zZXRJY29uVVJMRm9yUGFnZVVSTCh0b1dU
RlN0cmluZyhpY29uVVJMUmVmKSwgdG9XVEZTdHJpbmcocGFnZVVSTFJlZikpOwogfQogCi1XS1VS
TFJlZiBXS0ljb25EYXRhYmFzZUNvcHlJY29uVVJMRm9yUGFnZVVSTChXS0ljb25EYXRhYmFzZVJl
ZiBpY29uRGF0YWJhc2VSZWYsIFdLVVJMUmVmIHBhZ2VVUkxSZWYpCitXS1VSTFJlZiBXS0ljb25E
YXRhYmFzZUNvcHlJY29uVVJMRm9yUGFnZVVSTChXS0ljb25EYXRhYmFzZVJlZiwgV0tVUkxSZWYp
CiB7Ci0gICAgU3RyaW5nIGljb25VUkxTdHJpbmc7Ci0gICAgdG9JbXBsKGljb25EYXRhYmFzZVJl
ZiktPnN5bmNocm9ub3VzSWNvblVSTEZvclBhZ2VVUkwodG9XVEZTdHJpbmcocGFnZVVSTFJlZiks
IGljb25VUkxTdHJpbmcpOwotICAgIHJldHVybiB0b0NvcGllZFVSTEFQSShpY29uVVJMU3RyaW5n
KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotV0tEYXRhUmVmIFdLSWNvbkRhdGFiYXNlQ29w
eUljb25EYXRhRm9yUGFnZVVSTChXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2VSZWYsIFdL
VVJMUmVmIHBhZ2VVUkwpCitXS0RhdGFSZWYgV0tJY29uRGF0YWJhc2VDb3B5SWNvbkRhdGFGb3JQ
YWdlVVJMKFdLSWNvbkRhdGFiYXNlUmVmLCBXS1VSTFJlZikKIHsKLSAgICByZXR1cm4gdG9BUEko
dG9JbXBsKGljb25EYXRhYmFzZVJlZiktPmljb25EYXRhRm9yUGFnZVVSTCh0b1dURlN0cmluZyhw
YWdlVVJMKSkubGVha1JlZigpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBXS0lj
b25EYXRhYmFzZUVuYWJsZURhdGFiYXNlQ2xlYW51cChXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0
YWJhc2VSZWYpCit2b2lkIFdLSWNvbkRhdGFiYXNlRW5hYmxlRGF0YWJhc2VDbGVhbnVwKFdLSWNv
bkRhdGFiYXNlUmVmKQogewotICAgIHRvSW1wbChpY29uRGF0YWJhc2VSZWYpLT5lbmFibGVEYXRh
YmFzZUNsZWFudXAoKTsKIH0KIAotdm9pZCBXS0ljb25EYXRhYmFzZVJlbW92ZUFsbEljb25zKFdL
SWNvbkRhdGFiYXNlUmVmIGljb25EYXRhYmFzZVJlZikKK3ZvaWQgV0tJY29uRGF0YWJhc2VSZW1v
dmVBbGxJY29ucyhXS0ljb25EYXRhYmFzZVJlZikKIHsKLSAgICB0b0ltcGwoaWNvbkRhdGFiYXNl
UmVmKS0+cmVtb3ZlQWxsSWNvbnMoKTsKIH0KIAotdm9pZCBXS0ljb25EYXRhYmFzZUNoZWNrSW50
ZWdyaXR5QmVmb3JlT3BlbmluZyhXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2VSZWYpCit2
b2lkIFdLSWNvbkRhdGFiYXNlQ2hlY2tJbnRlZ3JpdHlCZWZvcmVPcGVuaW5nKFdLSWNvbkRhdGFi
YXNlUmVmKQogewotICAgIHRvSW1wbChpY29uRGF0YWJhc2VSZWYpLT5jaGVja0ludGVncml0eUJl
Zm9yZU9wZW5pbmcoKTsKIH0KIAotdm9pZCBXS0ljb25EYXRhYmFzZUNsb3NlKFdLSWNvbkRhdGFi
YXNlUmVmIGljb25EYXRhYmFzZVJlZikKK3ZvaWQgV0tJY29uRGF0YWJhc2VDbG9zZShXS0ljb25E
YXRhYmFzZVJlZikKIHsKLSAgICB0b0ltcGwoaWNvbkRhdGFiYXNlUmVmKS0+Y2xvc2UoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL2NhaXJvL1dLSWNvbkRh
dGFiYXNlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvY2Fpcm8vV0tJ
Y29uRGF0YWJhc2VDYWlyby5jcHAKaW5kZXggMTE4YzRkOGNiNzUuLmZjNWI2MDNlNmU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9jYWlyby9XS0ljb25EYXRhYmFz
ZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9jYWlyby9XS0lj
b25EYXRhYmFzZUNhaXJvLmNwcApAQCAtMzQsNSArMzQsNSBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwogCiBjYWlyb19zdXJmYWNlX3QqIFdLSWNvbkRhdGFiYXNlVHJ5R2V0Q2Fpcm9TdXJmYWNl
Rm9yVVJMKFdLSWNvbkRhdGFiYXNlUmVmIGljb25EYXRhYmFzZSwgV0tVUkxSZWYgdXJsKQogewot
ICAgIHJldHVybiB0b0ltcGwoaWNvbkRhdGFiYXNlKS0+bmF0aXZlSW1hZ2VGb3JQYWdlVVJMKHRv
V1RGU3RyaW5nKHVybCkpLmdldCgpOworICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvY2cvV0tJY29uRGF0YWJhc2VDRy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9jZy9XS0ljb25EYXRhYmFzZUNHLmNwcApp
bmRleCBhMjc5YWY2MjU1Yi4uNGIwNDBkYmMyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL2NnL1dLSWNvbkRhdGFiYXNlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL2NnL1dLSWNvbkRhdGFiYXNlQ0cuY3BwCkBAIC0yNiw3ICsyNiw2
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV0tJY29uRGF0YWJhc2VDRy5oIgog
Ci0jaW5jbHVkZSAiV2ViSWNvbkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAj
aW5jbHVkZSAiV0tTaGFyZWRBUElDYXN0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZS5oPgpA
QCAtMzQsMjUgKzMzLDEyIEBACiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKLUNHSW1hZ2VSZWYgV0tJY29uRGF0YWJhc2VUcnlHZXRDR0ltYWdlRm9y
VVJMKFdLSWNvbkRhdGFiYXNlUmVmIGljb25EYXRhYmFzZVJlZiwgV0tVUkxSZWYgdXJsUmVmLCBX
S1NpemUgc2l6ZSkKK0NHSW1hZ2VSZWYgV0tJY29uRGF0YWJhc2VUcnlHZXRDR0ltYWdlRm9yVVJM
KFdLSWNvbkRhdGFiYXNlUmVmLCBXS1VSTFJlZiwgV0tTaXplKQogewotICAgIEltYWdlKiBpbWFn
ZSA9IHRvSW1wbChpY29uRGF0YWJhc2VSZWYpLT5pbWFnZUZvclBhZ2VVUkwodG9XVEZTdHJpbmco
dXJsUmVmKSk7Ci0gICAgcmV0dXJuIGltYWdlID8gaW1hZ2UtPm5hdGl2ZUltYWdlT2ZTaXplKElu
dFNpemUoc3RhdGljX2Nhc3Q8aW50PihzaXplLndpZHRoKSwgc3RhdGljX2Nhc3Q8aW50PihzaXpl
LmhlaWdodCkpKS5nZXQoKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUNG
QXJyYXlSZWYgV0tJY29uRGF0YWJhc2VUcnlDb3B5Q0dJbWFnZUFycmF5Rm9yVVJMKFdLSWNvbkRh
dGFiYXNlUmVmIGljb25EYXRhYmFzZVJlZiwgV0tVUkxSZWYgdXJsUmVmKQorQ0ZBcnJheVJlZiBX
S0ljb25EYXRhYmFzZVRyeUNvcHlDR0ltYWdlQXJyYXlGb3JVUkwoV0tJY29uRGF0YWJhc2VSZWYs
IFdLVVJMUmVmKQogewotICAgIEltYWdlKiBpbWFnZSA9IHRvSW1wbChpY29uRGF0YWJhc2VSZWYp
LT5pbWFnZUZvclBhZ2VVUkwodG9XVEZTdHJpbmcodXJsUmVmKSk7Ci0gICAgaWYgKCFpbWFnZSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIG5hdGl2ZUltYWdlcyA9IGltYWdl
LT5mcmFtZXNOYXRpdmVJbWFnZXMoKTsKLSAgICBpZiAoIW5hdGl2ZUltYWdlcy5zaXplKCkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAotICAgIENGTXV0YWJsZUFycmF5UmVmIGFycmF5
ID0gQ0ZBcnJheUNyZWF0ZU11dGFibGUobnVsbHB0ciwgbmF0aXZlSW1hZ2VzLnNpemUoKSwgJmtD
RlR5cGVBcnJheUNhbGxCYWNrcyk7Ci0gICAgZm9yIChhdXRvIG5hdGl2ZUltYWdlIDogbmF0aXZl
SW1hZ2VzKQotICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoYXJyYXksIG5hdGl2ZUltYWdlLmdl
dCgpKTsKLSAgICAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZBcnJheVJlZj4oYXJyYXkpOwor
ICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCAzOGI3NWFhYmVkNy4uMjU4N2Y4
ZTkxZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYkNvbnRleHQuY3BwCkBAIC04OTYsMTIgKzg5NiwxMiBAQCB2b2lkIHdlYmtpdF93ZWJf
Y29udGV4dF9zZXRfZmF2aWNvbl9kYXRhYmFzZV9kaXJlY3RvcnkoV2ViS2l0V2ViQ29udGV4dCog
Y29udGV4dAogICAgIC8vIFVzZSBkZWZhdWx0IGlmIDAgaXMgcGFzc2VkIGFzIHBhcmFtZXRlci4K
ICAgICBTdHJpbmcgZGlyZWN0b3J5UGF0aCA9IFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgcHJpdi0+ZmF2aWNvbkRhdGFiYXNlRGlyZWN0b3J5
ID0gZGlyZWN0b3J5UGF0aC5pc0VtcHR5KCkKLSAgICAgICAgPyBwcml2LT5wcm9jZXNzUG9vbC0+
aWNvbkRhdGFiYXNlUGF0aCgpLnV0ZjgoKQorICAgICAgICA/ICIiCiAgICAgICAgIDogZGlyZWN0
b3J5UGF0aC51dGY4KCk7CiAKICAgICAvLyBCdWlsZCB0aGUgZnVsbCBwYXRoIHRvIHRoZSBpY29u
IGRhdGFiYXNlIGZpbGUgb24gZGlzay4KICAgICBHVW5pcXVlUHRyPGdjaGFyPiBmYXZpY29uRGF0
YWJhc2VQYXRoKGdfYnVpbGRfZmlsZW5hbWUocHJpdi0+ZmF2aWNvbkRhdGFiYXNlRGlyZWN0b3J5
LmRhdGEoKSwKLSAgICAgICAgV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpkZWZhdWx0RGF0YWJhc2VG
aWxlbmFtZSgpLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIpKTsKKyAgICAgICAgIldlYnBhZ2VJY29u
cy5kYiIsIG51bGxwdHIpKTsKIAogICAgIC8vIFNldHRpbmcgdGhlIHBhdGggd2lsbCBjYXVzZSB0
aGUgaWNvbiBkYXRhYmFzZSB0byBiZSBvcGVuZWQuCiAgICAgd2Via2l0RmF2aWNvbkRhdGFiYXNl
T3Blbihwcml2LT5mYXZpY29uRGF0YWJhc2UuZ2V0KCksIFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oZmF2aWNvbkRhdGFiYXNlUGF0aC5nZXQoKSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0K
aW5kZXggZDVkNjBiZGE1YWQuLmU1NGUwMmE0NmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTUwNSwxMSArNTA1
LDYgQEAgYm9vbCBXZWJQcm9jZXNzUG9vbDo6aXNOZXR3b3JrQ2FjaGVFbmFibGVkKCkKICNlbmRp
ZgogfQogCi1TdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdEljb25EYXRhYmFz
ZVBhdGgoKSBjb25zdAotewotICAgIHJldHVybiAiIjsKLX0KLQogYm9vbCBXZWJQcm9jZXNzUG9v
bDo6b21pdFBERlN1cHBvcnQoKQogewogICAgIC8vIFNpbmNlIHRoaXMgaXMgYSAic2VjcmV0IGRl
ZmF1bHQiIHdlIGRvbid0IGJvdGhlciByZWdpc3RlcmluZyBpdC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBiNWZkMmUzNzY3ZS4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViSWNvbkRhdGFiYXNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0MiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkljb25EYXRhYmFzZS5o
IgotCi0jaW5jbHVkZSAiQVBJSWNvbkRhdGFiYXNlQ2xpZW50LmgiCi0jaW5jbHVkZSAiTG9nZ2lu
Zy5oIgotI2luY2x1ZGUgIldlYkljb25EYXRhYmFzZU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2Vi
SWNvbkRhdGFiYXNlUHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgi
Ci0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JY29u
RGF0YWJhc2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9TaGFyZWRCdWZmZXIuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi1SZWY8V2ViSWNvbkRhdGFiYXNlPiBXZWJJY29uRGF0YWJhc2U6OmNyZWF0
ZShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViSWNvbkRhdGFiYXNlKCpwcm9jZXNzUG9vbCkpOwotfQotCi1XZWJJY29uRGF0YWJhc2U6
On5XZWJJY29uRGF0YWJhc2UoKQotewotfQotCi1XZWJJY29uRGF0YWJhc2U6OldlYkljb25EYXRh
YmFzZShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wpCi0gICAgOiBtX3Byb2Nlc3NQb29sKCZw
cm9jZXNzUG9vbCkKLSAgICAsIG1fdXJsSW1wb3J0Q29tcGxldGVkKGZhbHNlKQotICAgICwgbV9k
YXRhYmFzZUNsZWFudXBEaXNhYmxlZChmYWxzZSkKLSAgICAsIG1fc2hvdWxkRGVyZWZXaGVuQXBw
cm9wcmlhdGUoZmFsc2UpCi0gICAgLCBtX2NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SWNv
bkRhdGFiYXNlQ2xpZW50PigpKQotewotICAgIG1fcHJvY2Vzc1Bvb2wtPmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6V2ViSWNvbkRhdGFiYXNlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0
aGlzKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2U6OmludmFsaWRhdGUoKQotewotICAgIHNl
dEdsb2JhbEljb25EYXRhYmFzZShudWxscHRyKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2U6
OnNldERhdGFiYXNlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgaWYgKGlzT3Blbigp
KSB7Ci0gICAgICAgIExPR19FUlJPUigiSWNvbiBkYXRhYmFzZSBhbHJlYWR5IGhhcyBhIHBhdGgg
YW5kIGlzIGFscmVhZHkgb3Blbi4gV2UgZG9uJ3QgY3VycmVudGx5IHN1cHBvcnQgY2hhbmdpbmcg
aXRzIHBhdGggYW5kIHJlb3BlbmluZy4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IG1faWNvbkRhdGFiYXNlSW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8SWNvbkRhdGFiYXNlPigpOwot
ICAgIG1faWNvbkRhdGFiYXNlSW1wbC0+c2V0Q2xpZW50KHRoaXMpOwotICAgIEljb25EYXRhYmFz
ZTo6ZGVsYXlEYXRhYmFzZUNsZWFudXAoKTsKLSAgICBtX2RhdGFiYXNlQ2xlYW51cERpc2FibGVk
ID0gdHJ1ZTsKLSAgICBtX2ljb25EYXRhYmFzZUltcGwtPnNldEVuYWJsZWQodHJ1ZSk7Ci0KLSAg
ICAvLyBGSVhNRTogV2ViSWNvbkRhdGFiYXNlcyBhcmUgcGVyLVByb2Nlc3NQb29sIGJ1dCBQcm9j
ZXNzUG9vbHMncyBkb24ndCBoYXZlIHRoZWlyIG93biBub3Rpb24gb2YgdGhlIGN1cnJlbnQgcHJp
dmF0ZSBicm93c2luZyBzZXR0aW5nLgotICAgIC8vIEFzIHdlIGNsZWFuIHVwIHByaXZhdGUgYnJv
d3NpbmcgdGhyb3VnaG91dCB0aGUgc3RhY2sgd2UgbmVlZCB0byBjbGVhbiBpdCB1cCBoZXJlLgot
ICAgIG1faWNvbkRhdGFiYXNlSW1wbC0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChXZWJQcmVm
ZXJlbmNlczo6YW55UGFnZXNBcmVVc2luZ1ByaXZhdGVCcm93c2luZygpKTsKLQotICAgIGlmICgh
bV9pY29uRGF0YWJhc2VJbXBsLT5vcGVuKGRpcmVjdG9yeU5hbWUocGF0aCksIHBhdGhHZXRGaWxl
TmFtZShwYXRoKSkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gb3BlbiBXZWJLaXQy
IGljb24gZGF0YWJhc2Ugb24gZGlzayIpOwotICAgICAgICBtX2ljb25EYXRhYmFzZUltcGwgPSBu
dWxscHRyOwotICAgICAgICBzZXRHbG9iYWxJY29uRGF0YWJhc2UobnVsbHB0cik7Ci0gICAgICAg
IEljb25EYXRhYmFzZTo6YWxsb3dEYXRhYmFzZUNsZWFudXAoKTsKLSAgICAgICAgbV9kYXRhYmFz
ZUNsZWFudXBEaXNhYmxlZCA9IGZhbHNlOwotICAgIH0KLSAgICBzZXRHbG9iYWxJY29uRGF0YWJh
c2UobV9pY29uRGF0YWJhc2VJbXBsLmdldCgpKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2U6
OmVuYWJsZURhdGFiYXNlQ2xlYW51cCgpCi17Ci0gICAgaWYgKCFtX2ljb25EYXRhYmFzZUltcGwp
IHsKLSAgICAgICAgTE9HX0VSUk9SKCJDYW5ub3QgZW5hYmxlZCBJY29uIERhdGFiYXNlIGNsZWFu
dXAgLSBpdCBoYXNuJ3QgYmVlbiBvcGVuZWQgeWV0LiIpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKCFtX2RhdGFiYXNlQ2xlYW51cERpc2FibGVkKSB7Ci0gICAgICAgIExPR19F
UlJPUigiQXR0ZW1wdCB0byBlbmFibGUgZGF0YWJhc2UgY2xlYW51cCwgYnV0IGl0J3MgYWxyZWFk
eSBlbmFibGVkLiIpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIEljb25EYXRhYmFzZTo6YWxsb3dEYXRhYmFzZUNsZWFudXAoKTsK
LSAgICBtX2RhdGFiYXNlQ2xlYW51cERpc2FibGVkID0gZmFsc2U7Ci19Ci0KLXZvaWQgV2ViSWNv
bkRhdGFiYXNlOjpyZXRhaW5JY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwpCi17
Ci0gICAgaWYgKG1faWNvbkRhdGFiYXNlSW1wbCkKLSAgICAgICAgbV9pY29uRGF0YWJhc2VJbXBs
LT5yZXRhaW5JY29uRm9yUGFnZVVSTChwYWdlVVJMKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJh
c2U6OnJlbGVhc2VJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwpCi17Ci0gICAg
aWYgKG1faWNvbkRhdGFiYXNlSW1wbCkKLSAgICAgICAgbV9pY29uRGF0YWJhc2VJbXBsLT5yZWxl
YXNlSWNvbkZvclBhZ2VVUkwocGFnZVVSTCk7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpz
ZXRJY29uVVJMRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFN0cmluZyYg
cGFnZVVSTCkKLXsKLSAgICBMT0coSWNvbkRhdGFiYXNlLCAiV0syIFVJUHJvY2VzcyBzZXR0aW5n
IGljb24gVVJMICVzIGZvciBwYWdlIFVSTCAlcyIsIGljb25VUkwuYXNjaWkoKS5kYXRhKCksIHBh
Z2VVUkwuYXNjaWkoKS5kYXRhKCkpOwotICAgIGlmIChtX2ljb25EYXRhYmFzZUltcGwpCi0gICAg
ICAgIG1faWNvbkRhdGFiYXNlSW1wbC0+c2V0SWNvblVSTEZvclBhZ2VVUkwoaWNvblVSTCwgcGFn
ZVVSTCk7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpzZXRJY29uRGF0YUZvckljb25VUkwo
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBpY29uRGF0YSwgY29uc3QgU3RyaW5nJiBpY29uVVJM
KQotewotICAgIExPRyhJY29uRGF0YWJhc2UsICJXSzIgVUlQcm9jZXNzIHNldHRpbmcgaWNvbiBk
YXRhICglaSBieXRlcykgZm9yIHBhZ2UgVVJMICVzIiwgKGludClpY29uRGF0YS5zaXplKCksIGlj
b25VUkwuYXNjaWkoKS5kYXRhKCkpOwotICAgIGlmICghbV9pY29uRGF0YWJhc2VJbXBsKQotICAg
ICAgICByZXR1cm47Ci0gICAgbV9pY29uRGF0YWJhc2VJbXBsLT5zZXRJY29uRGF0YUZvckljb25V
UkwoU2hhcmVkQnVmZmVyOjpjcmVhdGUoaWNvbkRhdGEuZGF0YSgpLCBpY29uRGF0YS5zaXplKCkp
LnB0cigpLCBpY29uVVJMKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2U6OnN5bmNocm9ub3Vz
SWNvbkRhdGFGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIElQQzo6RGF0YVJlZmVyZW5jZSYgaWNv
bkRhdGEpCi17Ci0gICAgaWNvbkRhdGEgPSBJUEM6OkRhdGFSZWZlcmVuY2UoKTsKLX0KLQotdm9p
ZCBXZWJJY29uRGF0YWJhc2U6OnN5bmNocm9ub3VzSWNvblVSTEZvclBhZ2VVUkwoY29uc3QgU3Ry
aW5nJiBwYWdlVVJMLCBTdHJpbmcmIGljb25VUkwpCi17Ci0gICAgaWYgKCFtX2ljb25EYXRhYmFz
ZUltcGwpIHsKLSAgICAgICAgaWNvblVSTCA9IFN0cmluZygpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGljb25VUkwgPSBtX2ljb25EYXRhYmFzZUltcGwtPnN5bmNocm9ub3VzSWNvblVS
TEZvclBhZ2VVUkwocGFnZVVSTCk7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpzeW5jaHJv
bm91c0ljb25EYXRhS25vd25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYsIGJvb2wmIGljb25EYXRh
S25vd24pIGNvbnN0Ci17Ci0gICAgaWNvbkRhdGFLbm93biA9IGZhbHNlOwotfQotCi12b2lkIFdl
Ykljb25EYXRhYmFzZTo6c3luY2hyb25vdXNMb2FkRGVjaXNpb25Gb3JJY29uVVJMKGNvbnN0IFN0
cmluZyYsIGludCYgbG9hZERlY2lzaW9uKSBjb25zdAotewotICAgIGxvYWREZWNpc2lvbiA9IHN0
YXRpY19jYXN0PGludD4oSWNvbkxvYWRObyk7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpn
ZXRMb2FkRGVjaXNpb25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKLXsKLSAgICBMT0coSWNvbkRhdGFiYXNlLCAiV0syIFVJUHJvY2VzcyBnZXR0
aW5nIGxvYWQgZGVjaXNpb24gZm9yIGljb24gVVJMICVzIHdpdGggY2FsbGJhY2sgSUQgJWxsaSIs
IGljb25VUkwuYXNjaWkoKS5kYXRhKCksIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oY2FsbGJhY2tJ
RCkpOwotCi0gICAgaWYgKCFtX3Byb2Nlc3NQb29sKQotICAgICAgICByZXR1cm47Ci0KLSAgICBp
ZiAoIW1faWNvbkRhdGFiYXNlSW1wbCB8fCAhbV9pY29uRGF0YWJhc2VJbXBsLT5pc09wZW4oKSB8
fCBpY29uVVJMLmlzRW1wdHkoKSkgewotICAgICAgICAvLyBGSVhNRSAoTXVsdGktV2ViUHJvY2Vz
cyk6IDxyZGFyOi8vcHJvYmxlbS8xMjI0MDIyMz4gV2UgbmVlZCB0byBrbm93IHdoaWNoIGNvbm5l
Y3Rpb24gdG8gc2VuZCB0aGlzIG1lc3NhZ2UgdG8uCi0gICAgICAgIG1fcHJvY2Vzc1Bvb2wtPnNl
bmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViSWNvbkRhdGFiYXNlUHJveHk6OlJlY2VpdmVk
SWNvbkxvYWREZWNpc2lvbihzdGF0aWNfY2FzdDxpbnQ+KEljb25Mb2FkTm8pLCBjYWxsYmFja0lE
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgLy8gSWYgdGhlIGRlY2lzaW9u
IGhhc24ndCBiZWVuIHJlYWQgZnJvbSBkaXNrIHlldCwgc2V0IHRoaXMgdXJsIGFuZCBjYWxsYmFj
ayBJRCBhc2lkZSB0byBiZSBub3RpZmVkIGxhdGVyCi0gICAgSWNvbkxvYWREZWNpc2lvbiBkZWNp
c2lvbiA9IG1faWNvbkRhdGFiYXNlSW1wbC0+c3luY2hyb25vdXNMb2FkRGVjaXNpb25Gb3JJY29u
VVJMKGljb25VUkwsIDApOwotICAgIGlmIChkZWNpc2lvbiA9PSBJY29uTG9hZFVua25vd24pIHsK
LSAgICAgICAgLy8gV2Ugc2hvdWxkIG5ldmVyIGdldCBhbiB1bmtub3duIGxvYWQgZGVjaXNpb24g
YWZ0ZXIgdGhlIFVSTCBpbXBvcnQgaGFzIGNvbXBsZXRlZC4KLSAgICAgICAgQVNTRVJUKCFtX3Vy
bEltcG9ydENvbXBsZXRlZCk7Ci0gICAgICAgIAotICAgICAgICBtX3BlbmRpbmdMb2FkRGVjaXNp
b25VUkxNYXAuc2V0KGNhbGxiYWNrSUQsIGljb25VUkwpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3MpOiA8cmRhcjovL3Byb2JsZW0vMTIy
NDAyMjM+IFdlIG5lZWQgdG8ga25vdyB3aGljaCBjb25uZWN0aW9uIHRvIHNlbmQgdGhpcyBtZXNz
YWdlIHRvLgotICAgIG1fcHJvY2Vzc1Bvb2wtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6
V2ViSWNvbkRhdGFiYXNlUHJveHk6OlJlY2VpdmVkSWNvbkxvYWREZWNpc2lvbigoaW50KWRlY2lz
aW9uLCBjYWxsYmFja0lEKSk7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpkaWRSZWNlaXZl
SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMKQotewotICAgIG5vdGlmeUljb25E
YXRhUmVhZHlGb3JQYWdlVVJMKHBhZ2VVUkwpOwotfQotCi1JbWFnZSogV2ViSWNvbkRhdGFiYXNl
OjppbWFnZUZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBjb25zdCBJbnRTaXplJiBp
Y29uU2l6ZSkKLXsKLSAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wgfHwgIW1faWNvbkRhdGFiYXNlSW1w
bCB8fCAhbV9pY29uRGF0YWJhc2VJbXBsLT5pc09wZW4oKSB8fCBwYWdlVVJMLmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAvLyBUaGUgV2ViQ29yZSBJY29uRGF0YWJh
c2UgaWdub3JlcyB0aGUgcGFzc2VkIGluIHNpemUgcGFyYW1ldGVyLgotICAgIC8vIElmIHRoYXQg
Y2hhbmdlcyB3ZSdsbCBuZWVkIHRvIHJldGhpbmsgaG93IHRoaXMgQVBJIGlzIGV4cG9zZWQuCi0g
ICAgcmV0dXJuIG1faWNvbkRhdGFiYXNlSW1wbC0+c3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChw
YWdlVVJMLCBpY29uU2l6ZSk7Ci19Ci0KLU5hdGl2ZUltYWdlUHRyIFdlYkljb25EYXRhYmFzZTo6
bmF0aXZlSW1hZ2VGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgY29uc3QgSW50U2l6
ZSYgaWNvblNpemUpCi17Ci0gICAgaWYgKCFtX3Byb2Nlc3NQb29sIHx8ICFtX2ljb25EYXRhYmFz
ZUltcGwgfHwgIW1faWNvbkRhdGFiYXNlSW1wbC0+aXNPcGVuKCkgfHwgcGFnZVVSTC5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIG1faWNvbkRhdGFiYXNl
SW1wbC0+c3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChwYWdlVVJMLCBpY29uU2l6ZSk7
Ci19Ci0KLWJvb2wgV2ViSWNvbkRhdGFiYXNlOjppc09wZW4oKQotewotICAgIHJldHVybiBtX2lj
b25EYXRhYmFzZUltcGwgJiYgbV9pY29uRGF0YWJhc2VJbXBsLT5pc09wZW4oKTsKLX0KLQotYm9v
bCBXZWJJY29uRGF0YWJhc2U6OmlzVXJsSW1wb3J0Q29tcGxldGVkKCkKLXsKLSAgICByZXR1cm4g
bV91cmxJbXBvcnRDb21wbGV0ZWQ7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpyZW1vdmVB
bGxJY29ucygpCi17Ci0gICAgbV9pY29uRGF0YWJhc2VJbXBsLT5yZW1vdmVBbGxJY29ucygpOwot
fQotCi12b2lkIFdlYkljb25EYXRhYmFzZTo6Y2hlY2tJbnRlZ3JpdHlCZWZvcmVPcGVuaW5nKCkK
LXsKLSAgICBJY29uRGF0YWJhc2U6OmNoZWNrSW50ZWdyaXR5QmVmb3JlT3BlbmluZygpOwotfQot
Ci12b2lkIFdlYkljb25EYXRhYmFzZTo6Y2xvc2UoKQotewotICAgIGlmIChtX2ljb25EYXRhYmFz
ZUltcGwpCi0gICAgICAgIG1faWNvbkRhdGFiYXNlSW1wbC0+Y2xvc2UoKTsKLX0KLQotdm9pZCBX
ZWJJY29uRGF0YWJhc2U6OnNldENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJY29uRGF0YWJh
c2VDbGllbnQ+JiYgY2xpZW50KQotewotICAgIGlmICghY2xpZW50KQotICAgICAgICBtX2NsaWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJY29uRGF0YWJhc2VDbGllbnQ+KCk7Ci0gICAgZWxz
ZQotICAgICAgICBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsKLX0KLQotLy8gV2ViQ29yZTo6
SWNvbkRhdGFiYXNlQ2xpZW50Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpkaWRJbXBvcnRJY29u
VVJMRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwpCi17Ci0gICAgZGlkQ2hhbmdlSWNv
bkZvclBhZ2VVUkwocGFnZVVSTCk7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpkaWRJbXBv
cnRJY29uRGF0YUZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMKQotewotICAgIG5vdGlm
eUljb25EYXRhUmVhZHlGb3JQYWdlVVJMKHBhZ2VVUkwpOwotfQotCi12b2lkIFdlYkljb25EYXRh
YmFzZTo6ZGlkQ2hhbmdlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMKQotewot
ICAgIG1fY2xpZW50LT5kaWRDaGFuZ2VJY29uRm9yUGFnZVVSTCgqdGhpcywgcGFnZVVSTCk7Ci19
Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpkaWRSZW1vdmVBbGxJY29ucygpCi17Ci0gICAgbV9j
bGllbnQtPmRpZFJlbW92ZUFsbEljb25zKCp0aGlzKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJh
c2U6OmRpZEZpbmlzaFVSTEltcG9ydCgpCi17Ci0gICAgaWYgKCFtX3Byb2Nlc3NQb29sKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQoIW1fdXJsSW1wb3J0Q29tcGxldGVkKTsKLQotICAg
IExPRyhJY29uRGF0YWJhc2UsICJXSzIgVUlQcm9jZXNzIFVSTCBpbXBvcnQgY29tcGxldGUsIG5v
dGlmeWluZyBhbGwgJWkgcGVuZGluZyBwYWdlIFVSTCBsb2FkIGRlY2lzaW9ucyIsIG1fcGVuZGlu
Z0xvYWREZWNpc2lvblVSTE1hcC5zaXplKCkpOwotICAgIAotICAgIGZvciAoYXV0byYgc2xvdCA6
IG1fcGVuZGluZ0xvYWREZWNpc2lvblVSTE1hcCkgewotICAgICAgICBMT0coSWNvbkRhdGFiYXNl
LCAiV0syIFVJUHJvY2VzcyBwZXJmb3JtaW5nIGRlbGF5ZWQgY2FsbGJhY2sgb24gY2FsbGJhY2sg
SUQgJWkgZm9yIHBhZ2UgdXJsICVzIiwgKGludClzbG90LmtleSwgc2xvdC52YWx1ZS5hc2NpaSgp
LmRhdGEoKSk7Ci0gICAgICAgIEljb25Mb2FkRGVjaXNpb24gZGVjaXNpb24gPSBtX2ljb25EYXRh
YmFzZUltcGwtPnN5bmNocm9ub3VzTG9hZERlY2lzaW9uRm9ySWNvblVSTChzbG90LnZhbHVlLCBu
dWxscHRyKTsKLQotICAgICAgICAvLyBEZWNpc2lvbnMgc2hvdWxkIG5ldmVyIGJlIHVua25vd24g
YWZ0ZXIgdGhlIGluaXRhbCBpbXBvcnQgaXMgY29tcGxldGUuCi0gICAgICAgIEFTU0VSVChkZWNp
c2lvbiAhPSBJY29uTG9hZFVua25vd24pOwotCi0gICAgICAgIC8vIEZJWE1FIChNdWx0aS1XZWJQ
cm9jZXNzKTogPHJkYXI6Ly9wcm9ibGVtLzEyMjQwMjIzPiBXZSBuZWVkIHRvIGtub3cgd2hpY2gg
Y29ubmVjdGlvbiB0byBzZW5kIHRoaXMgbWVzc2FnZSB0by4KLSAgICAgICAgbV9wcm9jZXNzUG9v
bC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJJY29uRGF0YWJhc2VQcm94eTo6UmVj
ZWl2ZWRJY29uTG9hZERlY2lzaW9uKHN0YXRpY19jYXN0PGludD4oZGVjaXNpb24pLCBzbG90Lmtl
eSkpOwotICAgIH0KLQotICAgIG1fcGVuZGluZ0xvYWREZWNpc2lvblVSTE1hcC5jbGVhcigpOwot
Ci0gICAgbV91cmxJbXBvcnRDb21wbGV0ZWQgPSB0cnVlOwotfQotCi12b2lkIFdlYkljb25EYXRh
YmFzZTo6ZGlkQ2xvc2UoKQotewotICAgIGlmICghbV9zaG91bGREZXJlZldoZW5BcHByb3ByaWF0
ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZGVyZWYoKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0
YWJhc2U6OmRlcmVmV2hlbkFwcHJvcHJpYXRlKCkKLXsKLSAgICBpZiAobV9pY29uRGF0YWJhc2VJ
bXBsICYmIG1faWNvbkRhdGFiYXNlSW1wbC0+aXNPcGVuKCkpIHsKLSAgICAgICAgbV9zaG91bGRE
ZXJlZldoZW5BcHByb3ByaWF0ZSA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBkZXJlZigpOwotfQotCi12b2lkIFdlYkljb25EYXRhYmFzZTo6bm90aWZ5SWNvbkRhdGFSZWFk
eUZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMKQotewotICAgIG1fY2xpZW50LT5pY29u
RGF0YVJlYWR5Rm9yUGFnZVVSTCgqdGhpcywgcGFnZVVSTCk7Ci0gICAgZGlkQ2hhbmdlSWNvbkZv
clBhZ2VVUkwocGFnZVVSTCk7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpzZXRQcml2YXRl
QnJvd3NpbmdFbmFibGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKLXsKLSAgICBpZiAo
bV9pY29uRGF0YWJhc2VJbXBsKQotICAgICAgICBtX2ljb25EYXRhYmFzZUltcGwtPnNldFByaXZh
dGVCcm93c2luZ0VuYWJsZWQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7Ci19Ci0KLVJlZlB0cjxB
UEk6OkRhdGE+IFdlYkljb25EYXRhYmFzZTo6aWNvbkRhdGFGb3JQYWdlVVJMKGNvbnN0IFN0cmlu
ZyYgcGFnZVVSTCkKLXsKLSAgICBhdXRvKiBpbWFnZSA9IGltYWdlRm9yUGFnZVVSTChwYWdlVVJM
KTsKLSAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIFNoYXJl
ZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gaW1hZ2UtPmRhdGEoKTsKLSAgICBpZiAoIXNoYXJlZEJ1
ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAvLyBCYWxhbmNlZCBieSBkZXJl
ZigpIGJlbG93LgotICAgIHNoYXJlZEJ1ZmZlci0+cmVmKCk7Ci0gICAgcmV0dXJuIEFQSTo6RGF0
YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBj
aGFyKj4oc2hhcmVkQnVmZmVyLT5kYXRhKCkpLCBzaGFyZWRCdWZmZXItPnNpemUoKSwKLSAgICAg
ICAgW10odW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIHVudHlwZWRTaGFyZWRCdWZmZXIpIHsK
LSAgICAgICAgICAgIC8vIEJhbGFuY2VkIGJ5IHJlZigpIGFib3ZlLgotICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDx2b2lkKj4odW50eXBlZFNoYXJlZEJ1
ZmZlcikpLT5kZXJlZigpOwotICAgICAgICB9LCBzaGFyZWRCdWZmZXIpOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYklj
b25EYXRhYmFzZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmgK
aW5kZXggODcxM2E4YmZkNTMuLmJlYzliZWFmODI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJJY29uRGF0YWJhc2UuaApAQCAtMjMsMTAxICsyMywxMyBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViSWNvbkRhdGFiYXNlX2gKLSNk
ZWZpbmUgV2ViSWNvbkRhdGFiYXNlX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQVBJT2Jq
ZWN0LmgiCi0jaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIldlYkljb25EYXRhYmFz
ZUNsaWVudC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvSWNvbkRhdGFiYXNlQ2xpZW50Lmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9OYXRpdmVJbWFnZS5o
PgotCi1uYW1lc3BhY2UgQVBJIHsKLWNsYXNzIERhdGE7Ci1jbGFzcyBJY29uRGF0YWJhc2VDbGll
bnQ7Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEljb25EYXRhYmFzZTsKLWNsYXNz
IEltYWdlOwotfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7
Ci0KLWNsYXNzIFdlYkljb25EYXRhYmFzZSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpP
YmplY3Q6OlR5cGU6Okljb25EYXRhYmFzZT4sIHByaXZhdGUgV2ViQ29yZTo6SWNvbkRhdGFiYXNl
Q2xpZW50LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFdlYkljb25EYXRhYmFzZT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sKik7Ci0gICAgdmly
dHVhbCB+V2ViSWNvbkRhdGFiYXNlKCk7Ci0KLSAgICB2b2lkIGludmFsaWRhdGUoKTsKLSAgICB2
b2lkIGNsZWFyUHJvY2Vzc1Bvb2woKSB7IG1fcHJvY2Vzc1Bvb2wgPSBudWxscHRyOyB9Ci0gICAg
dm9pZCBzZXREYXRhYmFzZVBhdGgoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBlbmFibGVEYXRh
YmFzZUNsZWFudXAoKTsKLQotICAgIHZvaWQgcmV0YWluSWNvbkZvclBhZ2VVUkwoY29uc3QgU3Ry
aW5nJik7Ci0gICAgdm9pZCByZWxlYXNlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJik7Ci0g
ICAgdm9pZCBzZXRJY29uVVJMRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
KTsKLSAgICB2b2lkIHNldEljb25EYXRhRm9ySWNvblVSTChjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmLCBjb25zdCBTdHJpbmcmKTsKLQotICAgIHZvaWQgc3luY2hyb25vdXNJY29uRGF0YUZvclBh
Z2VVUkwoY29uc3QgU3RyaW5nJiwgSVBDOjpEYXRhUmVmZXJlbmNlJik7Ci0gICAgdm9pZCBzeW5j
aHJvbm91c0ljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIFN0cmluZyYpOwotICAgIHZv
aWQgc3luY2hyb25vdXNJY29uRGF0YUtub3duRm9ySWNvblVSTChjb25zdCBTdHJpbmcmLCBib29s
JikgY29uc3Q7Ci0gICAgdm9pZCBzeW5jaHJvbm91c0xvYWREZWNpc2lvbkZvckljb25VUkwoY29u
c3QgU3RyaW5nJiwgaW50JikgY29uc3Q7Ci0KLSAgICB2b2lkIGdldExvYWREZWNpc2lvbkZvcklj
b25VUkwoY29uc3QgU3RyaW5nJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJik7Ci0KLSAgICBXZWJDb3JlOjpJbWFn
ZSogaW1hZ2VGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IGljb25TaXplID0gV2ViQ29yZTo6SW50U2l6ZSgzMiwgMzIpKTsKLSAgICBXZWJDb3JlOjpOYXRp
dmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgaWNvblNpemUgPSBXZWJDb3JlOjpJbnRTaXplKDMyLCAzMikpOwotICAg
IFJlZlB0cjxBUEk6OkRhdGE+IGljb25EYXRhRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VV
UkwpOwotCi0gICAgYm9vbCBpc09wZW4oKTsKLSAgICBib29sIGlzVXJsSW1wb3J0Q29tcGxldGVk
KCk7Ci0KLSAgICB2b2lkIHJlbW92ZUFsbEljb25zKCk7Ci0gICAgdm9pZCBjaGVja0ludGVncml0
eUJlZm9yZU9wZW5pbmcoKTsKLSAgICB2b2lkIGNsb3NlKCk7Ci0KLSAgICB2b2lkIHNldENsaWVu
dChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJY29uRGF0YWJhc2VDbGllbnQ+JiYpOwotCi0gICAgdm9p
ZCBzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wpOwotCi0gICAgLy8gQ2FsbGVkIHdoZW4g
dGhlIFdlYlByb2Nlc3NQb29sIGlzIHRocm91Z2ggd2l0aCB0aGlzIFdlYkljb25EYXRhYmFzZSBi
dXQgdGhlCi0gICAgLy8gV2ViQ29yZTo6SWNvbkRhdGFiYXNlIHBvc3NpYmx5IGlzbid0IGRvbmUg
c2h1dHRpbmcgZG93bi4KLSAgICAvLyBJbiB0aGF0IGNhc2UgdGhpcyBXZWJJY29uRGF0YWJhc2Ug
d2lsbCBkZXJlZigpIGl0c2VsZiB3aGVuIHRoZSB0aW1lIGlzIHJpZ2h0LgotICAgIHZvaWQgZGVy
ZWZXaGVuQXBwcm9wcmlhdGUoKTsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJJY29uRGF0
YWJhc2UoV2ViUHJvY2Vzc1Bvb2wmKTsKLQotICAgIC8vIFdlYkNvcmU6Okljb25EYXRhYmFzZUNs
aWVudAotICAgIHZvaWQgZGlkSW1wb3J0SWNvblVSTEZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRJbXBvcnRJY29uRGF0YUZvclBhZ2VVUkwoY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRDaGFuZ2VJY29uRm9yUGFnZVVSTChjb25zdCBT
dHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlbW92ZUFsbEljb25zKCkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBkaWRGaW5pc2hVUkxJbXBvcnQoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZENs
b3NlKCkgb3ZlcnJpZGU7Ci0KLSAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgotICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKLQot
ICAgIHZvaWQgbm90aWZ5SWNvbkRhdGFSZWFkeUZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJik7Ci0K
LSAgICBXZWJQcm9jZXNzUG9vbCogbV9wcm9jZXNzUG9vbDsKLQotICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpJY29uRGF0YWJhc2U+IG1faWNvbkRhdGFiYXNlSW1wbDsKLSAgICBib29sIG1f
dXJsSW1wb3J0Q29tcGxldGVkOwotICAgIGJvb2wgbV9kYXRhYmFzZUNsZWFudXBEaXNhYmxlZDsK
LSAgICBib29sIG1fc2hvdWxkRGVyZWZXaGVuQXBwcm9wcmlhdGU7Ci0gICAgSGFzaE1hcDx1aW50
NjRfdCwgU3RyaW5nPiBtX3BlbmRpbmdMb2FkRGVjaXNpb25VUkxNYXA7Ci0KLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpJY29uRGF0YWJhc2VDbGllbnQ+IG1fY2xpZW50OworY2xhc3MgV2ViSWNv
bkRhdGFiYXNlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6SWNv
bkRhdGFiYXNlPiB7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdl
Ykljb25EYXRhYmFzZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJ
Y29uRGF0YWJhc2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJY29u
RGF0YWJhc2UubWVzc2FnZXMuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1Yjk2
ZmQxZjY2Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJY29u
RGF0YWJhc2UubWVzc2FnZXMuaW4KKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0jIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMK
LSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLW1lc3NhZ2VzIC0+IFdlYkljb25E
YXRhYmFzZSB7Ci0gICAgU2V0SWNvblVSTEZvclBhZ2VVUkwoU3RyaW5nIGljb25VUkwsIFN0cmlu
ZyBwYWdlVVJMKQotICAgIFNldEljb25EYXRhRm9ySWNvblVSTChJUEM6OkRhdGFSZWZlcmVuY2Ug
aWNvbkRhdGEsIFN0cmluZyBpY29uVVJMKQotICAgIAotICAgIFN5bmNocm9ub3VzSWNvbkRhdGFG
b3JQYWdlVVJMKFN0cmluZyBwYWdlVVJMKSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIGljb25EYXRh
KQotICAgIFN5bmNocm9ub3VzSWNvblVSTEZvclBhZ2VVUkwoU3RyaW5nIHBhZ2VVUkwpIC0+IChT
dHJpbmcgaWNvblVSTCkKLSAgICBTeW5jaHJvbm91c0ljb25EYXRhS25vd25Gb3JJY29uVVJMKFN0
cmluZyBpY29uVVJMKSAtPiAoYm9vbCBkYXRhS25vd24pCi0gICAgU3luY2hyb25vdXNMb2FkRGVj
aXNpb25Gb3JJY29uVVJMKFN0cmluZyBpY29uVVJMKSAtPiAoaW50IGxvYWREZWNpc2lvbikKLSAg
ICAKLSAgICBHZXRMb2FkRGVjaXNpb25Gb3JJY29uVVJMKFN0cmluZyBpY29uVVJMLCB1aW50NjRf
dCBjYWxsYmFja0lEKQotICAgIERpZFJlY2VpdmVJY29uRm9yUGFnZVVSTChTdHJpbmcgcGFnZVVS
TCkKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFz
ZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2VDbGll
bnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDcyMDUwYzhlNC4uMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlQ2xpZW50
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmgiCi0KLSNpbmNs
dWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIKLSNpbmNsdWRl
ICJXZWJJY29uRGF0YWJhc2UuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYkljb25EYXRh
YmFzZUNsaWVudDo6V2ViSWNvbkRhdGFiYXNlQ2xpZW50KGNvbnN0IFdLSWNvbkRhdGFiYXNlQ2xp
ZW50QmFzZSogd2tDbGllbnQpCi17Ci0gICAgaW5pdGlhbGl6ZSh3a0NsaWVudCk7Ci19Ci0KLXZv
aWQgV2ViSWNvbkRhdGFiYXNlQ2xpZW50OjpkaWRDaGFuZ2VJY29uRm9yUGFnZVVSTChXZWJJY29u
RGF0YWJhc2UmIGljb25EYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBwYWdlVVJMKQotewotICAgIGlm
ICghbV9jbGllbnQuZGlkQ2hhbmdlSWNvbkZvclBhZ2VVUkwpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIG1fY2xpZW50LmRpZENoYW5nZUljb25Gb3JQYWdlVVJMKHRvQVBJKCZpY29uRGF0YWJhc2Up
LCB0b0FQSShBUEk6OlVSTDo6Y3JlYXRlKHBhZ2VVUkwpLnB0cigpKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2VDbGllbnQ6OmRpZFJlbW92ZUFs
bEljb25zKFdlYkljb25EYXRhYmFzZSYgaWNvbkRhdGFiYXNlKQotewotICAgIGlmICghbV9jbGll
bnQuZGlkUmVtb3ZlQWxsSWNvbnMpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY2xpZW50LmRp
ZFJlbW92ZUFsbEljb25zKHRvQVBJKCZpY29uRGF0YWJhc2UpLCAgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2VDbGllbnQ6Omljb25EYXRhUmVhZHlG
b3JQYWdlVVJMKFdlYkljb25EYXRhYmFzZSYgaWNvbkRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIHBh
Z2VVUkwpCi17Ci0gICAgaWYgKCFtX2NsaWVudC5pY29uRGF0YVJlYWR5Rm9yUGFnZVVSTCkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgbV9jbGllbnQuaWNvbkRhdGFSZWFkeUZvclBhZ2VVUkwodG9B
UEkoJmljb25EYXRhYmFzZSksIHRvQVBJKEFQSTo6VVJMOjpjcmVhdGUocGFnZVVSTCkucHRyKCkp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZUNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2YWMxYThmYWUxLi4wMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2VDbGllbnQuaAorKysgL2Rl
di9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkljb25EYXRh
YmFzZUNsaWVudF9oCi0jZGVmaW5lIFdlYkljb25EYXRhYmFzZUNsaWVudF9oCi0KLSNpbmNsdWRl
ICJBUElDbGllbnQuaCIKLSNpbmNsdWRlICJBUElJY29uRGF0YWJhc2VDbGllbnQuaCIKLSNpbmNs
dWRlICJXS0ljb25EYXRhYmFzZS5oIgotCi1uYW1lc3BhY2UgQVBJIHsKLWNsYXNzIFVSTDsKLXRl
bXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS0ljb25EYXRhYmFzZUNsaWVudEJhc2U+IHsK
LSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tJY29uRGF0YWJhc2VDbGllbnRWMCwgV0tJY29uRGF0
YWJhc2VDbGllbnRWMT4gVmVyc2lvbnM7Ci19OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
Y2xhc3MgV2ViSWNvbkRhdGFiYXNlOwotCi1jbGFzcyBXZWJJY29uRGF0YWJhc2VDbGllbnQgOiBw
dWJsaWMgQVBJOjpJY29uRGF0YWJhc2VDbGllbnQsIEFQSTo6Q2xpZW50PFdLSWNvbkRhdGFiYXNl
Q2xpZW50QmFzZT4gewotcHVibGljOgotICAgIGV4cGxpY2l0IFdlYkljb25EYXRhYmFzZUNsaWVu
dChjb25zdCBXS0ljb25EYXRhYmFzZUNsaWVudEJhc2UqKTsKLQotICAgIHZvaWQgZGlkQ2hhbmdl
SWNvbkZvclBhZ2VVUkwoV2ViSWNvbkRhdGFiYXNlJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBkaWRSZW1vdmVBbGxJY29ucyhXZWJJY29uRGF0YWJhc2UmKSBvdmVycmlkZTsK
LSAgICB2b2lkIGljb25EYXRhUmVhZHlGb3JQYWdlVVJMKFdlYkljb25EYXRhYmFzZSYsIGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRp
ZiAvLyBXZWJJY29uRGF0YWJhc2VDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGNlODM2MDVhNjQ1Li44Y2U1YjU4Nzk5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNTcsNyArNTcsNiBAQAog
I2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1
bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgiCi0j
aW5jbHVkZSAiV2ViSWNvbkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiV2ViS2l0MkluaXRpYWxpemUu
aCIKICNpbmNsdWRlICJXZWJNZW1vcnlTYW1wbGVyLmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5LmgiCkBAIC0yNTgsOCArMjU3LDYgQEAgV2ViUHJvY2Vzc1Bvb2w6Oldl
YlByb2Nlc3NQb29sKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9u
KQogICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUHJvY2Vzc1Bvb2w6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOwogCiAgICAgLy8gTk9URTogVGhlc2Ugc3ViLW9iamVj
dHMgbXVzdCBiZSBpbml0aWFsaXplZCBhZnRlciBtX21lc3NhZ2VSZWNlaXZlck1hcC4uCi0gICAg
bV9pY29uRGF0YWJhc2UgPSBXZWJJY29uRGF0YWJhc2U6OmNyZWF0ZSh0aGlzKTsKLQogICAgIGFk
ZFN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpOwogICAgIGFkZFN1cHBsZW1lbnQ8
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCk7CiAgICAgYWRkU3VwcGxlbWVudDxXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHk+KCk7CkBAIC0zMDUsMTEgKzMwMiw2IEBAIFdlYlByb2Nlc3NQ
b29sOjp+V2ViUHJvY2Vzc1Bvb2woKQogICAgICAgICBzdXBwbGVtZW50LT5jbGVhclByb2Nlc3NQ
b29sKCk7CiAgICAgfQogCi0gICAgbV9pY29uRGF0YWJhc2UtPmludmFsaWRhdGUoKTsKLSAgICBt
X2ljb25EYXRhYmFzZS0+Y2xlYXJQcm9jZXNzUG9vbCgpOwotICAgIFdlYkljb25EYXRhYmFzZSog
cmF3SWNvbkRhdGFiYXNlID0gbV9pY29uRGF0YWJhc2UubGVha1JlZigpOwotICAgIHJhd0ljb25E
YXRhYmFzZS0+ZGVyZWZXaGVuQXBwcm9wcmlhdGUoKTsKLQogICAgIGludmFsaWRhdGVDYWxsYmFj
a01hcChtX2RpY3Rpb25hcnlDYWxsYmFja3MsIENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2Fz
SW52YWxpZGF0ZWQpOwogCiAgICAgcGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4dCgpOwpAQCAtNTk1
LDggKzU4Nyw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OndpbmRvd1NlcnZlckNvbm5lY3Rpb25T
dGF0ZUNoYW5nZWQoKQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRBbnlQYWdlR3JvdXBNaWdo
dEhhdmVQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkK
IHsKLSAgICBtX2ljb25EYXRhYmFzZS0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChwcml2YXRl
QnJvd3NpbmdFbmFibGVkKTsKLQogICAgIGlmIChuZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAg
IGlmIChwcml2YXRlQnJvd3NpbmdFbmFibGVkKQogICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3Mo
KS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oe1Nlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpLCB7IH0sIHsgfSwgeyB9
fSksIDApOwpAQCAtNzI2LDggKzcxNiw2IEBAIFdlYlByb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bv
b2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhCiAgICAg
cGFyYW1ldGVycy5zaG91bGRBbHdheXNVc2VDb21wbGV4VGV4dENvZGVQYXRoID0gbV9hbHdheXNV
c2VzQ29tcGxleFRleHRDb2RlUGF0aDsKICAgICBwYXJhbWV0ZXJzLnNob3VsZFVzZUZvbnRTbW9v
dGhpbmcgPSBtX3Nob3VsZFVzZUZvbnRTbW9vdGhpbmc7CiAKLSAgICBwYXJhbWV0ZXJzLmljb25E
YXRhYmFzZUVuYWJsZWQgPSAhaWNvbkRhdGFiYXNlUGF0aCgpLmlzRW1wdHkoKTsKLQogICAgIHBh
cmFtZXRlcnMudGVybWluYXRpb25UaW1lb3V0ID0gMF9zOwogCiAgICAgcGFyYW1ldGVycy50ZXh0
Q2hlY2tlclN0YXRlID0gVGV4dENoZWNrZXI6OnN0YXRlKCk7CkBAIC0xMjkwLDIzICsxMjc4LDYg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c3RvcE1lbW9yeVNhbXBsZXIoKQogICAgIHNlbmRUb0Fs
bFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U3RvcE1lbW9yeVNhbXBsZXIoKSk7CiB9
CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEljb25EYXRhYmFzZVBhdGgoY29uc3QgU3RyaW5n
JiBwYXRoKQotewotICAgIG1fb3ZlcnJpZGVJY29uRGF0YWJhc2VQYXRoID0gcGF0aDsKLSAgICBp
ZiAoIW1fb3ZlcnJpZGVJY29uRGF0YWJhc2VQYXRoLmlzRW1wdHkoKSkgewotICAgICAgICAvLyBU
aGlzIGltcGxpY2l0bHkgZW5hYmxlcyB0aGUgZGF0YWJhc2Ugb24gVUkgcHJvY2VzcyBzaWRlLgot
ICAgICAgICBtX2ljb25EYXRhYmFzZS0+c2V0RGF0YWJhc2VQYXRoKHBhdGgpOwotICAgIH0KLX0K
LQotU3RyaW5nIFdlYlByb2Nlc3NQb29sOjppY29uRGF0YWJhc2VQYXRoKCkgY29uc3QKLXsKLSAg
ICBpZiAoIW1fb3ZlcnJpZGVJY29uRGF0YWJhc2VQYXRoLmlzTnVsbCgpKQotICAgICAgICByZXR1
cm4gbV9vdmVycmlkZUljb25EYXRhYmFzZVBhdGg7Ci0KLSAgICByZXR1cm4gcGxhdGZvcm1EZWZh
dWx0SWNvbkRhdGFiYXNlUGF0aCgpOwotfQotCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp1c2VUZXN0
aW5nTmV0d29ya1Nlc3Npb24oKQogewogICAgIEFTU0VSVChtX3Byb2Nlc3Nlcy5pc0VtcHR5KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggOTRkZWVhMzFm
NGYuLmVlZTY3MmIyNTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmgKQEAgLTg5LDcgKzg5LDYgQEAgY2xhc3MgVUlHYW1lcGFkOwogY2xhc3MgUGVyQWN0aXZpdHlT
dGF0ZUNQVVVzYWdlU2FtcGxlcjsKIGNsYXNzIFdlYkF1dG9tYXRpb25TZXNzaW9uOwogY2xhc3Mg
V2ViQ29udGV4dFN1cHBsZW1lbnQ7Ci1jbGFzcyBXZWJJY29uRGF0YWJhc2U7CiBjbGFzcyBXZWJQ
YWdlR3JvdXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnM7CkBAIC0yNDQsOCArMjQzLDYgQEAgcHVibGljOgogCiAgICAgQVBJOjpD
dXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQmIGN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCgp
IGNvbnN0IHsgcmV0dXJuICptX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDsgfQogCi0gICAg
V2ViSWNvbkRhdGFiYXNlKiBpY29uRGF0YWJhc2UoKSBjb25zdCB7IHJldHVybiBtX2ljb25EYXRh
YmFzZS5nZXQoKTsgfQotCiAgICAgc3RydWN0IFN0YXRpc3RpY3MgewogICAgICAgICB1bnNpZ25l
ZCB3a1ZpZXdDb3VudDsKICAgICAgICAgdW5zaWduZWQgd2tQYWdlQ291bnQ7CkBAIC0yNTMsOCAr
MjUwLDYgQEAgcHVibGljOgogICAgIH07CiAgICAgc3RhdGljIFN0YXRpc3RpY3MmIHN0YXRpc3Rp
Y3MoKTsgICAgCiAKLSAgICB2b2lkIHNldEljb25EYXRhYmFzZVBhdGgoY29uc3QgU3RyaW5nJik7
Ci0gICAgU3RyaW5nIGljb25EYXRhYmFzZVBhdGgoKSBjb25zdDsKICAgICB2b2lkIHNldENvb2tp
ZVN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXIpIHsgbV9vdmVycmlkZUNvb2tpZVN0
b3JhZ2VEaXJlY3RvcnkgPSBkaXI7IH0KIAogICAgIHZvaWQgdXNlVGVzdGluZ05ldHdvcmtTZXNz
aW9uKCk7CkBAIC00NTAsOCArNDQ1LDYgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBsYW5n
dWFnZUNoYW5nZWQodm9pZCogY29udGV4dCk7CiAgICAgdm9pZCBsYW5ndWFnZUNoYW5nZWQoKTsK
IAotICAgIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRJY29uRGF0YWJhc2VQYXRoKCkgY29uc3Q7Ci0K
ICNpZiBQTEFURk9STShJT1MpCiAgICAgU3RyaW5nIGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkoKSBj
b25zdDsKICNlbmRpZgpAQCAtNTMwLDggKzUyMyw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX21l
bW9yeVNhbXBsZXJFbmFibGVkOwogICAgIGRvdWJsZSBtX21lbW9yeVNhbXBsZXJJbnRlcnZhbDsK
IAotICAgIFJlZlB0cjxXZWJJY29uRGF0YWJhc2U+IG1faWNvbkRhdGFiYXNlOwotCiAgICAgY29u
c3QgUmVmPEFQSTo6V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0YVN0b3JlOwogCiAgICAg
dHlwZWRlZiBIYXNoTWFwPGNvbnN0IGNoYXIqLCBSZWZQdHI8V2ViQ29udGV4dFN1cHBsZW1lbnQ+
LCBQdHJIYXNoPGNvbnN0IGNoYXIqPj4gV2ViQ29udGV4dFN1cHBsZW1lbnRNYXA7CkBAIC01NTQs
NyArNTQ1LDYgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGVyQWN0aXZpdHlTdGF0
ZUNQVVVzYWdlU2FtcGxlcj4gbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyOwogI2Vu
ZGlmCiAKLSAgICBTdHJpbmcgbV9vdmVycmlkZUljb25EYXRhYmFzZVBhdGg7CiAgICAgU3RyaW5n
IG1fb3ZlcnJpZGVDb29raWVTdG9yYWdlRGlyZWN0b3J5OwogCiAgICAgYm9vbCBtX3Nob3VsZFVz
ZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCmluZGV4IGUwOTZiNjI3NTI3Li40Mjc1MDU2Mjg5MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0zOCw3ICszOCw2IEBACiAj
aW5jbHVkZSAiVGV4dENoZWNrZXJTdGF0ZS5oIgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCiAjaW5j
bHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIgotI2luY2x1ZGUgIldlYkljb25EYXRhYmFz
ZS5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvclV0aWxpdGllcy5oIgogI2luY2x1ZGUgIldlYk5h
dmlnYXRpb25EYXRhU3RvcmUuaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHkuaCIKQEAgLTE2Nyw4ICsxNjYsNiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc1dp
bGxTaHV0RG93bihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAKICAgICBmb3IgKGF1dG8m
IHBhZ2UgOiBtX3BhZ2VNYXAudmFsdWVzKCkpCiAgICAgICAgIHBhZ2UtPndlYlByb2Nlc3NXaWxs
U2h1dERvd24oKTsKLQotICAgIHJlbGVhc2VSZW1haW5pbmdJY29uc0ZvclBhZ2VVUkxzKCk7CiB9
CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzaHV0RG93bigpCkBAIC01NzksNTMgKzU3Niw2IEBA
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKFJlZjxN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5CiB9CiAjZW5kaWYgLy8gRU5BQkxFKERBVEFCQVNFX1BS
T0NFU1MpCiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZXRhaW5JY29uRm9yUGFnZVVSTChjb25z
dCBTdHJpbmcmIHBhZ2VVUkwpCi17Ci0gICAgV2ViSWNvbkRhdGFiYXNlKiBpY29uRGF0YWJhc2Ug
PSBwcm9jZXNzUG9vbCgpLmljb25EYXRhYmFzZSgpOwotICAgIGlmICghaWNvbkRhdGFiYXNlIHx8
IHBhZ2VVUkwuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBUcmFjayByZXRh
aW4gY291bnRzIHNvIHdlIGNhbiByZWxlYXNlIHRoZW0gaWYgdGhlIFdlYlByb2Nlc3MgdGVybWlu
YXRlcyBlYXJseS4KLSAgICBhdXRvIHJlc3VsdCA9IG1fcGFnZVVSTFJldGFpbkNvdW50TWFwLmFk
ZChwYWdlVVJMLCAxKTsKLSAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICArK3Jl
c3VsdC5pdGVyYXRvci0+dmFsdWU7Ci0KLSAgICBpY29uRGF0YWJhc2UtPnJldGFpbkljb25Gb3JQ
YWdlVVJMKHBhZ2VVUkwpOwotfQotCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVsZWFzZUljb25G
b3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCkKLXsKLSAgICBXZWJJY29uRGF0YWJhc2Uq
IGljb25EYXRhYmFzZSA9IHByb2Nlc3NQb29sKCkuaWNvbkRhdGFiYXNlKCk7Ci0gICAgaWYgKCFp
Y29uRGF0YWJhc2UgfHwgcGFnZVVSTC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IC8vIFRyYWNrIHJldGFpbiBjb3VudHMgc28gd2UgY2FuIHJlbGVhc2UgdGhlbSBpZiB0aGUgV2Vi
UHJvY2VzcyB0ZXJtaW5hdGVzIGVhcmx5LgotICAgIGF1dG8gcmVzdWx0ID0gbV9wYWdlVVJMUmV0
YWluQ291bnRNYXAuZmluZChwYWdlVVJMKTsKLSAgICBpZiAocmVzdWx0ID09IG1fcGFnZVVSTFJl
dGFpbkNvdW50TWFwLmVuZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAtLXJlc3VsdC0+dmFs
dWU7Ci0gICAgaWYgKCFyZXN1bHQtPnZhbHVlKQotICAgICAgICBtX3BhZ2VVUkxSZXRhaW5Db3Vu
dE1hcC5yZW1vdmUocmVzdWx0KTsKLQotICAgIGljb25EYXRhYmFzZS0+cmVsZWFzZUljb25Gb3JQ
YWdlVVJMKHBhZ2VVUkwpOwotfQotCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVsZWFzZVJlbWFp
bmluZ0ljb25zRm9yUGFnZVVSTHMoKQotewotICAgIFdlYkljb25EYXRhYmFzZSogaWNvbkRhdGFi
YXNlID0gcHJvY2Vzc1Bvb2woKS5pY29uRGF0YWJhc2UoKTsKLSAgICBpZiAoIWljb25EYXRhYmFz
ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fcGFnZVVSTFJl
dGFpbkNvdW50TWFwKSB7Ci0gICAgICAgIHVpbnQ2NF90IGNvdW50ID0gZW50cnkudmFsdWU7Ci0g
ICAgICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKQotICAgICAgICAgICAg
aWNvbkRhdGFiYXNlLT5yZWxlYXNlSWNvbkZvclBhZ2VVUkwoZW50cnkua2V5KTsKLSAgICB9Ci0K
LSAgICBtX3BhZ2VVUkxSZXRhaW5Db3VudE1hcC5jbGVhcigpOwotfQotCiAjaWYgIVBMQVRGT1JN
KENPQ09BKQogYm9vbCBXZWJQcm9jZXNzUHJveHk6OnBsYXRmb3JtSXNCZWluZ0RlYnVnZ2VkKCkg
Y29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXgg
NTY5MThiMzlkMzUuLjViYjM2YzY3MWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaApAQCAtMjE4LDEwICsyMTgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0
RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6
R2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKICNlbmRpZgog
Ci0gICAgdm9pZCByZXRhaW5JY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwpOwot
ICAgIHZvaWQgcmVsZWFzZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCk7Ci0g
ICAgdm9pZCByZWxlYXNlUmVtYWluaW5nSWNvbnNGb3JQYWdlVVJMcygpOwotCiAgICAgYm9vbCBw
bGF0Zm9ybUlzQmVpbmdEZWJ1Z2dlZCgpIGNvbnN0OwogCiAgICAgc3RhdGljIGNvbnN0IEhhc2hT
ZXQ8U3RyaW5nPiYgcGxhdGZvcm1QYXRoc1dpdGhBc3N1bWVkUmVhZEFjY2VzcygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmlu
ZGV4IGIyYmI3ODEyMGY1Li40N2U1Y2QyZmI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNTEsOSArNTEsNiBAQCBt
ZXNzYWdlcyAtPiBXZWJQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgU3RvcFJl
c3BvbnNpdmVuZXNzVGltZXIoKQogCi0gICAgUmV0YWluSWNvbkZvclBhZ2VVUkwoU3RyaW5nIHBh
Z2VVUkwpCi0gICAgUmVsZWFzZUljb25Gb3JQYWdlVVJMKFN0cmluZyBwYWdlVVJMKQotCiAgICAg
RGlkUmVjZWl2ZU1haW5UaHJlYWRQaW5nKCkKICAgICBEaWRSZWNlaXZlQmFja2dyb3VuZFJlc3Bv
bnNpdmVuZXNzUGluZygpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2Vi
UHJvY2Vzc1Bvb2xHdGsuY3BwCmluZGV4IGIwYWNlZTM5NzY4Li5jNTk1ZDU2ZGYzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCkBA
IC0xMDYsMTIgKzEwNiw2IEBAIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1E
ZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQogICAgIHJldHVybiBBUEk6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwogfQogCi1T
dHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdEljb25EYXRhYmFzZVBhdGgoKSBj
b25zdAotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRhdGFiYXNlRGlyZWN0b3J5KGdfYnVpbGRf
ZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndlYmtpdGd0ayIsICJpY29uZGF0YWJh
c2UiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oZGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOwotfQotCiBTdHJpbmcgV2Vi
UHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgp
CiB7CiAgICAgcmV0dXJuIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFn
ZURpcmVjdG9yeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dl
YlByb2Nlc3NQb29sV1BFLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQcm9j
ZXNzUG9vbFdQRS5jcHAKaW5kZXggMGI5YzZmYmU4YWQuLmU1MjJhNTk1NThkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUHJvY2Vzc1Bvb2xXUEUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQcm9jZXNzUG9vbFdQRS5jcHAKQEAgLTEx
MSwxMiArMTExLDYgQEAgU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1
bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIFdlYkNvcmU6OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oaW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnku
Z2V0KCkpOwogfQogCi1TdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdEljb25E
YXRhYmFzZVBhdGgoKSBjb25zdAotewotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRhdGFiYXNlRGly
ZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndwZSIsICJp
Y29uZGF0YWJhc2UiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOwotfQotCiBT
dHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdExvY2FsU3RvcmFnZURp
cmVjdG9yeSgpCiB7CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gc3RvcmFnZURpcmVjdG9yeShnX2J1
aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndwZSIsICJsb2NhbHN0b3JhZ2Ui
LCBudWxscHRyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBiM2MzYmE1NTk0Yi4uNTc4YzkzMzY4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTM3LDEwICs5MzcsNiBA
QAogCQk1MTBGQkI5QjEyODhDOTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRkJCOTkx
Mjg4Qzk1RTAwQUZGREY0IC8qIFdlYkNvbnRleHRNZW51SXRlbURhdGEuaCAqLzsgfTsKIAkJNTEx
MEFFMEMxMzNDMTZDQjAwNzI3MTdBIC8qIFdLSWNvbkRhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTBBRTBBMTMzQzE2Q0IwMDcyNzE3
QSAvKiBXS0ljb25EYXRhYmFzZS5jcHAgKi87IH07CiAJCTUxMTBBRTBEMTMzQzE2Q0IwMDcyNzE3
QSAvKiBXS0ljb25EYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTExMEFFMEIxMzNDMTZDQjAwNzI3MTdBIC8qIFdLSWNvbkRhdGFiYXNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTExQjI0
QTYxMzJFMDk1NzAwMDY1QTBDIC8qIFdlYkljb25EYXRhYmFzZVByb3h5LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUIyNEE0MTMyRTA5NTcwMDA2
NUEwQyAvKiBXZWJJY29uRGF0YWJhc2VQcm94eS5jcHAgKi87IH07Ci0JCTUxMUIyNEE3MTMyRTA5
NTcwMDA2NUEwQyAvKiBXZWJJY29uRGF0YWJhc2VQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExQjI0QTUxMzJFMDk1NzAwMDY1QTBDIC8qIFdl
Ykljb25EYXRhYmFzZVByb3h5LmggKi87IH07Ci0JCTUxMUIyNEFBMTMyRTA5NzIwMDA2NUEwQyAv
KiBXZWJJY29uRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTExQjI0QTgxMzJFMDk3MjAwMDY1QTBDIC8qIFdlYkljb25EYXRhYmFzZS5j
cHAgKi87IH07Ci0JCTUxMUIyNEFCMTMyRTA5NzIwMDA2NUEwQyAvKiBXZWJJY29uRGF0YWJhc2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUIyNEE5
MTMyRTA5NzIwMDA2NUEwQyAvKiBXZWJJY29uRGF0YWJhc2UuaCAqLzsgfTsKIAkJNTExRjdENDEx
RUIxQkNGNTAwRTQ3QjgzIC8qIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFGN0Q0MDFFQjFCQ0VFMDBF
NDdCODMgLyogV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCAqLzsgfTsKIAkJNTExRjdENDIx
RUIxQkNGODAwRTQ3QjgzIC8qIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUY3RDNGMUVCMUJDRUUw
MEU0N0I4MyAvKiBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAgKi87IH07CiAJCTUxMUY4
QTdCMTM4QjQ2MDkwMEE5NUY0NCAvKiBTZWNJdGVtU2hpbUxpYnJhcnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUY4QTc3MTM4QjQ2MDkwMEE5NUY0
NCAvKiBTZWNJdGVtU2hpbUxpYnJhcnkuaCAqLzsgfTsKQEAgLTEwMjMsOCArMTAxOSw2IEBACiAJ
CTUxN0NGMEU0MTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3
Q0YwRTIxNjNBNDg2QzAwQzI5NTBFIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2Vz
LmggKi87IH07CiAJCTUxN0RENUJFMTgwREE3RDMwMDgxNjYwQiAvKiBEYXRhYmFzZVByb2Nlc3NQ
cm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTdERDVCQzE4MERBN0QzMDA4MTY2MEIgLyogRGF0YWJhc2VQcm9jZXNzUHJveHkuY3BwICovOyB9
OwogCQk1MTdERDVCRjE4MERBN0QzMDA4MTY2MEIgLyogRGF0YWJhc2VQcm9jZXNzUHJveHkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0RENUJEMTgw
REE3RDMwMDgxNjYwQiAvKiBEYXRhYmFzZVByb2Nlc3NQcm94eS5oICovOyB9OwotCQk1MTgzNDU5
MjEzNDUzMkU5MDA5MkI2OTYgLyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODM0NTkwMTM0NTMyRTgwMDky
QjY5NiAvKiBXZWJJY29uRGF0YWJhc2VDbGllbnQuY3BwICovOyB9OwotCQk1MTgzNDU5MzEzNDUz
MkU5MDA5MkI2OTYgLyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgzNDU5MTEzNDUzMkU4MDA5MkI2OTYgLyog
V2ViSWNvbkRhdGFiYXNlQ2xpZW50LmggKi87IH07CiAJCTUxODNEREVDMTYzMEJERkMwMDhCRTVD
NyAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNUIwRDQxNjJGN0E3QTAwRTI3NzA5IC8qIE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgKi87IH07CiAJCTUxODcxQjVCMTI3Q0I4OUQwMEY3NjIz
MiAvKiBXZWJDb250ZXh0TWVudS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTg3MUI1OTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUu
Y3BwICovOyB9OwogCQk1MTg3MUI1QzEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODcxQjVB
MTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oICovOyB9OwpAQCAtMTA2MCwxMCAr
MTA1NCw2IEBACiAJCTUxQ0QxQzY1MUIzNEI5RDQwMDE0MkNBNSAvKiBXS1NlY3VyaXR5T3JpZ2lu
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUNEMUM1
RjFCMzRCOUM5MDAxNDJDQTUgLyogV0tTZWN1cml0eU9yaWdpbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJNTFDRDFDNjYxQjM0QjlEQzAwMTQyQ0E1
IC8qIFdLU2VjdXJpdHlPcmlnaW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUNEMUM2MDFCMzRCOUM5MDAxNDJDQTUgLyogV0tTZWN1cml0eU9yaWdp
bi5tbSAqLzsgfTsKIAkJNTFDRDFDNjcxQjM0QjlERjAwMTQyQ0E1IC8qIFdLU2VjdXJpdHlPcmln
aW5JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFDRDFDNjExQjM0QjlDOTAwMTQyQ0E1IC8qIFdLU2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5o
ICovOyB9OwotCQk1MUQwMkY2NDEzMkVDNUI5MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRDAyRjYzMTMyRUM1QjkwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VNZXNzYWdl
UmVjZWl2ZXIuY3BwICovOyB9OwotCQk1MUQwMkY2QTEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNv
bkRhdGFiYXNlTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxRDAyRjY3MTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VNZXNz
YWdlcy5oICovOyB9OwotCQk1MUQwMkY2QjEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFi
YXNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFEMDJGNjgxMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRh
YmFzZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKLQkJNTFEMDJGNkMxMzJFQzczNzAw
QkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDAyRjY5MTMyRUM3MzcwMEJFQUE5NiAv
KiBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VzLmggKi87IH07CiAJCTUxRDEyNDIzMUU2RDM0
QTEwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0MjExRTZEMzQ5QTAwMkIyODIwIC8q
IFdlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAgKi87IH07CiAJCTUxRDEyNDI4MUU2RDNGNUQwMDJC
MjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDI0MUU2RDNDQzMwMDJCMjgyMCAvKiBXZWJVUkxT
Y2hlbWVIYW5kbGVyLmNwcCAqLzsgfTsKIAkJNTFEMTI0MkMxRTZENDFGRDAwMkIyODIwIC8qIFdl
YlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQyQTFFNkQ0MUJDMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1l
SGFuZGxlclByb3h5LmNwcCAqLzsgfTsKQEAgLTMxODYsMTAgKzMxNzYsNiBAQAogCQk1MTBGQkI5
OTEyODhDOTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMTBBRTBBMTMzQzE2Q0IwMDcyNzE3QSAvKiBXS0ljb25E
YXRhYmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0ljb25E
YXRhYmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMTBBRTBCMTMzQzE2
Q0IwMDcyNzE3QSAvKiBXS0ljb25EYXRhYmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS0ljb25EYXRhYmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1
MTFCMjRBNDEzMkUwOTU3MDAwNjVBMEMgLyogV2ViSWNvbkRhdGFiYXNlUHJveHkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViSWNvbkRhdGFiYXNlUHJveHkuY3Bw
OyBwYXRoID0gSWNvbkRhdGFiYXNlL1dlYkljb25EYXRhYmFzZVByb3h5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTExQjI0QTUxMzJFMDk1NzAwMDY1QTBDIC8qIFdlYkljb25E
YXRhYmFzZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkljb25E
YXRhYmFzZVByb3h5Lmg7IHBhdGggPSBJY29uRGF0YWJhc2UvV2ViSWNvbkRhdGFiYXNlUHJveHku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTExQjI0QTgxMzJFMDk3MjAwMDY1QTBD
IC8qIFdlYkljb25EYXRhYmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJJY29uRGF0YWJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1
MTFCMjRBOTEzMkUwOTcyMDAwNjVBMEMgLyogV2ViSWNvbkRhdGFiYXNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkljb25EYXRhYmFzZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTFGN0QzRjFFQjFCQ0VFMDBFNDdCODMgLyogV2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MTFGN0Q0MDFFQjFCQ0VFMDBFNDdCODMgLyogV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTExRjhBNzcxMzhCNDYwOTAw
QTk1RjQ0IC8qIFNlY0l0ZW1TaGltTGlicmFyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBTZWNJdGVtU2hpbUxpYnJhcnkuaDsgcGF0aCA9IC4uLy4uL1dlYlByb2Nlc3MvbWFj
L1NlY0l0ZW1TaGltTGlicmFyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzI3
MCwxMCArMzI1Niw3IEBACiAJCTUxN0NGMEUyMTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTdERDVCQzE4MERBN0QzMDA4MTY2MEIgLyogRGF0YWJhc2VQcm9jZXNzUHJv
eHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGF0YWJhc2VQcm9j
ZXNzUHJveHkuY3BwOyBwYXRoID0gRGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3REQ1QkQxODBEQTdEMzAwODE2NjBCIC8q
IERhdGFiYXNlUHJvY2Vzc1Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERhdGFiYXNlUHJvY2Vzc1Byb3h5Lmg7IHBhdGggPSBEYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNz
UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE4MzQ1OTAxMzQ1MzJFODAw
OTJCNjk2IC8qIFdlYkljb25EYXRhYmFzZUNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJJY29uRGF0YWJhc2VDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk1MTgzNDU5MTEzNDUzMkU4MDA5MkI2OTYgLyogV2ViSWNvbkRhdGFi
YXNlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkljb25EYXRh
YmFzZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTgzQjM5MzEzNzlG
ODVDMDBFODc1NEUgLyogU2hpbS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBh
dGggPSBTaGltLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTg0QkM0
QTEzMkU5MDdBMDA2QjlFMjggLyogV2ViSWNvbkRhdGFiYXNlLm1lc3NhZ2VzLmluICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdlYkljb25EYXRhYmFzZS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTE4NzFCNTkxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRN
ZW51LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvbnRleHRN
ZW51LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4NzFCNUExMjdDQjg5RDAw
Rjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkNvbnRleHRNZW51Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxOEFD
QUU5MTJBRUU2QkIwMEIwNEI4MyAvKiBXS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUHJvdGVjdGlvblNwYWNlVHlwZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMzMTYsMTYgKzMyOTksMTIgQEAKIAkJNTFDMEM5Nzkx
RERENzg1NDAwMzJDQUQzIC8qIF9XS0xpbmtJY29uUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBfV0tMaW5rSWNvblBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTFDMEM5N0ExRERENzg1NDAwMzJDQUQzIC8qIF9XS0xpbmtJY29u
UGFyYW1ldGVycy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9X
S0xpbmtJY29uUGFyYW1ldGVycy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFD
MEM5N0IxRERENzg1NDAwMzJDQUQzIC8qIF9XS0xpbmtJY29uUGFyYW1ldGVyc0ludGVybmFsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0xpbmtJY29uUGFyYW1ldGVyc0lu
dGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQzhFMTlCMUYyMTYxNzIw
MEJGNzMxQiAvKiBXZWJJY29uRGF0YWJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSWNvbkRhdGFi
YXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQ0QxQzU5MUIzNDkzQTkwMDE0
MkNBNSAvKiBXS1NlY3VyaXR5T3JpZ2luUmVmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdLU2VjdXJpdHlPcmlnaW5SZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MUNEMUM1QTFCMzQ5M0E5MDAxNDJDQTUgLyogV0tTZWN1cml0eU9yaWdpblJl
Zi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1NlY3VyaXR5T3JpZ2luUmVm
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQ0QxQzVGMUIzNEI5QzkwMDE0MkNB
NSAvKiBXS1NlY3VyaXR5T3JpZ2luLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLU2VjdXJpdHlPcmlnaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDRDFD
NjAxQjM0QjlDOTAwMTQyQ0E1IC8qIFdLU2VjdXJpdHlPcmlnaW4ubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1NlY3VyaXR5T3JpZ2luLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MUNEMUM2MTFCMzRCOUM5MDAxNDJDQTUgLyogV0tTZWN1cml0
eU9yaWdpbkludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU2Vj
dXJpdHlPcmlnaW5JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MUQw
MkY2MzEzMkVDNUI5MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlTWVzc2FnZVJlY2VpdmVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkljb25EYXRhYmFzZU1l
c3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxRDAyRjY1
MTMyRUM2RDMwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94eS5tZXNzYWdlcy5pbiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IG5hbWUgPSBXZWJJY29uRGF0YWJhc2VQcm94eS5tZXNzYWdlcy5pbjsgcGF0
aCA9IEljb25EYXRhYmFzZS9XZWJJY29uRGF0YWJhc2VQcm94eS5tZXNzYWdlcy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTFEMDJGNjcxMzJFQzczNzAwQkVBQTk2IC8qIFdlYklj
b25EYXRhYmFzZU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
Ykljb25EYXRhYmFzZU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUx
RDAyRjY4MTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJY29uRGF0
YWJhc2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTUxRDAyRjY5MTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3Nh
Z2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkljb25EYXRhYmFzZVBy
b3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMTI0MjExRTZE
MzQ5QTAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MUQxMjQyMjFFNkQzNDlBMDAyQjI4MjAgLyogV2ViVVJM
U2NoZW1lVGFza1Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlVS
TFNjaGVtZVRhc2tQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUQxMjQy
NDFFNkQzQ0MzMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJVUkxTY2hlbWVIYW5kbGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyNTksMTYgKzYyMzgsNiBAQAogCQkJcGF0aCA9IERh
dGFiYXNlU2VydmljZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCTUxRkJC
OUMxMTMyRTA3OTIwMEYzMjdCNCAvKiBJY29uRGF0YWJhc2UgKi8gPSB7Ci0JCQlpc2EgPSBQQlhH
cm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTUxMUIyNEE0MTMyRTA5NTcwMDA2NUEwQyAvKiBX
ZWJJY29uRGF0YWJhc2VQcm94eS5jcHAgKi8sCi0JCQkJNTExQjI0QTUxMzJFMDk1NzAwMDY1QTBD
IC8qIFdlYkljb25EYXRhYmFzZVByb3h5LmggKi8sCi0JCQkJNTFEMDJGNjUxMzJFQzZEMzAwQkVB
QTk2IC8qIFdlYkljb25EYXRhYmFzZVByb3h5Lm1lc3NhZ2VzLmluICovLAotCQkJKTsKLQkJCW5h
bWUgPSBJY29uRGF0YWJhc2U7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwogCQk1
MzlCRDVCMjFEQURCMEJBMDBGMkU0RTEgLyogY2FwdHVyZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC02NTY5LDcgKzY1MzgsNiBAQAogCQkJCUNENzNCQTNE
MTMxQTJBMjEwMEVFREVEMiAvKiBGdWxsU2NyZWVuICovLAogCQkJCTUxNUJFMTcyMUQ1M0ZEQjkw
MEREN0M2OCAvKiBHYW1lcGFkICovLAogCQkJCUJDMEU1RkNCMTJENjk2REQwMDEyQTcyQSAvKiBH
ZW9sb2NhdGlvbiAqLywKLQkJCQk1MUZCQjlDMTEzMkUwNzkyMDBGMzI3QjQgLyogSWNvbkRhdGFi
YXNlICovLAogCQkJCUJDMjA0RURGMTFDODNFNzIwMDhGMzM3NSAvKiBJbmplY3RlZEJ1bmRsZSAq
LywKIAkJCQkzM0QzQTNCRDEzMzk2MDk4MDA3MDlCRTQgLyogTWVkaWFDYWNoZSAqLywKIAkJCQk0
QTQxMEY0MTE5QUY3QjI3MDAyRUJBQjUgLyogTWVkaWFTdHJlYW0gKi8sCkBAIC02ODIzLDExICs2
NzkxLDcgQEAKIAkJCQlCQzBFNjE1MjEyRDZDQUM4MDAxMkE3MkEgLyogV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJQkMxQkUxRjExMkQ1NERCRDAwMDRBMjI4
IC8qIFdlYkdlb2xvY2F0aW9uUHJvdmlkZXIuY3BwICovLAogCQkJCUJDMUJFMUYwMTJENTREQkQw
MDA0QTIyOCAvKiBXZWJHZW9sb2NhdGlvblByb3ZpZGVyLmggKi8sCi0JCQkJNTExQjI0QTgxMzJF
MDk3MjAwMDY1QTBDIC8qIFdlYkljb25EYXRhYmFzZS5jcHAgKi8sCi0JCQkJNTExQjI0QTkxMzJF
MDk3MjAwMDY1QTBDIC8qIFdlYkljb25EYXRhYmFzZS5oICovLAotCQkJCTUxODRCQzRBMTMyRTkw
N0EwMDZCOUUyOCAvKiBXZWJJY29uRGF0YWJhc2UubWVzc2FnZXMuaW4gKi8sCi0JCQkJNTE4MzQ1
OTAxMzQ1MzJFODAwOTJCNjk2IC8qIFdlYkljb25EYXRhYmFzZUNsaWVudC5jcHAgKi8sCi0JCQkJ
NTE4MzQ1OTExMzQ1MzJFODAwOTJCNjk2IC8qIFdlYkljb25EYXRhYmFzZUNsaWVudC5oICovLAor
CQkJCTUxQzhFMTlCMUYyMTYxNzIwMEJGNzMxQiAvKiBXZWJJY29uRGF0YWJhc2UuaCAqLywKIAkJ
CQkxQzhFMjgzMzEyNzVENzM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yUHJveHkuY3BwICovLAog
CQkJCTFDOEUyODMyMTI3NUQ3MzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JQcm94eS5oICovLAog
CQkJCTFDNzdDMTk1MTI4OEE4NzIwMDZBNzQyRiAvKiBXZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdl
cy5pbiAqLywKQEAgLTc4ODAsMTAgKzc4NDQsNiBAQAogCQkJCUJDMEU2MDYwMTJENkJBOTEwMDEy
QTcyQSAvKiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJNZXNzYWdlcy5oICovLAogCQkJCUJDMEU2MTgw
MTJENkNCMUQwMDEyQTcyQSAvKiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgKi8sCiAJCQkJQkMwRTYxODExMkQ2Q0IxRDAwMTJBNzJBIC8qIFdlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5TWVzc2FnZXMuaCAqLywKLQkJCQk1MUQwMkY2MzEzMkVDNUI5MDBCRUFB
OTYgLyogV2ViSWNvbkRhdGFiYXNlTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKLQkJCQk1MUQwMkY2
NzEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlTWVzc2FnZXMuaCAqLywKLQkJCQk1
MUQwMkY2ODEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovLAotCQkJCTUxRDAyRjY5MTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0
YWJhc2VQcm94eU1lc3NhZ2VzLmggKi8sCiAJCQkJNTEwNTIzNzcxQzczREE3MDAwNzk5M0NCIC8q
IFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudE1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJNTEw
NTIzNzgxQzczREE3MDAwNzk5M0NCIC8qIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudE1lc3NhZ2Vz
LmggKi8sCiAJCQkJNTEwNTIzNzIxQzczRDM3QjAwNzk5M0NCIC8qIFdlYklEQkNvbm5lY3Rpb25U
b1NlcnZlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC04NzE0LDExICs4Njc0LDYgQEAKIAkJ
CQlCQzFCRTFGMjEyRDU0REJEMDAwNEEyMjggLyogV2ViR2VvbG9jYXRpb25Qcm92aWRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMkQ1MDM2NzYxQkNFRDE5RjAwRTIwQkIzIC8qIFdlYkdlc3R1cmVF
dmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNBODhCMzMxQkM2RTlDRDAwQUJBNUMyIC8qIFdl
YkhpdFRlc3RSZXN1bHREYXRhLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTFCMjRBQjEzMkUwOTcy
MDAwNjVBMEMgLyogV2ViSWNvbkRhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTgzNDU5
MzEzNDUzMkU5MDA5MkI2OTYgLyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKLQkJCQk1MUQwMkY2QTEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlTWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxMUIyNEE3MTMyRTA5NTcwMDA2NUEwQyAvKiBXZWJJ
Y29uRGF0YWJhc2VQcm94eS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTFEMDJGNkMxMzJFQzczNzAw
QkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUY0NERGRUIyMUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJY29uVXRpbGl0aWVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTA1MjM3MDFDNzM5RDQyMDA3OTkzQ0IgLyogV2ViSURCQ29ubmVjdGlv
blRvQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTA1MjM3QTFDNzNEQTc3MDA3OTkzQ0Ig
LyogV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApAQCAt
OTM4OCw3ICs5MzQzLDcgQEAKIAkJCQlMYXN0U3dpZnRVcGRhdGVDaGVjayA9IDA3MDA7CiAJCQkJ
TGFzdFVwZ3JhZGVDaGVjayA9IDA3MDA7CiAJCQl9OwotCQkJYnVpbGRDb25maWd1cmF0aW9uTGlz
dCA9IDFERUI5MUIxMDg3MzNEQTUwMDEwRTlDRCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3Qg
Zm9yIFBCWFByb2plY3QgIldlYktpdDIiICovOworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9
IDFERUI5MUIxMDg3MzNEQTUwMDEwRTlDRCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9y
IFBCWFByb2plY3QgIldlYktpdCIgKi87CiAJCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29k
ZSAzLjIiOwogCQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBFbmdsaXNoOwogCQkJaGFzU2Nhbm5lZEZv
ckVuY29kaW5ncyA9IDE7CkBAIC0xMDMxMCwxMSArMTAyNjUsNiBAQAogCQkJCTJENTAzNjc1MUJD
RUQxOUYwMEUyMEJCMyAvKiBXZWJHZXN0dXJlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTNBODhCMzYxQkM2RUFENTAwQUJBNUMyIC8qIFdlYkhpdFRlc3RSZXN1bHREYXRhLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTkzQTg4QjMwMUJDNkU5OTcwMEFCQTVDMiAvKiBXZWJIaXRUZXN0UmVz
dWx0RGF0YS5tbSBpbiBTb3VyY2VzICovLAotCQkJCTUxMUIyNEFBMTMyRTA5NzIwMDA2NUEwQyAv
KiBXZWJJY29uRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE4MzQ1OTIxMzQ1MzJF
OTAwOTJCNjk2IC8qIFdlYkljb25EYXRhYmFzZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQk1MUQwMkY2NDEzMkVDNUI5MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxMUIyNEE2MTMyRTA5NTcwMDA2NUEwQyAvKiBX
ZWJJY29uRGF0YWJhc2VQcm94eS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MUQwMkY2QjEzMkVD
NzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRjQ0REZFQjMxRTlFNzUyRjAwMzhEMTk2IC8qIFdlYkljb25VdGls
aXRpZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTA1MjM2RjFDNzM5RDQyMDA3OTkzQ0IgLyog
V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMDUyMzc5
MUM3M0RBNzcwMDc5OTNDQiAvKiBXZWJJREJDb25uZWN0aW9uVG9DbGllbnRNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMTE2Nyw3ICsxMTExNyw3IEBACiAJCQlkZWZhdWx0
Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUg
PSBQcm9kdWN0aW9uOwogCQl9OwotCQkxREVCOTFCMTA4NzMzREE1MDAxMEU5Q0QgLyogQnVpbGQg
Y29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJXZWJLaXQyIiAqLyA9IHsKKwkJMURF
QjkxQjEwODczM0RBNTAwMTBFOUNEIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJY
UHJvamVjdCAiV2ViS2l0IiAqLyA9IHsKIAkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJ
CQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAogCQkJCTFERUI5MUIyMDg3MzNEQTUwMDEwRTlDRCAv
KiBEZWJ1ZyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JY29uRGF0
YWJhc2UvV2ViSWNvbkRhdGFiYXNlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0ljb25EYXRhYmFzZS9XZWJJY29uRGF0YWJhc2VQcm94eS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDU0MmVkZGQ2ZGMwLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSWNvbkRhdGFiYXNlL1dlYkljb25EYXRhYmFzZVByb3h5LmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDE0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIldlYkljb25EYXRhYmFzZVByb3h5LmgiCi0KLSNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCi0jaW5jbHVkZSAiV2ViSWNvbkRhdGFiYXNlTWVzc2FnZXMuaCIKLSNpbmNsdWRl
ICJXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vzcy5o
IgotI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9TaGFyZWRCdWZmZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJJY29uRGF0
YWJhc2VQcm94eTo6fldlYkljb25EYXRhYmFzZVByb3h5KCkKLXsKLX0KLQotV2ViSWNvbkRhdGFi
YXNlUHJveHk6OldlYkljb25EYXRhYmFzZVByb3h5KFdlYlByb2Nlc3MmIHByb2Nlc3MpCi0gICAg
OiBtX3Byb2Nlc3MocHJvY2VzcykKLXsKLSAgICBtX3Byb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpXZWJJY29uRGF0YWJhc2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAq
dGhpcyk7Ci19Ci0KLWJvb2wgV2ViSWNvbkRhdGFiYXNlUHJveHk6OmlzRW5hYmxlZCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1faXNFbmFibGVkOwotfQotCi12b2lkIFdlYkljb25EYXRhYmFzZVBy
b3h5OjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKLXsKLSAgICBpZiAoZW5hYmxlZCA9PSBtX2lz
RW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIG1faXNFbmFibGVkID0gZW5hYmxl
ZDsKLSAgICBzZXRHbG9iYWxJY29uRGF0YWJhc2UoZW5hYmxlZCA/IHRoaXMgOiAwKTsKLX0KLQot
dm9pZCBXZWJJY29uRGF0YWJhc2VQcm94eTo6cmV0YWluSWNvbkZvclBhZ2VVUkwoY29uc3QgU3Ry
aW5nJiBwYWdlVVJMKQotewotICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OlJldGFpbkljb25Gb3JQYWdlVVJMKHBh
Z2VVUkwpLCAwKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2VQcm94eTo6cmVsZWFzZUljb25G
b3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCkKLXsKLSAgICBtX3Byb2Nlc3MucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpSZWxl
YXNlSWNvbkZvclBhZ2VVUkwocGFnZVVSTCksIDApOwotfQotCi1JbWFnZSogV2ViSWNvbkRhdGFi
YXNlUHJveHk6OnN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJM
LCBjb25zdCBJbnRTaXplJiAvKnNpemUqLykKLXsKLSAgICBJUEM6OkRhdGFSZWZlcmVuY2UgcmVz
dWx0OwotICAgIGlmICghbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJJY29uRGF0YWJhc2U6OlN5bmNocm9ub3VzSWNvbkRhdGFGb3JQYWdl
VVJMKHBhZ2VVUkwpLCBNZXNzYWdlczo6V2ViSWNvbkRhdGFiYXNlOjpTeW5jaHJvbm91c0ljb25E
YXRhRm9yUGFnZVVSTDo6UmVwbHkocmVzdWx0KSwgMCkpCi0gICAgICAgIHJldHVybiAwOwotICAg
IAotICAgIC8vIEZJWE1FOiBSZXR1cm4gSW1hZ2UgY3JlYXRlZCB3aXRoIHRoZSBhYm92ZSBkYXRh
LgotICAgIHJldHVybiAwOwotfQotCi0KLVN0cmluZyBXZWJJY29uRGF0YWJhc2VQcm94eTo6c3lu
Y2hyb25vdXNJY29uVVJMRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIC8qcGFnZVVSTCovKQotewot
ICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGFzayB0aGUgVUkgcHJvY2VzcyBmb3IgdGhlIGlj
b25VUkwsIGJ1dCBpdCBjYW4ndCBkbyBzbyBzeW5jaHJvbm91c2x5IGJlY2F1c2UgaXQgd2lsbCBz
bG93IGRvd24gcGFnZSBsb2FkaW5nLgotICAgIC8vIFRoZSBwYXJ0cyBpbiBXZWJDb3JlIHRoYXQg
bmVlZCB0aGlzIGRhdGEgd2lsbCBoYXZlIHRvIGJlIGNoYW5nZWQgdG8gd29yayBhc3ljbmNocm9u
b3VzbHkuCi0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi1ib29sIFdlYkljb25EYXRhYmFzZVBy
b3h5OjpzeW5jaHJvbm91c0ljb25EYXRhS25vd25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYgLypp
Y29uVVJMKi8pCi17Ci0gICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gYXNrIHRoZSBVSSBwcm9j
ZXNzIGZvciB0aGUgaWNvblVSTCwgYnV0IGl0IGNhbid0IGRvIHNvIHN5bmNocm9ub3VzbHkgYmVj
YXVzZSBpdCB3aWxsIHNsb3cgZG93biBwYWdlIGxvYWRpbmcuCi0gICAgLy8gVGhlIHBhcnRzIGlu
IFdlYkNvcmUgdGhhdCBuZWVkIHRoaXMgZGF0YSB3aWxsIGhhdmUgdG8gYmUgY2hhbmdlZCB0byB3
b3JrIGFzeWNuY2hyb25vdXNseS4KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLUljb25Mb2FkRGVj
aXNpb24gV2ViSWNvbkRhdGFiYXNlUHJveHk6OnN5bmNocm9ub3VzTG9hZERlY2lzaW9uRm9ySWNv
blVSTChjb25zdCBTdHJpbmcmIC8qaWNvblVSTCovLCBEb2N1bWVudExvYWRlciopCi17Ci0gICAg
Ly8gRklYTUU6IFRoaXMgbmVlZHMgdG8gYXNrIHRoZSBVSSBwcm9jZXNzIGZvciB0aGUgaWNvblVS
TCwgYnV0IGl0IGNhbid0IGRvIHNvIHN5bmNocm9ub3VzbHkgYmVjYXVzZSBpdCB3aWxsIHNsb3cg
ZG93biBwYWdlIGxvYWRpbmcuCi0gICAgLy8gVGhlIHBhcnRzIGluIFdlYkNvcmUgdGhhdCBuZWVk
IHRoaXMgZGF0YSB3aWxsIGhhdmUgdG8gYmUgY2hhbmdlZCB0byB3b3JrIGFzeWNuY2hyb25vdXNs
eS4KLSAgICByZXR1cm4gSWNvbkxvYWRObzsKLX0KLQotYm9vbCBXZWJJY29uRGF0YWJhc2VQcm94
eTo6c3VwcG9ydHNBc3luY2hyb25vdXNNb2RlKCkKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
dm9pZCBXZWJJY29uRGF0YWJhc2VQcm94eTo6bG9hZERlY2lzaW9uRm9ySWNvblVSTChjb25zdCBT
dHJpbmcmIGljb25VUkwsIFdlYkNvcmU6Okljb25Mb2FkRGVjaXNpb25DYWxsYmFjayYgY2FsbGJh
Y2spCi17Ci0gICAgdWludDY0X3QgaWQgPSBjYWxsYmFjay5jYWxsYmFja0lEKCk7Ci0gICAgbV9p
Y29uTG9hZERlY2lzaW9uQ2FsbGJhY2tzLmFkZChpZCwgJmNhbGxiYWNrKTsKLSAgICBtX3Byb2Nl
c3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSWNvbkRhdGFi
YXNlOjpHZXRMb2FkRGVjaXNpb25Gb3JJY29uVVJMKGljb25VUkwsIGlkKSwgMCk7Ci19Ci0KLXZv
aWQgV2ViSWNvbkRhdGFiYXNlUHJveHk6OnJlY2VpdmVkSWNvbkxvYWREZWNpc2lvbihpbnQgZGVj
aXNpb24sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi17Ci0gICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBt
X2ljb25Mb2FkRGVjaXNpb25DYWxsYmFja3MudGFrZShjYWxsYmFja0lEKSkKLSAgICAgICAgY2Fs
bGJhY2stPnBlcmZvcm1DYWxsYmFjayhzdGF0aWNfY2FzdDxXZWJDb3JlOjpJY29uTG9hZERlY2lz
aW9uPihkZWNpc2lvbikpOwotfQotCi12b2lkIFdlYkljb25EYXRhYmFzZVByb3h5OjppY29uRGF0
YUZvckljb25VUkwoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6SWNvbkRhdGFDYWxsYmFjayYpCi17
Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlUHJveHk6OnNldEljb25VUkxGb3JQYWdlVVJMKGNv
bnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiBwYWdlVVJMKQotewotICAgIG1fcHJv
Y2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJY29uRGF0
YWJhc2U6OlNldEljb25VUkxGb3JQYWdlVVJMKGljb25VUkwsIHBhZ2VVUkwpLCAwKTsKLX0KLQot
dm9pZCBXZWJJY29uRGF0YWJhc2VQcm94eTo6c2V0SWNvbkRhdGFGb3JJY29uVVJMKFNoYXJlZEJ1
ZmZlciogaWNvbkRhdGEsIGNvbnN0IFN0cmluZyYgaWNvblVSTCkKLXsKLSAgICBJUEM6OkRhdGFS
ZWZlcmVuY2UgZGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpY29uRGF0YSA/
IGljb25EYXRhLT5kYXRhKCkgOiBudWxscHRyKSwgaWNvbkRhdGEgPyBpY29uRGF0YS0+c2l6ZSgp
IDogMCk7Ci0gICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYkljb25EYXRhYmFzZTo6U2V0SWNvbkRhdGFGb3JJY29uVVJMKGRhdGEsIGljb25V
UkwpLCAwKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2VQcm94eTo6dXJsSW1wb3J0RmluaXNo
ZWQoKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JY29uRGF0YWJhc2UvV2ViSWNvbkRhdGFiYXNlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JY29uRGF0YWJhc2UvV2ViSWNvbkRhdGFiYXNlUHJveHku
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGEyMGQzNDQzYzAuLjAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JY29uRGF0YWJhc2UvV2ViSWNvbkRhdGFi
YXNlUHJveHkuaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkFQSU9iamVjdC5oIgotI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvSWNvbkRhdGFiYXNlQmFzZS5oPgotI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotY2xhc3MgV2ViUHJvY2VzczsKLQotY2xhc3MgV2ViSWNvbkRhdGFiYXNlUHJv
eHkgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6SWNvbkRhdGFiYXNlQmFzZSwgcHJpdmF0ZSBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgV2ViSWNvbkRhdGFiYXNl
UHJveHkoV2ViUHJvY2VzcyYpOwotICAgIHZpcnR1YWwgfldlYkljb25EYXRhYmFzZVByb3h5KCk7
Ci0KLSAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCkgZmluYWw7Ci0KLXByaXZhdGU6Ci0gICAgYm9v
bCBpc0VuYWJsZWQoKSBjb25zdCBmaW5hbDsKLQotICAgIHZvaWQgcmV0YWluSWNvbkZvclBhZ2VV
UkwoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCByZWxlYXNlSWNvbkZvclBhZ2VVUkwo
Y29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCBzZXRJY29uVVJMRm9yUGFnZVVSTChjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICB2b2lkIHNldEljb25EYXRhRm9y
SWNvblVSTChXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKLQot
ICAgIFN0cmluZyBzeW5jaHJvbm91c0ljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpIGZp
bmFsOwotICAgIGJvb2wgc3luY2hyb25vdXNJY29uRGF0YUtub3duRm9ySWNvblVSTChjb25zdCBT
dHJpbmcmKSBmaW5hbDsKLSAgICBXZWJDb3JlOjpJY29uTG9hZERlY2lzaW9uIHN5bmNocm9ub3Vz
TG9hZERlY2lzaW9uRm9ySWNvblVSTChjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpEb2N1bWVudExv
YWRlciopIGZpbmFsOwotICAgIFdlYkNvcmU6OkltYWdlKiBzeW5jaHJvbm91c0ljb25Gb3JQYWdl
VVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBmaW5hbDsKLSAgICAK
LSAgICBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzTW9kZSgpIGZpbmFsOwotICAgIHZvaWQgbG9h
ZERlY2lzaW9uRm9ySWNvblVSTChjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpJY29uTG9hZERlY2lz
aW9uQ2FsbGJhY2smKSBmaW5hbDsKLSAgICB2b2lkIHJlY2VpdmVkSWNvbkxvYWREZWNpc2lvbihp
bnQgZGVjaXNpb24sIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgaWNvbkRhdGFGb3JJ
Y29uVVJMKGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6Okljb25EYXRhQ2FsbGJhY2smKSBmaW5hbDsK
LQotICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCi0gICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKLSAgICAKLSAgICAvLyBD
YWxsYmFja3MgZnJvbSB0aGUgVUlQcm9jZXNzCi0gICAgdm9pZCB1cmxJbXBvcnRGaW5pc2hlZCgp
OwotCi0gICAgYm9vbCBtX2lzRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgV2ViUHJvY2VzcyYgbV9w
cm9jZXNzOwotICAgIAotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJDb3JlOjpJY29u
TG9hZERlY2lzaW9uQ2FsbGJhY2s+PiBtX2ljb25Mb2FkRGVjaXNpb25DYWxsYmFja3M7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JY29uRGF0YWJhc2UvV2ViSWNvbkRhdGFiYXNlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSWNvbkRhdGFiYXNlL1dlYkljb25EYXRhYmFzZVByb3h5Lm1l
c3NhZ2VzLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDlhMGQ5MTg0Ni4uMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ljb25EYXRhYmFzZS9XZWJJ
Y29uRGF0YWJhc2VQcm94eS5tZXNzYWdlcy5pbgorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAg
QEAKLSMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotbWVzc2FnZXMgLT4g
V2ViSWNvbkRhdGFiYXNlUHJveHkgewotICAgIFVSTEltcG9ydEZpbmlzaGVkKCkKLSAgICBSZWNl
aXZlZEljb25Mb2FkRGVjaXNpb24oaW50IGxvYWREZWNpc2lvbiwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDJjZmNmY2UwYzU0Li4w
MTRmNDczYjk3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC00OCw3ICs0
OCw2IEBACiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViRnVsbFNjcmVlbk1hbmFnZXIuaCIKLSNpbmNsdWRl
ICJXZWJJY29uRGF0YWJhc2VNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYk5hdmlnYXRpb25EYXRh
U3RvcmUuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwUHJv
eHkuaCIKQEAgLTE3OTIsMTEgKzE3OTEsNiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQogICAgIHdlYlBhZ2UtPmRpZFJlc3RvcmVTY3JvbGxQ
b3NpdGlvbigpOwogfQogCi1ib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1c2VJY29uTG9hZGlu
Z0NsaWVudCgpCi17Ci0gICAgcmV0dXJuIG1fdXNlSWNvbkxvYWRpbmdDbGllbnQ7Ci19Ci0KIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmdldExvYWREZWNpc2lvbkZvckljb25zKGNvbnN0IFZl
Y3RvcjxzdGQ6OnBhaXI8V2ViQ29yZTo6TGlua0ljb24mLCB1aW50NjRfdD4+JiBpY29ucykKIHsK
ICAgICBhdXRvKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaAppbmRleCA2NTViMGJkNWE3Yi4uZWFmMjk4ZGRjMzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCkBAIC0yNTYsNyArMjU2LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlk
UmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkgZmluYWw7CiAKLSAgICBib29sIHVzZUljb25Mb2FkaW5n
Q2xpZW50KCkgZmluYWw7CiAgICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhjb25zdCBW
ZWN0b3I8c3RkOjpwYWlyPFdlYkNvcmU6OkxpbmtJY29uJiwgdWludDY0X3Q+PiYpIGZpbmFsOwog
ICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIs
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciopIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKaW5kZXggZjYxYjc3Mzk2MjAuLjNlYzQzYjJhZGIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC01MSw3ICs1MSw2IEBACiAjaW5jbHVk
ZSAiV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkdhbWVwYWRQcm92
aWRlci5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uTWFuYWdlci5oIgotI2luY2x1ZGUgIldl
Ykljb25EYXRhYmFzZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViTG9hZGVyU3RyYXRlZ3kuaCIKICNp
bmNsdWRlICJXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViTWVtb3J5
U2FtcGxlci5oIgpAQCAtODgsNyArODcsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR0NDb250cm9s
bGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HbHlwaFBhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0hUTUxNZWRpYUVsZW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ljb25EYXRhYmFzZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSlNET01XaW5kb3cuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xhbmd1
YWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NYWluRnJhbWUuaD4KQEAgLTE2Myw3ICsxNjEsNiBA
QCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICAgICAsIG1fdmlld1VwZGF0ZURpc3BhdGNoZXIo
Vmlld1VwZGF0ZURpc3BhdGNoZXI6OmNyZWF0ZSgpKQogI2VuZGlmCiAgICAgLCBtX3dlYkluc3Bl
Y3RvckludGVycnVwdERpc3BhdGNoZXIoV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlcjo6
Y3JlYXRlKCkpCi0gICAgLCBtX2ljb25EYXRhYmFzZVByb3h5KCpuZXcgV2ViSWNvbkRhdGFiYXNl
UHJveHkoKnRoaXMpKQogICAgICwgbV93ZWJMb2FkZXJTdHJhdGVneSgqbmV3IFdlYkxvYWRlclN0
cmF0ZWd5KQogICAgICwgbV9kbnNQcmVmZXRjaEh5c3RlcmVyaXMoW3RoaXNdKEh5c3RlcmVzaXNT
dGF0ZSBzdGF0ZSkgeyBpZiAoc3RhdGUgPT0gSHlzdGVyZXNpc1N0YXRlOjpTdG9wcGVkKSBtX2Ru
c1ByZWZldGNoZWRIb3N0cy5jbGVhcigpOyB9KQogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
QVBJKQpAQCAtMzAwLDEwICsyOTcsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQ
cm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIGF1
dG8mIGRhdGFiYXNlTWFuYWdlciA9IERhdGFiYXNlTWFuYWdlcjo6c2luZ2xldG9uKCk7CiAgICAg
ZGF0YWJhc2VNYW5hZ2VyLmluaXRpYWxpemUocGFyYW1ldGVycy53ZWJTUUxEYXRhYmFzZURpcmVj
dG9yeSk7CiAKLSNpZiBFTkFCTEUoSUNPTkRBVEFCQVNFKQotICAgIG1faWNvbkRhdGFiYXNlUHJv
eHkuc2V0RW5hYmxlZChwYXJhbWV0ZXJzLmljb25EYXRhYmFzZUVuYWJsZWQpOwotI2VuZGlmCi0K
ICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgY29uc3RydWN0ZWQgcGVyIGRhdGEgc3RvcmUs
IG5vdCBwZXIgcHJvY2Vzcy4KICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlID0gQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnksIHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZSk7CiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMTAxNSwxMiArMTAwOCw2IEBAIHZvaWQgV2ViUHJv
Y2Vzczo6Z2V0V2ViQ29yZVN0YXRpc3RpY3ModWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBkYXRh
LnN0YXRpc3RpY3NOdW1iZXJzLnNldChBU0NJSUxpdGVyYWwoIkZhc3RNYWxsb2NDb21taXR0ZWRW
TUJ5dGVzIiksIGZhc3RNYWxsb2NTdGF0aXN0aWNzLmNvbW1pdHRlZFZNQnl0ZXMpOwogICAgIGRh
dGEuc3RhdGlzdGljc051bWJlcnMuc2V0KEFTQ0lJTGl0ZXJhbCgiRmFzdE1hbGxvY0ZyZWVMaXN0
Qnl0ZXMiKSwgZmFzdE1hbGxvY1N0YXRpc3RpY3MuZnJlZUxpc3RCeXRlcyk7CiAgICAgCi0gICAg
Ly8gR2F0aGVyIGljb24gc3RhdGlzdGljcy4KLSAgICBkYXRhLnN0YXRpc3RpY3NOdW1iZXJzLnNl
dChBU0NJSUxpdGVyYWwoIkljb25QYWdlVVJMTWFwcGluZ0NvdW50IiksIGljb25EYXRhYmFzZSgp
LnBhZ2VVUkxNYXBwaW5nQ291bnQoKSk7Ci0gICAgZGF0YS5zdGF0aXN0aWNzTnVtYmVycy5zZXQo
QVNDSUlMaXRlcmFsKCJJY29uUmV0YWluZWRQYWdlVVJMQ291bnQiKSwgaWNvbkRhdGFiYXNlKCku
cmV0YWluZWRQYWdlVVJMQ291bnQoKSk7Ci0gICAgZGF0YS5zdGF0aXN0aWNzTnVtYmVycy5zZXQo
QVNDSUlMaXRlcmFsKCJJY29uUmVjb3JkQ291bnQiKSwgaWNvbkRhdGFiYXNlKCkuaWNvblJlY29y
ZENvdW50KCkpOwotICAgIGRhdGEuc3RhdGlzdGljc051bWJlcnMuc2V0KEFTQ0lJTGl0ZXJhbCgi
SWNvbnNXaXRoRGF0YUNvdW50IiksIGljb25EYXRhYmFzZSgpLmljb25SZWNvcmRDb3VudFdpdGhE
YXRhKCkpOwotICAgIAogICAgIC8vIEdhdGhlciBmb250IHN0YXRpc3RpY3MuCiAgICAgYXV0byYg
Zm9udENhY2hlID0gRm9udENhY2hlOjpzaW5nbGV0b24oKTsKICAgICBkYXRhLnN0YXRpc3RpY3NO
dW1iZXJzLnNldChBU0NJSUxpdGVyYWwoIkNhY2hlZEZvbnREYXRhQ291bnQiKSwgZm9udENhY2hl
LmZvbnRDb3VudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGNh
MjNlNmZmYWEzLi4wNmVkMTA0ODYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oCkBAIC04Miw3ICs4Miw2IEBAIGNsYXNzIFdheWxhbmRDb21wb3NpdG9yRGlzcGxheTsKIGNs
YXNzIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk7CiBjbGFzcyBXZWJDb25uZWN0aW9uVG9VSVBy
b2Nlc3M7CiBjbGFzcyBXZWJGcmFtZTsKLWNsYXNzIFdlYkljb25EYXRhYmFzZVByb3h5OwogY2xh
c3MgV2ViTG9hZGVyU3RyYXRlZ3k7CiBjbGFzcyBXZWJQYWdlOwogY2xhc3MgV2ViUGFnZUdyb3Vw
UHJveHk7CkBAIC0zNzYsOCArMzc1LDYgQEAgcHJpdmF0ZToKIAogICAgIFRleHRDaGVja2VyU3Rh
dGUgbV90ZXh0Q2hlY2tlclN0YXRlOwogCi0gICAgV2ViSWNvbkRhdGFiYXNlUHJveHkmIG1faWNv
bkRhdGFiYXNlUHJveHk7Ci0KICAgICB2b2lkIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpOwogICAgIFJlZlB0cjxOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24+IG1fbmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uOwogICAgIFdlYkxvYWRlclN0cmF0ZWd5JiBtX3dlYkxvYWRlclN0cmF0ZWd5
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316065</attachid>
            <date>2017-07-20 20:32:26 -0700</date>
            <delta_ts>2017-07-20 21:10:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174693-20170720203225.patch</filename>
            <type>text/plain</type>
            <size>84658</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5NzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGZmMTE1MTQwZTA1NWEwOWI5
NTBjN2RhYTU1NGM4ZjRhOTg2MTA2NGQuLjViMTEyODE0ZmZkNmU5MTUzNjhmZTU0MTM2OGMwZjVl
ZGY4MGQxNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMTctMDctMjAgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEdldCByaWQgb2YgSWNvbkRhdGFi
YXNlIHJlbGF0ZWQgY29kZSBpbiBXZWJLaXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ2OTMKKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9y
dG9uLgorCisgICAgICAgIFRoaXMgbGVhdmVzIHRoZSBDLUFQSSBjbGFzcyBidXQgZ3V0cyBpdC4K
KworICAgICAgICBObyBleHBsYW5hdGlvbnMgb2YgdGhlIG90aGVyIGNoYW5nZXMgYXJlIG5lZWRl
ZC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2Vz
Lm1ha2U6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUp
OgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgIChXS0NvbnRleHRH
ZXRJY29uRGF0YWJhc2UpOgorICAgICAgICAoV0tDb250ZXh0U2V0SWNvbkRhdGFiYXNlUGF0aCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAg
KFdLSWNvbkRhdGFiYXNlU2V0SWNvbkRhdGFiYXNlQ2xpZW50KToKKyAgICAgICAgKFdLSWNvbkRh
dGFiYXNlUmV0YWluSWNvbkZvclVSTCk6CisgICAgICAgIChXS0ljb25EYXRhYmFzZVJlbGVhc2VJ
Y29uRm9yVVJMKToKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNlU2V0SWNvbkRhdGFGb3JJY29uVVJM
KToKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNlU2V0SWNvblVSTEZvclBhZ2VVUkwpOgorICAgICAg
ICAoV0tJY29uRGF0YWJhc2VDb3B5SWNvblVSTEZvclBhZ2VVUkwpOgorICAgICAgICAoV0tJY29u
RGF0YWJhc2VDb3B5SWNvbkRhdGFGb3JQYWdlVVJMKToKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNl
RW5hYmxlRGF0YWJhc2VDbGVhbnVwKToKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNlUmVtb3ZlQWxs
SWNvbnMpOgorICAgICAgICAoV0tJY29uRGF0YWJhc2VDaGVja0ludGVncml0eUJlZm9yZU9wZW5p
bmcpOgorICAgICAgICAoV0tJY29uRGF0YWJhc2VDbG9zZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL2NnL1dLSWNvbkRhdGFiYXNlQ0cuY3BwOgorICAgICAgICAoV0tJY29uRGF0YWJhc2VU
cnlHZXRDR0ltYWdlRm9yVVJMKToKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNlVHJ5Q29weUNHSW1h
Z2VBcnJheUZvclVSTCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29s
Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1
bHRJY29uRGF0YWJhc2VQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSWNv
bkRhdGFiYXNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSWNvbkRhdGFi
YXNlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYkljb25EYXRhYmFzZTo6Y2xlYXJQcm9jZXNzUG9v
bCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5tZXNzYWdl
cy5pbjogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlQ2xpZW50
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlQ2xpZW50
Lmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6bV9oaWRkZW5QYWdlVGhyb3R0bGluZ1RpbWVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6On5XZWJQcm9jZXNzUG9vbCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpzZXRBbnlQYWdlR3JvdXBNaWdodEhhdmVQcml2YXRlQnJvd3NpbmdF
bmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlBy
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0SWNvbkRhdGFiYXNl
UGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjppY29uRGF0
YWJhc2VQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2lsbFNodXREb3duKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpyZXRhaW5JY29uRm9yUGFnZVVSTCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cmVsZWFzZUljb25Gb3JQYWdlVVJMKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpyZWxlYXNlUmVtYWlu
aW5nSWNvbnNGb3JQYWdlVVJMcyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1bHRJY29uRGF0YWJh
c2VQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NQb29s
V1BFLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVs
dEljb25EYXRhYmFzZVBhdGgpOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvSWNvbkRhdGFiYXNlL1dlYklj
b25EYXRhYmFzZVByb3h5LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0ljb25E
YXRhYmFzZS9XZWJJY29uRGF0YWJhc2VQcm94eS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSWNvbkRhdGFiYXNlL1dlYkljb25EYXRhYmFzZVByb3h5Lm1lc3NhZ2VzLmluOiBSZW1v
dmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OldlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OmdldFdlYkNvcmVTdGF0aXN0aWNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaDoKKwogMjAxNy0wNy0yMCAgRGF2aWQgUXVlc2FkYSAgPGRhdmlkX3F1ZXNhZGFAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBTUEkgdG8gbm90aWZ5IFdLTmF2aWdhdGlvbkRlbGVnYXRlIGFi
b3V0IGNsaWVudCByZWRpcmVjdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4IGQzMGEwYmZiYjdkNjNi
MmNhY2Q3NjNlNDNlNjE3MTgxM2M2ZTE5MjEuLjMzMDIyM2VhMGE1MmRiYjJiZDViZDExOWYxMGVl
MDRhNTdjYjQ2NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMzExLDggKzMxMSw2IEBAIHNldChX
ZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHku
Y3BwCiAgICAgVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uUHJvdmlkZXIuY3BwCiAgICAgVUlQcm9j
ZXNzL1dlYkdyYW1tYXJEZXRhaWwuY3BwCi0gICAgVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5j
cHAKLSAgICBVSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNwcAogICAgIFVJUHJvY2Vz
cy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKICAgICBVSVByb2Nlc3MvV2ViSW5zcGVjdG9yVXRpbGl0
aWVzLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuY3BwCkBAIC00NjMsOCAr
NDYxLDYgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24v
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCiAgICAgV2ViUHJvY2Vzcy9H
ZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCiAKLSAgICBXZWJQcm9jZXNzL0lj
b25EYXRhYmFzZS9XZWJJY29uRGF0YWJhc2VQcm94eS5jcHAKLQogICAgIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAKICAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKQEAgLTYx
Niw3ICs2MTIsNiBAQCBzZXQoV2ViS2l0Ml9NRVNTQUdFU19JTl9GSUxFUwogICAgIFVJUHJvY2Vz
cy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KICAgICBVSVByb2Nlc3MvV2ViRnVs
bFNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgogICAgIFVJUHJvY2Vzcy9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgotICAgIFVJUHJvY2Vzcy9XZWJJY29uRGF0YWJh
c2UubWVzc2FnZXMuaW4KICAgICBVSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMu
aW4KICAgICBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCiAgICAgVUlQcm9jZXNz
L1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgpAQCAtNjUyLDggKzY0Nyw2IEBAIHNldChX
ZWJLaXQyX01FU1NBR0VTX0lOX0ZJTEVTCiAKICAgICBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dl
Ykdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgogCi0gICAgV2ViUHJvY2Vzcy9JY29uRGF0
YWJhc2UvV2ViSWNvbkRhdGFiYXNlUHJveHkubWVzc2FnZXMuaW4KLQogICAgIFdlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvV2ViUlRDTW9uaXRvci5tZXNzYWdlcy5pbgogICAgIFdlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvV2ViUlRDUmVzb2x2ZXIubWVzc2FnZXMuaW4KICAgICBXZWJQcm9jZXNz
L05ldHdvcmsvd2VicnRjL1dlYlJUQ1NvY2tldC5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy5tYWtlCmluZGV4IDgzYWQwZThhNTc4ZTEyZDY4NzU1NjBiMDg3ODFhNzc0NzE4NDQ2MTUu
LjE5YjQyZjlkYmFiNmQ1ZjFmMzI5NjY4N2Q5MDc4ZmFiOWU2MDdmNTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLm1ha2UKQEAgLTE0Miw4ICsxNDIsNiBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwK
ICAgICBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSBcCiAgICAgV2ViSURCQ29ubmVjdGlvblRv
Q2xpZW50IFwKICAgICBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIgXAotICAgIFdlYkljb25EYXRh
YmFzZSBcCi0gICAgV2ViSWNvbkRhdGFiYXNlUHJveHkgXAogICAgIFdlYkluc3BlY3RvciBcCiAg
ICAgV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlciBcCiAgICAgV2ViSW5zcGVjdG9yUHJv
eHkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAppbmRleCA0MzU4ZTc2NTNkNmQ2OTRhOGFjYjViZDIwZDQzNTVjNWQwMWE1
OWEyLi4zMTQ3MWJiOWVmMzlmMzQ5NjUzMmZhZmRkZDMyN2ViMWQ4MWU2ZjI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cApAQCAtODksNyArODksNiBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBzaG91bGRV
c2VGb250U21vb3RoaW5nOwogICAgIGVuY29kZXIgPDwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQ7CiAgICAgZW5jb2RlciA8PCBmb250V2hpdGVsaXN0OwotICAgIGVuY29kZXIgPDwgaWNv
bkRhdGFiYXNlRW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IHRlcm1pbmF0aW9uVGltZW91dDsKICAg
ICBlbmNvZGVyIDw8IGxhbmd1YWdlczsKICAgICBlbmNvZGVyIDw8IHRleHRDaGVja2VyU3RhdGU7
CkBAIC0yMzIsOCArMjMxLDYgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJQcm9jZXNzQ3JlYXQKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5mb250V2hpdGVs
aXN0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFy
YW1ldGVycy5pY29uRGF0YWJhc2VFbmFibGVkKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy50ZXJtaW5hdGlvblRpbWVvdXQpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmxh
bmd1YWdlcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgKaW5kZXggYzVkMjkxYjNmNzIxMmI0ZDc5OTFjN2E0NWVlZTU0OTlmNGMy
M2M5My4uOWMxMThmZDNiMWU1Y2U5OTQ5NTJkYjUyYzc5NjEzNmRhODkzMjUwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApA
QCAtMTE3LDcgKzExNyw2IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsK
ICAgICBib29sIHNob3VsZFN1cHByZXNzTWVtb3J5UHJlc3N1cmVIYW5kbGVyIHsgZmFsc2UgfTsK
ICAgICBib29sIHNob3VsZFVzZUZvbnRTbW9vdGhpbmcgeyB0cnVlIH07CiAgICAgYm9vbCByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBpY29uRGF0YWJh
c2VFbmFibGVkIHsgZmFsc2UgfTsKICAgICBib29sIGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQg
eyBmYWxzZSB9OwogICAgIGJvb2wgbWVtb3J5Q2FjaGVEaXNhYmxlZCB7IGZhbHNlIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCmluZGV4IDA2NWVmODEy
Y2NhMGQ1YTE4ZGE1YjU0ZDZlNzQ2ZjhlZWY5YzczOGQuLmE1MDE5YjI1MjM2NDY0Y2Q0MTE1YmFk
MDdmNjBjYWYwODU5MWNmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tD
b250ZXh0LmNwcApAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCiAj
aW5jbHVkZSAiV2ViQ2VydGlmaWNhdGVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dEluamVj
dGVkQnVuZGxlQ2xpZW50LmgiCi0jaW5jbHVkZSAiV2ViSWNvbkRhdGFiYXNlLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00MTksOSArNDE4LDkgQEAgV0tHZW9sb2NhdGlvbk1h
bmFnZXJSZWYgV0tDb250ZXh0R2V0R2VvbG9jYXRpb25NYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250
ZXh0UmVmKQogICAgIHJldHVybiB0b0FQSSh0b0ltcGwoY29udGV4dFJlZiktPnN1cHBsZW1lbnQ8
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpOwogfQogCi1XS0ljb25EYXRhYmFzZVJlZiBX
S0NvbnRleHRHZXRJY29uRGF0YWJhc2UoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCitXS0ljb25E
YXRhYmFzZVJlZiBXS0NvbnRleHRHZXRJY29uRGF0YWJhc2UoV0tDb250ZXh0UmVmKQogewotICAg
IHJldHVybiB0b0FQSSh0b0ltcGwoY29udGV4dFJlZiktPmljb25EYXRhYmFzZSgpKTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAogV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIFdLQ29udGV4
dEdldEtleVZhbHVlU3RvcmFnZU1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHQpCkBAIC00NTks
OSArNDU4LDggQEAgdm9pZCBXS0NvbnRleHRTdG9wTWVtb3J5U2FtcGxlcihXS0NvbnRleHRSZWYg
Y29udGV4dFJlZikKICAgICB0b0ltcGwoY29udGV4dFJlZiktPnN0b3BNZW1vcnlTYW1wbGVyKCk7
CiB9CiAKLXZvaWQgV0tDb250ZXh0U2V0SWNvbkRhdGFiYXNlUGF0aChXS0NvbnRleHRSZWYgY29u
dGV4dFJlZiwgV0tTdHJpbmdSZWYgaWNvbkRhdGFiYXNlUGF0aCkKK3ZvaWQgV0tDb250ZXh0U2V0
SWNvbkRhdGFiYXNlUGF0aChXS0NvbnRleHRSZWYsIFdLU3RyaW5nUmVmKQogewotICAgIHRvSW1w
bChjb250ZXh0UmVmKS0+c2V0SWNvbkRhdGFiYXNlUGF0aCh0b0ltcGwoaWNvbkRhdGFiYXNlUGF0
aCktPnN0cmluZygpKTsKIH0KIAogdm9pZCBXS0NvbnRleHRBbGxvd1NwZWNpZmljSFRUUFNDZXJ0
aWZpY2F0ZUZvckhvc3QoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLQ2VydGlmaWNhdGVJbmZv
UmVmIGNlcnRpZmljYXRlUmVmLCBXS1N0cmluZ1JlZiBob3N0UmVmKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tJY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tJY29uRGF0YWJhc2UuY3BwCmluZGV4IDAxNmZkYzJkZDE1
OTFiNjI3YzM0Nzc1NmU0ODRlODM5OTI0MDYyMmUuLjFmMTI3NDBhZDJmYjZlN2Q3ZDZhNmE3ODk2
N2Y1MzQ0ZWQ3YWNhNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S0ljb25EYXRhYmFzZS5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJBUElEYXRhLmgi
CiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViSWNvbkRhdGFiYXNlLmgiCi0j
aW5jbHVkZSAiV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CiAKQEAgLTM4LDU5ICszNyw0OCBAQCBXS1R5cGVJRCBXS0ljb25EYXRhYmFzZUdldFR5cGVJ
RCgpCiAgICAgcmV0dXJuIHRvQVBJKFdlYkljb25EYXRhYmFzZTo6QVBJVHlwZSk7CiB9CiAKLXZv
aWQgV0tJY29uRGF0YWJhc2VTZXRJY29uRGF0YWJhc2VDbGllbnQoV0tJY29uRGF0YWJhc2VSZWYg
aWNvbkRhdGFiYXNlUmVmLCBjb25zdCBXS0ljb25EYXRhYmFzZUNsaWVudEJhc2UqIHdrQ2xpZW50
KQordm9pZCBXS0ljb25EYXRhYmFzZVNldEljb25EYXRhYmFzZUNsaWVudChXS0ljb25EYXRhYmFz
ZVJlZiwgY29uc3QgV0tJY29uRGF0YWJhc2VDbGllbnRCYXNlKikKIHsKLSAgICB0b0ltcGwoaWNv
bkRhdGFiYXNlUmVmKS0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViSWNvbkRhdGFiYXNl
Q2xpZW50Pih3a0NsaWVudCkpOwogfQogCi12b2lkIFdLSWNvbkRhdGFiYXNlUmV0YWluSWNvbkZv
clVSTChXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2VSZWYsIFdLVVJMUmVmIHBhZ2VVUkxS
ZWYpCit2b2lkIFdLSWNvbkRhdGFiYXNlUmV0YWluSWNvbkZvclVSTChXS0ljb25EYXRhYmFzZVJl
ZiwgV0tVUkxSZWYpCiB7Ci0gICAgdG9JbXBsKGljb25EYXRhYmFzZVJlZiktPnJldGFpbkljb25G
b3JQYWdlVVJMKHRvV1RGU3RyaW5nKHBhZ2VVUkxSZWYpKTsKIH0KIAotdm9pZCBXS0ljb25EYXRh
YmFzZVJlbGVhc2VJY29uRm9yVVJMKFdLSWNvbkRhdGFiYXNlUmVmIGljb25EYXRhYmFzZVJlZiwg
V0tVUkxSZWYgcGFnZVVSTFJlZikKK3ZvaWQgV0tJY29uRGF0YWJhc2VSZWxlYXNlSWNvbkZvclVS
TChXS0ljb25EYXRhYmFzZVJlZiwgV0tVUkxSZWYpCiB7Ci0gICAgdG9JbXBsKGljb25EYXRhYmFz
ZVJlZiktPnJlbGVhc2VJY29uRm9yUGFnZVVSTCh0b1dURlN0cmluZyhwYWdlVVJMUmVmKSk7CiB9
CiAKLXZvaWQgV0tJY29uRGF0YWJhc2VTZXRJY29uRGF0YUZvckljb25VUkwoV0tJY29uRGF0YWJh
c2VSZWYgaWNvbkRhdGFiYXNlUmVmLCBXS0RhdGFSZWYgaWNvbkRhdGFSZWYsIFdLVVJMUmVmIGlj
b25VUkxSZWYpCit2b2lkIFdLSWNvbkRhdGFiYXNlU2V0SWNvbkRhdGFGb3JJY29uVVJMKFdLSWNv
bkRhdGFiYXNlUmVmLCBXS0RhdGFSZWYsIFdLVVJMUmVmKQogewotICAgIHRvSW1wbChpY29uRGF0
YWJhc2VSZWYpLT5zZXRJY29uRGF0YUZvckljb25VUkwodG9JbXBsKGljb25EYXRhUmVmKS0+ZGF0
YVJlZmVyZW5jZSgpLCB0b1dURlN0cmluZyhpY29uVVJMUmVmKSk7CiB9CiAKLXZvaWQgV0tJY29u
RGF0YWJhc2VTZXRJY29uVVJMRm9yUGFnZVVSTChXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJh
c2VSZWYsIFdLVVJMUmVmIGljb25VUkxSZWYsIFdLVVJMUmVmIHBhZ2VVUkxSZWYpCit2b2lkIFdL
SWNvbkRhdGFiYXNlU2V0SWNvblVSTEZvclBhZ2VVUkwoV0tJY29uRGF0YWJhc2VSZWYsIFdLVVJM
UmVmLCBXS1VSTFJlZikKIHsKLSAgICB0b0ltcGwoaWNvbkRhdGFiYXNlUmVmKS0+c2V0SWNvblVS
TEZvclBhZ2VVUkwodG9XVEZTdHJpbmcoaWNvblVSTFJlZiksIHRvV1RGU3RyaW5nKHBhZ2VVUkxS
ZWYpKTsKIH0KIAotV0tVUkxSZWYgV0tJY29uRGF0YWJhc2VDb3B5SWNvblVSTEZvclBhZ2VVUkwo
V0tJY29uRGF0YWJhc2VSZWYgaWNvbkRhdGFiYXNlUmVmLCBXS1VSTFJlZiBwYWdlVVJMUmVmKQor
V0tVUkxSZWYgV0tJY29uRGF0YWJhc2VDb3B5SWNvblVSTEZvclBhZ2VVUkwoV0tJY29uRGF0YWJh
c2VSZWYsIFdLVVJMUmVmKQogewotICAgIFN0cmluZyBpY29uVVJMU3RyaW5nOwotICAgIHRvSW1w
bChpY29uRGF0YWJhc2VSZWYpLT5zeW5jaHJvbm91c0ljb25VUkxGb3JQYWdlVVJMKHRvV1RGU3Ry
aW5nKHBhZ2VVUkxSZWYpLCBpY29uVVJMU3RyaW5nKTsKLSAgICByZXR1cm4gdG9Db3BpZWRVUkxB
UEkoaWNvblVSTFN0cmluZyk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVdLRGF0YVJlZiBX
S0ljb25EYXRhYmFzZUNvcHlJY29uRGF0YUZvclBhZ2VVUkwoV0tJY29uRGF0YWJhc2VSZWYgaWNv
bkRhdGFiYXNlUmVmLCBXS1VSTFJlZiBwYWdlVVJMKQorV0tEYXRhUmVmIFdLSWNvbkRhdGFiYXNl
Q29weUljb25EYXRhRm9yUGFnZVVSTChXS0ljb25EYXRhYmFzZVJlZiwgV0tVUkxSZWYpCiB7Ci0g
ICAgcmV0dXJuIHRvQVBJKHRvSW1wbChpY29uRGF0YWJhc2VSZWYpLT5pY29uRGF0YUZvclBhZ2VV
UkwodG9XVEZTdHJpbmcocGFnZVVSTCkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLXZvaWQgV0tJY29uRGF0YWJhc2VFbmFibGVEYXRhYmFzZUNsZWFudXAoV0tJY29uRGF0
YWJhc2VSZWYgaWNvbkRhdGFiYXNlUmVmKQordm9pZCBXS0ljb25EYXRhYmFzZUVuYWJsZURhdGFi
YXNlQ2xlYW51cChXS0ljb25EYXRhYmFzZVJlZikKIHsKLSAgICB0b0ltcGwoaWNvbkRhdGFiYXNl
UmVmKS0+ZW5hYmxlRGF0YWJhc2VDbGVhbnVwKCk7CiB9CiAKLXZvaWQgV0tJY29uRGF0YWJhc2VS
ZW1vdmVBbGxJY29ucyhXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2VSZWYpCit2b2lkIFdL
SWNvbkRhdGFiYXNlUmVtb3ZlQWxsSWNvbnMoV0tJY29uRGF0YWJhc2VSZWYpCiB7Ci0gICAgdG9J
bXBsKGljb25EYXRhYmFzZVJlZiktPnJlbW92ZUFsbEljb25zKCk7CiB9CiAKLXZvaWQgV0tJY29u
RGF0YWJhc2VDaGVja0ludGVncml0eUJlZm9yZU9wZW5pbmcoV0tJY29uRGF0YWJhc2VSZWYgaWNv
bkRhdGFiYXNlUmVmKQordm9pZCBXS0ljb25EYXRhYmFzZUNoZWNrSW50ZWdyaXR5QmVmb3JlT3Bl
bmluZyhXS0ljb25EYXRhYmFzZVJlZikKIHsKLSAgICB0b0ltcGwoaWNvbkRhdGFiYXNlUmVmKS0+
Y2hlY2tJbnRlZ3JpdHlCZWZvcmVPcGVuaW5nKCk7CiB9CiAKLXZvaWQgV0tJY29uRGF0YWJhc2VD
bG9zZShXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2VSZWYpCit2b2lkIFdLSWNvbkRhdGFi
YXNlQ2xvc2UoV0tJY29uRGF0YWJhc2VSZWYpCiB7Ci0gICAgdG9JbXBsKGljb25EYXRhYmFzZVJl
ZiktPmNsb3NlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9jYWlyby9XS0ljb25EYXRhYmFzZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL2NhaXJvL1dLSWNvbkRhdGFiYXNlQ2Fpcm8uY3BwCmluZGV4IDExOGM0ZDhjYjc1MGIy
NDQ5ZTY2ZGRlYzliY2M0MjgyOTc5YmY2OGUuLmZjNWI2MDNlNmU2OWYzODFiNzNhZGI5YjljYTM2
MzJhODJkODU1ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL2Nh
aXJvL1dLSWNvbkRhdGFiYXNlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL2NhaXJvL1dLSWNvbkRhdGFiYXNlQ2Fpcm8uY3BwCkBAIC0zNCw1ICszNCw1IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIGNhaXJvX3N1cmZhY2VfdCogV0tJY29uRGF0YWJhc2VU
cnlHZXRDYWlyb1N1cmZhY2VGb3JVUkwoV0tJY29uRGF0YWJhc2VSZWYgaWNvbkRhdGFiYXNlLCBX
S1VSTFJlZiB1cmwpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChpY29uRGF0YWJhc2UpLT5uYXRpdmVJ
bWFnZUZvclBhZ2VVUkwodG9XVEZTdHJpbmcodXJsKSkuZ2V0KCk7CisgICAgcmV0dXJuIG51bGxw
dHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9jZy9XS0lj
b25EYXRhYmFzZUNHLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL2NnL1dLSWNv
bkRhdGFiYXNlQ0cuY3BwCmluZGV4IGEyNzlhZjYyNTViMmFmZWQwNzg3YWI0YTUwOTQ1YjUzODk3
MTc0ZTIuLjRiMDQwZGJjMmI4ODZjY2EzMmI3ZWUwMzcyNjQ3NzYwZDFmMWRmNWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL2NnL1dLSWNvbkRhdGFiYXNlQ0cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL2NnL1dLSWNvbkRhdGFiYXNlQ0cu
Y3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV0tJ
Y29uRGF0YWJhc2VDRy5oIgogCi0jaW5jbHVkZSAiV2ViSWNvbkRhdGFiYXNlLmgiCiAjaW5jbHVk
ZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tTaGFyZWRBUElDYXN0LmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9JbWFnZS5oPgpAQCAtMzQsMjUgKzMzLDEyIEBACiB1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLUNHSW1hZ2VSZWYgV0tJY29uRGF0YWJh
c2VUcnlHZXRDR0ltYWdlRm9yVVJMKFdLSWNvbkRhdGFiYXNlUmVmIGljb25EYXRhYmFzZVJlZiwg
V0tVUkxSZWYgdXJsUmVmLCBXS1NpemUgc2l6ZSkKK0NHSW1hZ2VSZWYgV0tJY29uRGF0YWJhc2VU
cnlHZXRDR0ltYWdlRm9yVVJMKFdLSWNvbkRhdGFiYXNlUmVmLCBXS1VSTFJlZiwgV0tTaXplKQog
ewotICAgIEltYWdlKiBpbWFnZSA9IHRvSW1wbChpY29uRGF0YWJhc2VSZWYpLT5pbWFnZUZvclBh
Z2VVUkwodG9XVEZTdHJpbmcodXJsUmVmKSk7Ci0gICAgcmV0dXJuIGltYWdlID8gaW1hZ2UtPm5h
dGl2ZUltYWdlT2ZTaXplKEludFNpemUoc3RhdGljX2Nhc3Q8aW50PihzaXplLndpZHRoKSwgc3Rh
dGljX2Nhc3Q8aW50PihzaXplLmhlaWdodCkpKS5nZXQoKSA6IG51bGxwdHI7CisgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLUNGQXJyYXlSZWYgV0tJY29uRGF0YWJhc2VUcnlDb3B5Q0dJbWFnZUFy
cmF5Rm9yVVJMKFdLSWNvbkRhdGFiYXNlUmVmIGljb25EYXRhYmFzZVJlZiwgV0tVUkxSZWYgdXJs
UmVmKQorQ0ZBcnJheVJlZiBXS0ljb25EYXRhYmFzZVRyeUNvcHlDR0ltYWdlQXJyYXlGb3JVUkwo
V0tJY29uRGF0YWJhc2VSZWYsIFdLVVJMUmVmKQogewotICAgIEltYWdlKiBpbWFnZSA9IHRvSW1w
bChpY29uRGF0YWJhc2VSZWYpLT5pbWFnZUZvclBhZ2VVUkwodG9XVEZTdHJpbmcodXJsUmVmKSk7
Ci0gICAgaWYgKCFpbWFnZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIG5h
dGl2ZUltYWdlcyA9IGltYWdlLT5mcmFtZXNOYXRpdmVJbWFnZXMoKTsKLSAgICBpZiAoIW5hdGl2
ZUltYWdlcy5zaXplKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAotICAgIENGTXV0
YWJsZUFycmF5UmVmIGFycmF5ID0gQ0ZBcnJheUNyZWF0ZU11dGFibGUobnVsbHB0ciwgbmF0aXZl
SW1hZ2VzLnNpemUoKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7Ci0gICAgZm9yIChhdXRvIG5h
dGl2ZUltYWdlIDogbmF0aXZlSW1hZ2VzKQotICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoYXJy
YXksIG5hdGl2ZUltYWdlLmdldCgpKTsKLSAgICAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZB
cnJheVJlZj4oYXJyYXkpOworICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCAz
OGI3NWFhYmVkNzdlODRkOTU1MTRmNmY4NmM1NzM4YmQxYmZiYmFkLi4yNTg3ZjhlOTFlZGFjMmNi
YjlmMmE5MDdjMWE4OTgzMGViNjgxMmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtODk2LDEyICs4OTYsMTIg
QEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Zhdmljb25fZGF0YWJhc2VfZGlyZWN0b3J5
KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQKICAgICAvLyBVc2UgZGVmYXVsdCBpZiAwIGlzIHBh
c3NlZCBhcyBwYXJhbWV0ZXIuCiAgICAgU3RyaW5nIGRpcmVjdG9yeVBhdGggPSBXZWJDb3JlOjpz
dHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogICAgIHByaXYtPmZhdmlj
b25EYXRhYmFzZURpcmVjdG9yeSA9IGRpcmVjdG9yeVBhdGguaXNFbXB0eSgpCi0gICAgICAgID8g
cHJpdi0+cHJvY2Vzc1Bvb2wtPmljb25EYXRhYmFzZVBhdGgoKS51dGY4KCkKKyAgICAgICAgPyAi
IgogICAgICAgICA6IGRpcmVjdG9yeVBhdGgudXRmOCgpOwogCiAgICAgLy8gQnVpbGQgdGhlIGZ1
bGwgcGF0aCB0byB0aGUgaWNvbiBkYXRhYmFzZSBmaWxlIG9uIGRpc2suCiAgICAgR1VuaXF1ZVB0
cjxnY2hhcj4gZmF2aWNvbkRhdGFiYXNlUGF0aChnX2J1aWxkX2ZpbGVuYW1lKHByaXYtPmZhdmlj
b25EYXRhYmFzZURpcmVjdG9yeS5kYXRhKCksCi0gICAgICAgIFdlYkNvcmU6Okljb25EYXRhYmFz
ZTo6ZGVmYXVsdERhdGFiYXNlRmlsZW5hbWUoKS51dGY4KCkuZGF0YSgpLCBudWxscHRyKSk7Cisg
ICAgICAgICJXZWJwYWdlSWNvbnMuZGIiLCBudWxscHRyKSk7CiAKICAgICAvLyBTZXR0aW5nIHRo
ZSBwYXRoIHdpbGwgY2F1c2UgdGhlIGljb24gZGF0YWJhc2UgdG8gYmUgb3BlbmVkLgogICAgIHdl
YmtpdEZhdmljb25EYXRhYmFzZU9wZW4ocHJpdi0+ZmF2aWNvbkRhdGFiYXNlLmdldCgpLCBXZWJD
b3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZhdmljb25EYXRhYmFzZVBh
dGguZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
cm9jZXNzUG9vbENvY29hLm1tCmluZGV4IGQ1ZDYwYmRhNWFkNzRkMmJlZjhhOTI1N2QxYTk3YWU5
ZTFlNzExMzIuLmU1NGUwMmE0NmIwZTg1YTJhYzIyNjM0MDQzNDZmNWY5ZDNiODI4MGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2Nv
YS5tbQpAQCAtNTA1LDExICs1MDUsNiBAQCBib29sIFdlYlByb2Nlc3NQb29sOjppc05ldHdvcmtD
YWNoZUVuYWJsZWQoKQogI2VuZGlmCiB9CiAKLVN0cmluZyBXZWJQcm9jZXNzUG9vbDo6cGxhdGZv
cm1EZWZhdWx0SWNvbkRhdGFiYXNlUGF0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICIiOwotfQot
CiBib29sIFdlYlByb2Nlc3NQb29sOjpvbWl0UERGU3VwcG9ydCgpCiB7CiAgICAgLy8gU2luY2Ug
dGhpcyBpcyBhICJzZWNyZXQgZGVmYXVsdCIgd2UgZG9uJ3QgYm90aGVyIHJlZ2lzdGVyaW5nIGl0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1ZmQyZTM3NjdlZmYzZmYxNmIxMDk0YzFlOTE3M2U3ZjYw
OWE0ZjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDM0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIldlYkljb25EYXRhYmFzZS5oIgotCi0jaW5jbHVkZSAiQVBJSWNvbkRhdGFiYXNlQ2xpZW50
LmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIldlYkljb25EYXRhYmFzZU1lc3Nh
Z2VzLmgiCi0jaW5jbHVkZSAiV2ViSWNvbkRhdGFiYXNlUHJveHlNZXNzYWdlcy5oIgotI2luY2x1
ZGUgIldlYlByb2Nlc3NQb29sLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9JY29uRGF0YWJhc2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ltYWdl
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLQotdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1SZWY8V2ViSWNvbkRhdGFiYXNlPiBX
ZWJJY29uRGF0YWJhc2U6OmNyZWF0ZShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCi17Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViSWNvbkRhdGFiYXNlKCpwcm9jZXNzUG9vbCkpOwot
fQotCi1XZWJJY29uRGF0YWJhc2U6On5XZWJJY29uRGF0YWJhc2UoKQotewotfQotCi1XZWJJY29u
RGF0YWJhc2U6OldlYkljb25EYXRhYmFzZShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wpCi0g
ICAgOiBtX3Byb2Nlc3NQb29sKCZwcm9jZXNzUG9vbCkKLSAgICAsIG1fdXJsSW1wb3J0Q29tcGxl
dGVkKGZhbHNlKQotICAgICwgbV9kYXRhYmFzZUNsZWFudXBEaXNhYmxlZChmYWxzZSkKLSAgICAs
IG1fc2hvdWxkRGVyZWZXaGVuQXBwcm9wcmlhdGUoZmFsc2UpCi0gICAgLCBtX2NsaWVudChzdGQ6
Om1ha2VfdW5pcXVlPEFQSTo6SWNvbkRhdGFiYXNlQ2xpZW50PigpKQotewotICAgIG1fcHJvY2Vz
c1Bvb2wtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSWNvbkRhdGFiYXNlOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2U6Omlu
dmFsaWRhdGUoKQotewotICAgIHNldEdsb2JhbEljb25EYXRhYmFzZShudWxscHRyKTsKLX0KLQot
dm9pZCBXZWJJY29uRGF0YWJhc2U6OnNldERhdGFiYXNlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgp
Ci17Ci0gICAgaWYgKGlzT3BlbigpKSB7Ci0gICAgICAgIExPR19FUlJPUigiSWNvbiBkYXRhYmFz
ZSBhbHJlYWR5IGhhcyBhIHBhdGggYW5kIGlzIGFscmVhZHkgb3Blbi4gV2UgZG9uJ3QgY3VycmVu
dGx5IHN1cHBvcnQgY2hhbmdpbmcgaXRzIHBhdGggYW5kIHJlb3BlbmluZy4iKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIG1faWNvbkRhdGFiYXNlSW1wbCA9IHN0ZDo6bWFrZV91bmlx
dWU8SWNvbkRhdGFiYXNlPigpOwotICAgIG1faWNvbkRhdGFiYXNlSW1wbC0+c2V0Q2xpZW50KHRo
aXMpOwotICAgIEljb25EYXRhYmFzZTo6ZGVsYXlEYXRhYmFzZUNsZWFudXAoKTsKLSAgICBtX2Rh
dGFiYXNlQ2xlYW51cERpc2FibGVkID0gdHJ1ZTsKLSAgICBtX2ljb25EYXRhYmFzZUltcGwtPnNl
dEVuYWJsZWQodHJ1ZSk7Ci0KLSAgICAvLyBGSVhNRTogV2ViSWNvbkRhdGFiYXNlcyBhcmUgcGVy
LVByb2Nlc3NQb29sIGJ1dCBQcm9jZXNzUG9vbHMncyBkb24ndCBoYXZlIHRoZWlyIG93biBub3Rp
b24gb2YgdGhlIGN1cnJlbnQgcHJpdmF0ZSBicm93c2luZyBzZXR0aW5nLgotICAgIC8vIEFzIHdl
IGNsZWFuIHVwIHByaXZhdGUgYnJvd3NpbmcgdGhyb3VnaG91dCB0aGUgc3RhY2sgd2UgbmVlZCB0
byBjbGVhbiBpdCB1cCBoZXJlLgotICAgIG1faWNvbkRhdGFiYXNlSW1wbC0+c2V0UHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZChXZWJQcmVmZXJlbmNlczo6YW55UGFnZXNBcmVVc2luZ1ByaXZhdGVCcm93
c2luZygpKTsKLQotICAgIGlmICghbV9pY29uRGF0YWJhc2VJbXBsLT5vcGVuKGRpcmVjdG9yeU5h
bWUocGF0aCksIHBhdGhHZXRGaWxlTmFtZShwYXRoKSkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJV
bmFibGUgdG8gb3BlbiBXZWJLaXQyIGljb24gZGF0YWJhc2Ugb24gZGlzayIpOwotICAgICAgICBt
X2ljb25EYXRhYmFzZUltcGwgPSBudWxscHRyOwotICAgICAgICBzZXRHbG9iYWxJY29uRGF0YWJh
c2UobnVsbHB0cik7Ci0gICAgICAgIEljb25EYXRhYmFzZTo6YWxsb3dEYXRhYmFzZUNsZWFudXAo
KTsKLSAgICAgICAgbV9kYXRhYmFzZUNsZWFudXBEaXNhYmxlZCA9IGZhbHNlOwotICAgIH0KLSAg
ICBzZXRHbG9iYWxJY29uRGF0YWJhc2UobV9pY29uRGF0YWJhc2VJbXBsLmdldCgpKTsKLX0KLQot
dm9pZCBXZWJJY29uRGF0YWJhc2U6OmVuYWJsZURhdGFiYXNlQ2xlYW51cCgpCi17Ci0gICAgaWYg
KCFtX2ljb25EYXRhYmFzZUltcGwpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJDYW5ub3QgZW5hYmxl
ZCBJY29uIERhdGFiYXNlIGNsZWFudXAgLSBpdCBoYXNuJ3QgYmVlbiBvcGVuZWQgeWV0LiIpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFtX2RhdGFiYXNlQ2xlYW51cERpc2Fi
bGVkKSB7Ci0gICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBlbmFibGUgZGF0YWJhc2UgY2xl
YW51cCwgYnV0IGl0J3MgYWxyZWFkeSBlbmFibGVkLiIpOwotICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEljb25EYXRhYmFzZTo6YWxs
b3dEYXRhYmFzZUNsZWFudXAoKTsKLSAgICBtX2RhdGFiYXNlQ2xlYW51cERpc2FibGVkID0gZmFs
c2U7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpyZXRhaW5JY29uRm9yUGFnZVVSTChjb25z
dCBTdHJpbmcmIHBhZ2VVUkwpCi17Ci0gICAgaWYgKG1faWNvbkRhdGFiYXNlSW1wbCkKLSAgICAg
ICAgbV9pY29uRGF0YWJhc2VJbXBsLT5yZXRhaW5JY29uRm9yUGFnZVVSTChwYWdlVVJMKTsKLX0K
LQotdm9pZCBXZWJJY29uRGF0YWJhc2U6OnJlbGVhc2VJY29uRm9yUGFnZVVSTChjb25zdCBTdHJp
bmcmIHBhZ2VVUkwpCi17Ci0gICAgaWYgKG1faWNvbkRhdGFiYXNlSW1wbCkKLSAgICAgICAgbV9p
Y29uRGF0YWJhc2VJbXBsLT5yZWxlYXNlSWNvbkZvclBhZ2VVUkwocGFnZVVSTCk7Ci19Ci0KLXZv
aWQgV2ViSWNvbkRhdGFiYXNlOjpzZXRJY29uVVJMRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIGlj
b25VUkwsIGNvbnN0IFN0cmluZyYgcGFnZVVSTCkKLXsKLSAgICBMT0coSWNvbkRhdGFiYXNlLCAi
V0syIFVJUHJvY2VzcyBzZXR0aW5nIGljb24gVVJMICVzIGZvciBwYWdlIFVSTCAlcyIsIGljb25V
UkwuYXNjaWkoKS5kYXRhKCksIHBhZ2VVUkwuYXNjaWkoKS5kYXRhKCkpOwotICAgIGlmIChtX2lj
b25EYXRhYmFzZUltcGwpCi0gICAgICAgIG1faWNvbkRhdGFiYXNlSW1wbC0+c2V0SWNvblVSTEZv
clBhZ2VVUkwoaWNvblVSTCwgcGFnZVVSTCk7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpz
ZXRJY29uRGF0YUZvckljb25VUkwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBpY29uRGF0YSwg
Y29uc3QgU3RyaW5nJiBpY29uVVJMKQotewotICAgIExPRyhJY29uRGF0YWJhc2UsICJXSzIgVUlQ
cm9jZXNzIHNldHRpbmcgaWNvbiBkYXRhICglaSBieXRlcykgZm9yIHBhZ2UgVVJMICVzIiwgKGlu
dClpY29uRGF0YS5zaXplKCksIGljb25VUkwuYXNjaWkoKS5kYXRhKCkpOwotICAgIGlmICghbV9p
Y29uRGF0YWJhc2VJbXBsKQotICAgICAgICByZXR1cm47Ci0gICAgbV9pY29uRGF0YWJhc2VJbXBs
LT5zZXRJY29uRGF0YUZvckljb25VUkwoU2hhcmVkQnVmZmVyOjpjcmVhdGUoaWNvbkRhdGEuZGF0
YSgpLCBpY29uRGF0YS5zaXplKCkpLnB0cigpLCBpY29uVVJMKTsKLX0KLQotdm9pZCBXZWJJY29u
RGF0YWJhc2U6OnN5bmNocm9ub3VzSWNvbkRhdGFGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIElQ
Qzo6RGF0YVJlZmVyZW5jZSYgaWNvbkRhdGEpCi17Ci0gICAgaWNvbkRhdGEgPSBJUEM6OkRhdGFS
ZWZlcmVuY2UoKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2U6OnN5bmNocm9ub3VzSWNvblVS
TEZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBTdHJpbmcmIGljb25VUkwpCi17Ci0g
ICAgaWYgKCFtX2ljb25EYXRhYmFzZUltcGwpIHsKLSAgICAgICAgaWNvblVSTCA9IFN0cmluZygp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGljb25VUkwgPSBtX2ljb25EYXRhYmFzZUlt
cGwtPnN5bmNocm9ub3VzSWNvblVSTEZvclBhZ2VVUkwocGFnZVVSTCk7Ci19Ci0KLXZvaWQgV2Vi
SWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c0ljb25EYXRhS25vd25Gb3JJY29uVVJMKGNvbnN0IFN0
cmluZyYsIGJvb2wmIGljb25EYXRhS25vd24pIGNvbnN0Ci17Ci0gICAgaWNvbkRhdGFLbm93biA9
IGZhbHNlOwotfQotCi12b2lkIFdlYkljb25EYXRhYmFzZTo6c3luY2hyb25vdXNMb2FkRGVjaXNp
b25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYsIGludCYgbG9hZERlY2lzaW9uKSBjb25zdAotewot
ICAgIGxvYWREZWNpc2lvbiA9IHN0YXRpY19jYXN0PGludD4oSWNvbkxvYWRObyk7Ci19Ci0KLXZv
aWQgV2ViSWNvbkRhdGFiYXNlOjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uVVJMKGNvbnN0IFN0cmlu
ZyYgaWNvblVSTCwgdWludDY0X3QgY2FsbGJhY2tJRCkKLXsKLSAgICBMT0coSWNvbkRhdGFiYXNl
LCAiV0syIFVJUHJvY2VzcyBnZXR0aW5nIGxvYWQgZGVjaXNpb24gZm9yIGljb24gVVJMICVzIHdp
dGggY2FsbGJhY2sgSUQgJWxsaSIsIGljb25VUkwuYXNjaWkoKS5kYXRhKCksIHN0YXRpY19jYXN0
PGxvbmcgbG9uZz4oY2FsbGJhY2tJRCkpOwotCi0gICAgaWYgKCFtX3Byb2Nlc3NQb29sKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1faWNvbkRhdGFiYXNlSW1wbCB8fCAhbV9pY29uRGF0
YWJhc2VJbXBsLT5pc09wZW4oKSB8fCBpY29uVVJMLmlzRW1wdHkoKSkgewotICAgICAgICAvLyBG
SVhNRSAoTXVsdGktV2ViUHJvY2Vzcyk6IDxyZGFyOi8vcHJvYmxlbS8xMjI0MDIyMz4gV2UgbmVl
ZCB0byBrbm93IHdoaWNoIGNvbm5lY3Rpb24gdG8gc2VuZCB0aGlzIG1lc3NhZ2UgdG8uCi0gICAg
ICAgIG1fcHJvY2Vzc1Bvb2wtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViSWNvbkRh
dGFiYXNlUHJveHk6OlJlY2VpdmVkSWNvbkxvYWREZWNpc2lvbihzdGF0aWNfY2FzdDxpbnQ+KElj
b25Mb2FkTm8pLCBjYWxsYmFja0lEKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0g
ICAgLy8gSWYgdGhlIGRlY2lzaW9uIGhhc24ndCBiZWVuIHJlYWQgZnJvbSBkaXNrIHlldCwgc2V0
IHRoaXMgdXJsIGFuZCBjYWxsYmFjayBJRCBhc2lkZSB0byBiZSBub3RpZmVkIGxhdGVyCi0gICAg
SWNvbkxvYWREZWNpc2lvbiBkZWNpc2lvbiA9IG1faWNvbkRhdGFiYXNlSW1wbC0+c3luY2hyb25v
dXNMb2FkRGVjaXNpb25Gb3JJY29uVVJMKGljb25VUkwsIDApOwotICAgIGlmIChkZWNpc2lvbiA9
PSBJY29uTG9hZFVua25vd24pIHsKLSAgICAgICAgLy8gV2Ugc2hvdWxkIG5ldmVyIGdldCBhbiB1
bmtub3duIGxvYWQgZGVjaXNpb24gYWZ0ZXIgdGhlIFVSTCBpbXBvcnQgaGFzIGNvbXBsZXRlZC4K
LSAgICAgICAgQVNTRVJUKCFtX3VybEltcG9ydENvbXBsZXRlZCk7Ci0gICAgICAgIAotICAgICAg
ICBtX3BlbmRpbmdMb2FkRGVjaXNpb25VUkxNYXAuc2V0KGNhbGxiYWNrSUQsIGljb25VUkwpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3Mp
OiA8cmRhcjovL3Byb2JsZW0vMTIyNDAyMjM+IFdlIG5lZWQgdG8ga25vdyB3aGljaCBjb25uZWN0
aW9uIHRvIHNlbmQgdGhpcyBtZXNzYWdlIHRvLgotICAgIG1fcHJvY2Vzc1Bvb2wtPnNlbmRUb0Fs
bFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViSWNvbkRhdGFiYXNlUHJveHk6OlJlY2VpdmVkSWNvbkxv
YWREZWNpc2lvbigoaW50KWRlY2lzaW9uLCBjYWxsYmFja0lEKSk7Ci19Ci0KLXZvaWQgV2ViSWNv
bkRhdGFiYXNlOjpkaWRSZWNlaXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJM
KQotewotICAgIG5vdGlmeUljb25EYXRhUmVhZHlGb3JQYWdlVVJMKHBhZ2VVUkwpOwotfQotCi1J
bWFnZSogV2ViSWNvbkRhdGFiYXNlOjppbWFnZUZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdl
VVJMLCBjb25zdCBJbnRTaXplJiBpY29uU2l6ZSkKLXsKLSAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wg
fHwgIW1faWNvbkRhdGFiYXNlSW1wbCB8fCAhbV9pY29uRGF0YWJhc2VJbXBsLT5pc09wZW4oKSB8
fCBwYWdlVVJMLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAvLyBU
aGUgV2ViQ29yZSBJY29uRGF0YWJhc2UgaWdub3JlcyB0aGUgcGFzc2VkIGluIHNpemUgcGFyYW1l
dGVyLgotICAgIC8vIElmIHRoYXQgY2hhbmdlcyB3ZSdsbCBuZWVkIHRvIHJldGhpbmsgaG93IHRo
aXMgQVBJIGlzIGV4cG9zZWQuCi0gICAgcmV0dXJuIG1faWNvbkRhdGFiYXNlSW1wbC0+c3luY2hy
b25vdXNJY29uRm9yUGFnZVVSTChwYWdlVVJMLCBpY29uU2l6ZSk7Ci19Ci0KLU5hdGl2ZUltYWdl
UHRyIFdlYkljb25EYXRhYmFzZTo6bmF0aXZlSW1hZ2VGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYg
cGFnZVVSTCwgY29uc3QgSW50U2l6ZSYgaWNvblNpemUpCi17Ci0gICAgaWYgKCFtX3Byb2Nlc3NQ
b29sIHx8ICFtX2ljb25EYXRhYmFzZUltcGwgfHwgIW1faWNvbkRhdGFiYXNlSW1wbC0+aXNPcGVu
KCkgfHwgcGFnZVVSTC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
cmV0dXJuIG1faWNvbkRhdGFiYXNlSW1wbC0+c3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVS
TChwYWdlVVJMLCBpY29uU2l6ZSk7Ci19Ci0KLWJvb2wgV2ViSWNvbkRhdGFiYXNlOjppc09wZW4o
KQotewotICAgIHJldHVybiBtX2ljb25EYXRhYmFzZUltcGwgJiYgbV9pY29uRGF0YWJhc2VJbXBs
LT5pc09wZW4oKTsKLX0KLQotYm9vbCBXZWJJY29uRGF0YWJhc2U6OmlzVXJsSW1wb3J0Q29tcGxl
dGVkKCkKLXsKLSAgICByZXR1cm4gbV91cmxJbXBvcnRDb21wbGV0ZWQ7Ci19Ci0KLXZvaWQgV2Vi
SWNvbkRhdGFiYXNlOjpyZW1vdmVBbGxJY29ucygpCi17Ci0gICAgbV9pY29uRGF0YWJhc2VJbXBs
LT5yZW1vdmVBbGxJY29ucygpOwotfQotCi12b2lkIFdlYkljb25EYXRhYmFzZTo6Y2hlY2tJbnRl
Z3JpdHlCZWZvcmVPcGVuaW5nKCkKLXsKLSAgICBJY29uRGF0YWJhc2U6OmNoZWNrSW50ZWdyaXR5
QmVmb3JlT3BlbmluZygpOwotfQotCi12b2lkIFdlYkljb25EYXRhYmFzZTo6Y2xvc2UoKQotewot
ICAgIGlmIChtX2ljb25EYXRhYmFzZUltcGwpCi0gICAgICAgIG1faWNvbkRhdGFiYXNlSW1wbC0+
Y2xvc2UoKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2U6OnNldENsaWVudChzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpJY29uRGF0YWJhc2VDbGllbnQ+JiYgY2xpZW50KQotewotICAgIGlmICghY2xp
ZW50KQotICAgICAgICBtX2NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJY29uRGF0YWJh
c2VDbGllbnQ+KCk7Ci0gICAgZWxzZQotICAgICAgICBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50
KTsKLX0KLQotLy8gV2ViQ29yZTo6SWNvbkRhdGFiYXNlQ2xpZW50Ci0KLXZvaWQgV2ViSWNvbkRh
dGFiYXNlOjpkaWRJbXBvcnRJY29uVVJMRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwp
Ci17Ci0gICAgZGlkQ2hhbmdlSWNvbkZvclBhZ2VVUkwocGFnZVVSTCk7Ci19Ci0KLXZvaWQgV2Vi
SWNvbkRhdGFiYXNlOjpkaWRJbXBvcnRJY29uRGF0YUZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBw
YWdlVVJMKQotewotICAgIG5vdGlmeUljb25EYXRhUmVhZHlGb3JQYWdlVVJMKHBhZ2VVUkwpOwot
fQotCi12b2lkIFdlYkljb25EYXRhYmFzZTo6ZGlkQ2hhbmdlSWNvbkZvclBhZ2VVUkwoY29uc3Qg
U3RyaW5nJiBwYWdlVVJMKQotewotICAgIG1fY2xpZW50LT5kaWRDaGFuZ2VJY29uRm9yUGFnZVVS
TCgqdGhpcywgcGFnZVVSTCk7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlOjpkaWRSZW1vdmVB
bGxJY29ucygpCi17Ci0gICAgbV9jbGllbnQtPmRpZFJlbW92ZUFsbEljb25zKCp0aGlzKTsKLX0K
LQotdm9pZCBXZWJJY29uRGF0YWJhc2U6OmRpZEZpbmlzaFVSTEltcG9ydCgpCi17Ci0gICAgaWYg
KCFtX3Byb2Nlc3NQb29sKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQoIW1fdXJsSW1w
b3J0Q29tcGxldGVkKTsKLQotICAgIExPRyhJY29uRGF0YWJhc2UsICJXSzIgVUlQcm9jZXNzIFVS
TCBpbXBvcnQgY29tcGxldGUsIG5vdGlmeWluZyBhbGwgJWkgcGVuZGluZyBwYWdlIFVSTCBsb2Fk
IGRlY2lzaW9ucyIsIG1fcGVuZGluZ0xvYWREZWNpc2lvblVSTE1hcC5zaXplKCkpOwotICAgIAot
ICAgIGZvciAoYXV0byYgc2xvdCA6IG1fcGVuZGluZ0xvYWREZWNpc2lvblVSTE1hcCkgewotICAg
ICAgICBMT0coSWNvbkRhdGFiYXNlLCAiV0syIFVJUHJvY2VzcyBwZXJmb3JtaW5nIGRlbGF5ZWQg
Y2FsbGJhY2sgb24gY2FsbGJhY2sgSUQgJWkgZm9yIHBhZ2UgdXJsICVzIiwgKGludClzbG90Lmtl
eSwgc2xvdC52YWx1ZS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAgIEljb25Mb2FkRGVjaXNpb24g
ZGVjaXNpb24gPSBtX2ljb25EYXRhYmFzZUltcGwtPnN5bmNocm9ub3VzTG9hZERlY2lzaW9uRm9y
SWNvblVSTChzbG90LnZhbHVlLCBudWxscHRyKTsKLQotICAgICAgICAvLyBEZWNpc2lvbnMgc2hv
dWxkIG5ldmVyIGJlIHVua25vd24gYWZ0ZXIgdGhlIGluaXRhbCBpbXBvcnQgaXMgY29tcGxldGUu
Ci0gICAgICAgIEFTU0VSVChkZWNpc2lvbiAhPSBJY29uTG9hZFVua25vd24pOwotCi0gICAgICAg
IC8vIEZJWE1FIChNdWx0aS1XZWJQcm9jZXNzKTogPHJkYXI6Ly9wcm9ibGVtLzEyMjQwMjIzPiBX
ZSBuZWVkIHRvIGtub3cgd2hpY2ggY29ubmVjdGlvbiB0byBzZW5kIHRoaXMgbWVzc2FnZSB0by4K
LSAgICAgICAgbV9wcm9jZXNzUG9vbC0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJJ
Y29uRGF0YWJhc2VQcm94eTo6UmVjZWl2ZWRJY29uTG9hZERlY2lzaW9uKHN0YXRpY19jYXN0PGlu
dD4oZGVjaXNpb24pLCBzbG90LmtleSkpOwotICAgIH0KLQotICAgIG1fcGVuZGluZ0xvYWREZWNp
c2lvblVSTE1hcC5jbGVhcigpOwotCi0gICAgbV91cmxJbXBvcnRDb21wbGV0ZWQgPSB0cnVlOwot
fQotCi12b2lkIFdlYkljb25EYXRhYmFzZTo6ZGlkQ2xvc2UoKQotewotICAgIGlmICghbV9zaG91
bGREZXJlZldoZW5BcHByb3ByaWF0ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZGVyZWYoKTsK
LX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2U6OmRlcmVmV2hlbkFwcHJvcHJpYXRlKCkKLXsKLSAg
ICBpZiAobV9pY29uRGF0YWJhc2VJbXBsICYmIG1faWNvbkRhdGFiYXNlSW1wbC0+aXNPcGVuKCkp
IHsKLSAgICAgICAgbV9zaG91bGREZXJlZldoZW5BcHByb3ByaWF0ZSA9IHRydWU7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBkZXJlZigpOwotfQotCi12b2lkIFdlYkljb25EYXRhYmFz
ZTo6bm90aWZ5SWNvbkRhdGFSZWFkeUZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMKQot
ewotICAgIG1fY2xpZW50LT5pY29uRGF0YVJlYWR5Rm9yUGFnZVVSTCgqdGhpcywgcGFnZVVSTCk7
Ci0gICAgZGlkQ2hhbmdlSWNvbkZvclBhZ2VVUkwocGFnZVVSTCk7Ci19Ci0KLXZvaWQgV2ViSWNv
bkRhdGFiYXNlOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCkKLXsKLSAgICBpZiAobV9pY29uRGF0YWJhc2VJbXBsKQotICAgICAgICBtX2ljb25E
YXRhYmFzZUltcGwtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQocHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCk7Ci19Ci0KLVJlZlB0cjxBUEk6OkRhdGE+IFdlYkljb25EYXRhYmFzZTo6aWNvbkRhdGFG
b3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCkKLXsKLSAgICBhdXRvKiBpbWFnZSA9IGlt
YWdlRm9yUGFnZVVSTChwYWdlVVJMKTsKLSAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQotICAgIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gaW1hZ2UtPmRhdGEo
KTsKLSAgICBpZiAoIXNoYXJlZEJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICAvLyBCYWxhbmNlZCBieSBkZXJlZigpIGJlbG93LgotICAgIHNoYXJlZEJ1ZmZlci0+cmVmKCk7
Ci0gICAgcmV0dXJuIEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oc2hhcmVkQnVmZmVyLT5kYXRhKCkpLCBzaGFyZWRC
dWZmZXItPnNpemUoKSwKLSAgICAgICAgW10odW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIHVu
dHlwZWRTaGFyZWRCdWZmZXIpIHsKLSAgICAgICAgICAgIC8vIEJhbGFuY2VkIGJ5IHJlZigpIGFi
b3ZlLgotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDx2
b2lkKj4odW50eXBlZFNoYXJlZEJ1ZmZlcikpLT5kZXJlZigpOwotICAgICAgICB9LCBzaGFyZWRC
dWZmZXIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViSWNvbkRhdGFiYXNlLmgKaW5kZXggODcxM2E4YmZkNTM1YjI1N2Q5Y2Y4Y2NkNzI4YjRl
MGM3OGUxM2YwNS4uYmVjOWJlYWY4MjgzNzNkM2RhOTk2MmY5MjU5YzUzNDBiZGMxMzQ2ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmgKQEAgLTIzLDEwMSArMjMs
MTMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVm
IFdlYkljb25EYXRhYmFzZV9oCi0jZGVmaW5lIFdlYkljb25EYXRhYmFzZV9oCisjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgotI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKLSNp
bmNsdWRlICJXZWJJY29uRGF0YWJhc2VDbGllbnQuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ljb25E
YXRhYmFzZUNsaWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvTmF0aXZlSW1hZ2UuaD4KLQotbmFtZXNwYWNlIEFQSSB7Ci1jbGFzcyBEYXRhOwot
Y2xhc3MgSWNvbkRhdGFiYXNlQ2xpZW50OwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFz
cyBJY29uRGF0YWJhc2U7Ci1jbGFzcyBJbWFnZTsKLX0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LWNsYXNzIFdlYlByb2Nlc3NQb29sOwotCi1jbGFzcyBXZWJJY29uRGF0YWJhc2UgOiBwdWJsaWMg
QVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpJY29uRGF0YWJhc2U+LCBwcml2YXRl
IFdlYkNvcmU6Okljb25EYXRhYmFzZUNsaWVudCwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJJY29uRGF0YWJhc2U+IGNyZWF0ZShXZWJQ
cm9jZXNzUG9vbCopOwotICAgIHZpcnR1YWwgfldlYkljb25EYXRhYmFzZSgpOwotCi0gICAgdm9p
ZCBpbnZhbGlkYXRlKCk7Ci0gICAgdm9pZCBjbGVhclByb2Nlc3NQb29sKCkgeyBtX3Byb2Nlc3NQ
b29sID0gbnVsbHB0cjsgfQotICAgIHZvaWQgc2V0RGF0YWJhc2VQYXRoKGNvbnN0IFN0cmluZyYp
OwotICAgIHZvaWQgZW5hYmxlRGF0YWJhc2VDbGVhbnVwKCk7Ci0KLSAgICB2b2lkIHJldGFpbklj
b25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgcmVsZWFzZUljb25Gb3JQYWdl
VVJMKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgc2V0SWNvblVSTEZvclBhZ2VVUkwoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRJY29uRGF0YUZvckljb25VUkwo
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJik7Ci0KLSAgICB2b2lkIHN5
bmNocm9ub3VzSWNvbkRhdGFGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIElQQzo6RGF0YVJlZmVy
ZW5jZSYpOwotICAgIHZvaWQgc3luY2hyb25vdXNJY29uVVJMRm9yUGFnZVVSTChjb25zdCBTdHJp
bmcmLCBTdHJpbmcmKTsKLSAgICB2b2lkIHN5bmNocm9ub3VzSWNvbkRhdGFLbm93bkZvckljb25V
UkwoY29uc3QgU3RyaW5nJiwgYm9vbCYpIGNvbnN0OwotICAgIHZvaWQgc3luY2hyb25vdXNMb2Fk
RGVjaXNpb25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYsIGludCYpIGNvbnN0OwotCi0gICAgdm9p
ZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpOwotICAgIHZvaWQgZGlkUmVjZWl2ZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYp
OwotCi0gICAgV2ViQ29yZTo6SW1hZ2UqIGltYWdlRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmLCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiBpY29uU2l6ZSA9IFdlYkNvcmU6OkludFNpemUoMzIsIDMy
KSk7Ci0gICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JQYWdlVVJMKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGljb25TaXplID0gV2ViQ29yZTo6
SW50U2l6ZSgzMiwgMzIpKTsKLSAgICBSZWZQdHI8QVBJOjpEYXRhPiBpY29uRGF0YUZvclBhZ2VV
UkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMKTsKLQotICAgIGJvb2wgaXNPcGVuKCk7Ci0gICAgYm9v
bCBpc1VybEltcG9ydENvbXBsZXRlZCgpOwotCi0gICAgdm9pZCByZW1vdmVBbGxJY29ucygpOwot
ICAgIHZvaWQgY2hlY2tJbnRlZ3JpdHlCZWZvcmVPcGVuaW5nKCk7Ci0gICAgdm9pZCBjbG9zZSgp
OwotCi0gICAgdm9pZCBzZXRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SWNvbkRhdGFiYXNl
Q2xpZW50PiYmKTsKLQotICAgIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sKTsK
LQotICAgIC8vIENhbGxlZCB3aGVuIHRoZSBXZWJQcm9jZXNzUG9vbCBpcyB0aHJvdWdoIHdpdGgg
dGhpcyBXZWJJY29uRGF0YWJhc2UgYnV0IHRoZQotICAgIC8vIFdlYkNvcmU6Okljb25EYXRhYmFz
ZSBwb3NzaWJseSBpc24ndCBkb25lIHNodXR0aW5nIGRvd24uCi0gICAgLy8gSW4gdGhhdCBjYXNl
IHRoaXMgV2ViSWNvbkRhdGFiYXNlIHdpbGwgZGVyZWYoKSBpdHNlbGYgd2hlbiB0aGUgdGltZSBp
cyByaWdodC4KLSAgICB2b2lkIGRlcmVmV2hlbkFwcHJvcHJpYXRlKCk7Ci0KLXByaXZhdGU6Ci0g
ICAgZXhwbGljaXQgV2ViSWNvbkRhdGFiYXNlKFdlYlByb2Nlc3NQb29sJik7Ci0KLSAgICAvLyBX
ZWJDb3JlOjpJY29uRGF0YWJhc2VDbGllbnQKLSAgICB2b2lkIGRpZEltcG9ydEljb25VUkxGb3JQ
YWdlVVJMKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkSW1wb3J0SWNvbkRh
dGFGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkQ2hhbmdl
SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZW1v
dmVBbGxJY29ucygpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkRmluaXNoVVJMSW1wb3J0KCkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkaWRDbG9zZSgpIG92ZXJyaWRlOwotCi0gICAgLy8gSVBDOjpNZXNz
YWdlUmVjZWl2ZXIKLSAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVu
Y29kZXI+Jikgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIG5vdGlmeUljb25EYXRhUmVhZHlGb3JQYWdl
VVJMKGNvbnN0IFN0cmluZyYpOwotCi0gICAgV2ViUHJvY2Vzc1Bvb2wqIG1fcHJvY2Vzc1Bvb2w7
Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SWNvbkRhdGFiYXNlPiBtX2ljb25EYXRh
YmFzZUltcGw7Ci0gICAgYm9vbCBtX3VybEltcG9ydENvbXBsZXRlZDsKLSAgICBib29sIG1fZGF0
YWJhc2VDbGVhbnVwRGlzYWJsZWQ7Ci0gICAgYm9vbCBtX3Nob3VsZERlcmVmV2hlbkFwcHJvcHJp
YXRlOwotICAgIEhhc2hNYXA8dWludDY0X3QsIFN0cmluZz4gbV9wZW5kaW5nTG9hZERlY2lzaW9u
VVJMTWFwOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6SWNvbkRhdGFiYXNlQ2xpZW50PiBt
X2NsaWVudDsKK2NsYXNzIFdlYkljb25EYXRhYmFzZSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8
QVBJOjpPYmplY3Q6OlR5cGU6Okljb25EYXRhYmFzZT4gewogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJJY29uRGF0YWJhc2VfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLm1lc3NhZ2VzLmluCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmNWI5NmZkMWY2NmNmMjRhYTgyZGEyYzBhOWU3MjY0YjliZjYwNTBi
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5tZXNzYWdlcy5pbgorKysgL2Rldi9udWxs
CkBAIC0xLDM0ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0Ogot
IyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LQotbWVzc2FnZXMgLT4gV2ViSWNvbkRhdGFiYXNlIHsKLSAgICBTZXRJY29uVVJMRm9yUGFnZVVS
TChTdHJpbmcgaWNvblVSTCwgU3RyaW5nIHBhZ2VVUkwpCi0gICAgU2V0SWNvbkRhdGFGb3JJY29u
VVJMKElQQzo6RGF0YVJlZmVyZW5jZSBpY29uRGF0YSwgU3RyaW5nIGljb25VUkwpCi0gICAgCi0g
ICAgU3luY2hyb25vdXNJY29uRGF0YUZvclBhZ2VVUkwoU3RyaW5nIHBhZ2VVUkwpIC0+IChJUEM6
OkRhdGFSZWZlcmVuY2UgaWNvbkRhdGEpCi0gICAgU3luY2hyb25vdXNJY29uVVJMRm9yUGFnZVVS
TChTdHJpbmcgcGFnZVVSTCkgLT4gKFN0cmluZyBpY29uVVJMKQotICAgIFN5bmNocm9ub3VzSWNv
bkRhdGFLbm93bkZvckljb25VUkwoU3RyaW5nIGljb25VUkwpIC0+IChib29sIGRhdGFLbm93bikK
LSAgICBTeW5jaHJvbm91c0xvYWREZWNpc2lvbkZvckljb25VUkwoU3RyaW5nIGljb25VUkwpIC0+
IChpbnQgbG9hZERlY2lzaW9uKQotICAgIAotICAgIEdldExvYWREZWNpc2lvbkZvckljb25VUkwo
U3RyaW5nIGljb25VUkwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgRGlkUmVjZWl2ZUljb25G
b3JQYWdlVVJMKFN0cmluZyBwYWdlVVJMKQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkljb25EYXRhYmFzZUNsaWVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDFkNzIwNTBjOGU0NTk1YjEwZmIyMTlmNjQ5ZTM1MDUzY2E3YWE3NDguLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViSWNvbkRh
dGFiYXNlQ2xpZW50LmgiCi0KLSNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXS1No
YXJlZEFQSUNhc3QuaCIKLSNpbmNsdWRlICJXZWJJY29uRGF0YWJhc2UuaCIKLQotbmFtZXNwYWNl
IFdlYktpdCB7Ci0KLVdlYkljb25EYXRhYmFzZUNsaWVudDo6V2ViSWNvbkRhdGFiYXNlQ2xpZW50
KGNvbnN0IFdLSWNvbkRhdGFiYXNlQ2xpZW50QmFzZSogd2tDbGllbnQpCi17Ci0gICAgaW5pdGlh
bGl6ZSh3a0NsaWVudCk7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlQ2xpZW50OjpkaWRDaGFu
Z2VJY29uRm9yUGFnZVVSTChXZWJJY29uRGF0YWJhc2UmIGljb25EYXRhYmFzZSwgY29uc3QgU3Ry
aW5nJiBwYWdlVVJMKQotewotICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlSWNvbkZvclBhZ2VV
UkwpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY2xpZW50LmRpZENoYW5nZUljb25Gb3JQYWdl
VVJMKHRvQVBJKCZpY29uRGF0YWJhc2UpLCB0b0FQSShBUEk6OlVSTDo6Y3JlYXRlKHBhZ2VVUkwp
LnB0cigpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0
YWJhc2VDbGllbnQ6OmRpZFJlbW92ZUFsbEljb25zKFdlYkljb25EYXRhYmFzZSYgaWNvbkRhdGFi
YXNlKQotewotICAgIGlmICghbV9jbGllbnQuZGlkUmVtb3ZlQWxsSWNvbnMpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIG1fY2xpZW50LmRpZFJlbW92ZUFsbEljb25zKHRvQVBJKCZpY29uRGF0YWJh
c2UpLCAgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJh
c2VDbGllbnQ6Omljb25EYXRhUmVhZHlGb3JQYWdlVVJMKFdlYkljb25EYXRhYmFzZSYgaWNvbkRh
dGFiYXNlLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkwpCi17Ci0gICAgaWYgKCFtX2NsaWVudC5pY29u
RGF0YVJlYWR5Rm9yUGFnZVVSTCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jbGllbnQuaWNv
bkRhdGFSZWFkeUZvclBhZ2VVUkwodG9BUEkoJmljb25EYXRhYmFzZSksIHRvQVBJKEFQSTo6VVJM
OjpjcmVhdGUocGFnZVVSTCkucHRyKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkljb25EYXRhYmFzZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
SWNvbkRhdGFiYXNlQ2xpZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2YWMx
YThmYWUxNjFlODI2ZjAwNjIwMzk3MmUzZjZhZGEwZDMxOTguLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSWNv
bkRhdGFiYXNlQ2xpZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2lmbmRlZiBXZWJJY29uRGF0YWJhc2VDbGllbnRfaAotI2RlZmluZSBXZWJJY29uRGF0
YWJhc2VDbGllbnRfaAotCi0jaW5jbHVkZSAiQVBJQ2xpZW50LmgiCi0jaW5jbHVkZSAiQVBJSWNv
bkRhdGFiYXNlQ2xpZW50LmgiCi0jaW5jbHVkZSAiV0tJY29uRGF0YWJhc2UuaCIKLQotbmFtZXNw
YWNlIEFQSSB7Ci1jbGFzcyBVUkw7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tJ
Y29uRGF0YWJhc2VDbGllbnRCYXNlPiB7Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLSWNvbkRh
dGFiYXNlQ2xpZW50VjAsIFdLSWNvbkRhdGFiYXNlQ2xpZW50VjE+IFZlcnNpb25zOwotfTsKLX0K
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYkljb25EYXRhYmFzZTsKLQotY2xhc3Mg
V2ViSWNvbkRhdGFiYXNlQ2xpZW50IDogcHVibGljIEFQSTo6SWNvbkRhdGFiYXNlQ2xpZW50LCBB
UEk6OkNsaWVudDxXS0ljb25EYXRhYmFzZUNsaWVudEJhc2U+IHsKLXB1YmxpYzoKLSAgICBleHBs
aWNpdCBXZWJJY29uRGF0YWJhc2VDbGllbnQoY29uc3QgV0tJY29uRGF0YWJhc2VDbGllbnRCYXNl
Kik7Ci0KLSAgICB2b2lkIGRpZENoYW5nZUljb25Gb3JQYWdlVVJMKFdlYkljb25EYXRhYmFzZSYs
IGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVtb3ZlQWxsSWNvbnMoV2Vi
SWNvbkRhdGFiYXNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpY29uRGF0YVJlYWR5Rm9yUGFnZVVS
TChXZWJJY29uRGF0YWJhc2UmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViSWNvbkRhdGFiYXNlQ2xpZW50X2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBjYjZkOTcwZGRj
MmZiMzQyZWVlYzIyYmNlYTA1NDU4MjhhZDU2MTM5Li41OWM2OGFhOWYxNGQ2NGJlNTA4ZjU3NjUx
NTg5Y2RkNTBiZDhkNzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCkBAIC01Nyw3ICs1Nyw2IEBACiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHkuaCIKLSNpbmNsdWRlICJXZWJJY29uRGF0YWJhc2UuaCIKICNp
bmNsdWRlICJXZWJLaXQySW5pdGlhbGl6ZS5oIgogI2luY2x1ZGUgIldlYk1lbW9yeVNhbXBsZXIu
aCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaCIKQEAgLTI1OCw4ICsy
NTcsNiBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzUG9vbDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7CiAKICAg
ICAvLyBOT1RFOiBUaGVzZSBzdWItb2JqZWN0cyBtdXN0IGJlIGluaXRpYWxpemVkIGFmdGVyIG1f
bWVzc2FnZVJlY2VpdmVyTWFwLi4KLSAgICBtX2ljb25EYXRhYmFzZSA9IFdlYkljb25EYXRhYmFz
ZTo6Y3JlYXRlKHRoaXMpOwotCiAgICAgYWRkU3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJv
eHk+KCk7CiAgICAgYWRkU3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKTsK
ICAgICBhZGRTdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKTsKQEAgLTMw
NSwxMSArMzAyLDYgQEAgV2ViUHJvY2Vzc1Bvb2w6On5XZWJQcm9jZXNzUG9vbCgpCiAgICAgICAg
IHN1cHBsZW1lbnQtPmNsZWFyUHJvY2Vzc1Bvb2woKTsKICAgICB9CiAKLSAgICBtX2ljb25EYXRh
YmFzZS0+aW52YWxpZGF0ZSgpOwotICAgIG1faWNvbkRhdGFiYXNlLT5jbGVhclByb2Nlc3NQb29s
KCk7Ci0gICAgV2ViSWNvbkRhdGFiYXNlKiByYXdJY29uRGF0YWJhc2UgPSBtX2ljb25EYXRhYmFz
ZS5sZWFrUmVmKCk7Ci0gICAgcmF3SWNvbkRhdGFiYXNlLT5kZXJlZldoZW5BcHByb3ByaWF0ZSgp
OwotCiAgICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fZGljdGlvbmFyeUNhbGxiYWNrcywgQ2Fs
bGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CiAKICAgICBwbGF0Zm9ybUlu
dmFsaWRhdGVDb250ZXh0KCk7CkBAIC01OTUsOCArNTg3LDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6d2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdlZCgpCiAKIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnNldEFueVBhZ2VHcm91cE1pZ2h0SGF2ZVByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9v
bCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQogewotICAgIG1faWNvbkRhdGFiYXNlLT5zZXRQcml2
YXRlQnJvd3NpbmdFbmFibGVkKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpOwotCiAgICAgaWYgKG5l
dHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgaWYgKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCiAg
ICAgICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih7U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRl
U2Vzc2lvbklEKCksIHsgfSwgeyB9LCB7IH19KSwgMCk7CkBAIC03MjYsOCArNzE2LDYgQEAgV2Vi
UHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTmV3V2ViUHJvY2VzcyhXZWJzaXRl
RGF0YVN0b3JlJiB3ZWJzaXRlRGEKICAgICBwYXJhbWV0ZXJzLnNob3VsZEFsd2F5c1VzZUNvbXBs
ZXhUZXh0Q29kZVBhdGggPSBtX2Fsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoOwogICAgIHBh
cmFtZXRlcnMuc2hvdWxkVXNlRm9udFNtb290aGluZyA9IG1fc2hvdWxkVXNlRm9udFNtb290aGlu
ZzsKIAotICAgIHBhcmFtZXRlcnMuaWNvbkRhdGFiYXNlRW5hYmxlZCA9ICFpY29uRGF0YWJhc2VQ
YXRoKCkuaXNFbXB0eSgpOwotCiAgICAgcGFyYW1ldGVycy50ZXJtaW5hdGlvblRpbWVvdXQgPSAw
X3M7CiAKICAgICBwYXJhbWV0ZXJzLnRleHRDaGVja2VyU3RhdGUgPSBUZXh0Q2hlY2tlcjo6c3Rh
dGUoKTsKQEAgLTEyOTAsMjMgKzEyNzgsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzdG9wTWVt
b3J5U2FtcGxlcigpCiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpTdG9wTWVtb3J5U2FtcGxlcigpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0SWNv
bkRhdGFiYXNlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgbV9vdmVycmlkZUljb25E
YXRhYmFzZVBhdGggPSBwYXRoOwotICAgIGlmICghbV9vdmVycmlkZUljb25EYXRhYmFzZVBhdGgu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIC8vIFRoaXMgaW1wbGljaXRseSBlbmFibGVzIHRoZSBkYXRh
YmFzZSBvbiBVSSBwcm9jZXNzIHNpZGUuCi0gICAgICAgIG1faWNvbkRhdGFiYXNlLT5zZXREYXRh
YmFzZVBhdGgocGF0aCk7Ci0gICAgfQotfQotCi1TdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6Omljb25E
YXRhYmFzZVBhdGgoKSBjb25zdAotewotICAgIGlmICghbV9vdmVycmlkZUljb25EYXRhYmFzZVBh
dGguaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBtX292ZXJyaWRlSWNvbkRhdGFiYXNlUGF0aDsK
LQotICAgIHJldHVybiBwbGF0Zm9ybURlZmF1bHRJY29uRGF0YWJhc2VQYXRoKCk7Ci19Ci0KIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbigpCiB7CiAgICAgQVNT
RVJUKG1fcHJvY2Vzc2VzLmlzRW1wdHkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaAppbmRleCA5NGRlZWEzMWY0ZmY2ZjNhYTVlNGY3ZTRhOGU1N2IwY2QyNWExNGVj
Li5lZWU2NzJiMjUwY2FhMGM5ZWIzZDg1ZTAyNmRlZTVmNDYzNDgzMDE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTg5LDcgKzg5LDYgQEAgY2xhc3MgVUlH
YW1lcGFkOwogY2xhc3MgUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcjsKIGNsYXNzIFdl
YkF1dG9tYXRpb25TZXNzaW9uOwogY2xhc3MgV2ViQ29udGV4dFN1cHBsZW1lbnQ7Ci1jbGFzcyBX
ZWJJY29uRGF0YWJhc2U7CiBjbGFzcyBXZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7
CiBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CkBAIC0yNDQsOCArMjQz
LDYgQEAgcHVibGljOgogCiAgICAgQVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQmIGN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCgpIGNvbnN0IHsgcmV0dXJuICptX2N1c3RvbVByb3Rv
Y29sTWFuYWdlckNsaWVudDsgfQogCi0gICAgV2ViSWNvbkRhdGFiYXNlKiBpY29uRGF0YWJhc2Uo
KSBjb25zdCB7IHJldHVybiBtX2ljb25EYXRhYmFzZS5nZXQoKTsgfQotCiAgICAgc3RydWN0IFN0
YXRpc3RpY3MgewogICAgICAgICB1bnNpZ25lZCB3a1ZpZXdDb3VudDsKICAgICAgICAgdW5zaWdu
ZWQgd2tQYWdlQ291bnQ7CkBAIC0yNTMsOCArMjUwLDYgQEAgcHVibGljOgogICAgIH07CiAgICAg
c3RhdGljIFN0YXRpc3RpY3MmIHN0YXRpc3RpY3MoKTsgICAgCiAKLSAgICB2b2lkIHNldEljb25E
YXRhYmFzZVBhdGgoY29uc3QgU3RyaW5nJik7Ci0gICAgU3RyaW5nIGljb25EYXRhYmFzZVBhdGgo
KSBjb25zdDsKICAgICB2b2lkIHNldENvb2tpZVN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5n
JiBkaXIpIHsgbV9vdmVycmlkZUNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkgPSBkaXI7IH0KIAogICAg
IHZvaWQgdXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKCk7CkBAIC00NTAsOCArNDQ1LDYgQEAgcHJp
dmF0ZToKICAgICBzdGF0aWMgdm9pZCBsYW5ndWFnZUNoYW5nZWQodm9pZCogY29udGV4dCk7CiAg
ICAgdm9pZCBsYW5ndWFnZUNoYW5nZWQoKTsKIAotICAgIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRJ
Y29uRGF0YWJhc2VQYXRoKCkgY29uc3Q7Ci0KICNpZiBQTEFURk9STShJT1MpCiAgICAgU3RyaW5n
IGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKICNlbmRpZgpAQCAtNTMwLDggKzUyMyw2
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX21lbW9yeVNhbXBsZXJFbmFibGVkOwogICAgIGRvdWJs
ZSBtX21lbW9yeVNhbXBsZXJJbnRlcnZhbDsKIAotICAgIFJlZlB0cjxXZWJJY29uRGF0YWJhc2U+
IG1faWNvbkRhdGFiYXNlOwotCiAgICAgY29uc3QgUmVmPEFQSTo6V2Vic2l0ZURhdGFTdG9yZT4g
bV93ZWJzaXRlRGF0YVN0b3JlOwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IGNoYXIqLCBS
ZWZQdHI8V2ViQ29udGV4dFN1cHBsZW1lbnQ+LCBQdHJIYXNoPGNvbnN0IGNoYXIqPj4gV2ViQ29u
dGV4dFN1cHBsZW1lbnRNYXA7CkBAIC01NTQsNyArNTQ1LDYgQEAgcHJpdmF0ZToKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcj4gbV9wZXJBY3Rpdml0
eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyOwogI2VuZGlmCiAKLSAgICBTdHJpbmcgbV9vdmVycmlkZUlj
b25EYXRhYmFzZVBhdGg7CiAgICAgU3RyaW5nIG1fb3ZlcnJpZGVDb29raWVTdG9yYWdlRGlyZWN0
b3J5OwogCiAgICAgYm9vbCBtX3Nob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGUwOTZiNjI3NTI3
ZDg5MmQ1MDk2ZmVmMTBhNjdhNWFlYTI3NDc4NzQuLjQyNzUwNTYyODkxM2E3NDkxNmFjZWYzOTNm
MjBmZjhiNzk2MDNhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIlRleHRDaGVja2VyU3RhdGUuaCIK
ICNpbmNsdWRlICJVc2VyRGF0YS5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0u
aCIKLSNpbmNsdWRlICJXZWJJY29uRGF0YWJhc2UuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JV
dGlsaXRpZXMuaCIKICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlLmgiCiAjaW5jbHVk
ZSAiV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgiCkBAIC0xNjcsOCArMTY2LDYgQEAgdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NXaWxsU2h1dERvd24oSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uKQogCiAgICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFwLnZhbHVlcygpKQog
ICAgICAgICBwYWdlLT53ZWJQcm9jZXNzV2lsbFNodXREb3duKCk7Ci0KLSAgICByZWxlYXNlUmVt
YWluaW5nSWNvbnNGb3JQYWdlVVJMcygpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2h1
dERvd24oKQpAQCAtNTc5LDUzICs1NzYsNiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0RGF0
YWJhc2VQcm9jZXNzQ29ubmVjdGlvbihSZWY8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eQogfQog
I2VuZGlmIC8vIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogCi12b2lkIFdlYlByb2Nlc3NQcm94
eTo6cmV0YWluSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMKQotewotICAgIFdl
Ykljb25EYXRhYmFzZSogaWNvbkRhdGFiYXNlID0gcHJvY2Vzc1Bvb2woKS5pY29uRGF0YWJhc2Uo
KTsKLSAgICBpZiAoIWljb25EYXRhYmFzZSB8fCBwYWdlVVJMLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgLy8gVHJhY2sgcmV0YWluIGNvdW50cyBzbyB3ZSBjYW4gcmVsZWFzZSB0
aGVtIGlmIHRoZSBXZWJQcm9jZXNzIHRlcm1pbmF0ZXMgZWFybHkuCi0gICAgYXV0byByZXN1bHQg
PSBtX3BhZ2VVUkxSZXRhaW5Db3VudE1hcC5hZGQocGFnZVVSTCwgMSk7Ci0gICAgaWYgKCFyZXN1
bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgKytyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwotCi0gICAg
aWNvbkRhdGFiYXNlLT5yZXRhaW5JY29uRm9yUGFnZVVSTChwYWdlVVJMKTsKLX0KLQotdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OnJlbGVhc2VJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VV
UkwpCi17Ci0gICAgV2ViSWNvbkRhdGFiYXNlKiBpY29uRGF0YWJhc2UgPSBwcm9jZXNzUG9vbCgp
Lmljb25EYXRhYmFzZSgpOwotICAgIGlmICghaWNvbkRhdGFiYXNlIHx8IHBhZ2VVUkwuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBUcmFjayByZXRhaW4gY291bnRzIHNvIHdl
IGNhbiByZWxlYXNlIHRoZW0gaWYgdGhlIFdlYlByb2Nlc3MgdGVybWluYXRlcyBlYXJseS4KLSAg
ICBhdXRvIHJlc3VsdCA9IG1fcGFnZVVSTFJldGFpbkNvdW50TWFwLmZpbmQocGFnZVVSTCk7Ci0g
ICAgaWYgKHJlc3VsdCA9PSBtX3BhZ2VVUkxSZXRhaW5Db3VudE1hcC5lbmQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgLS1yZXN1bHQtPnZhbHVlOwotICAgIGlmICghcmVzdWx0LT52YWx1ZSkK
LSAgICAgICAgbV9wYWdlVVJMUmV0YWluQ291bnRNYXAucmVtb3ZlKHJlc3VsdCk7Ci0KLSAgICBp
Y29uRGF0YWJhc2UtPnJlbGVhc2VJY29uRm9yUGFnZVVSTChwYWdlVVJMKTsKLX0KLQotdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OnJlbGVhc2VSZW1haW5pbmdJY29uc0ZvclBhZ2VVUkxzKCkKLXsKLSAg
ICBXZWJJY29uRGF0YWJhc2UqIGljb25EYXRhYmFzZSA9IHByb2Nlc3NQb29sKCkuaWNvbkRhdGFi
YXNlKCk7Ci0gICAgaWYgKCFpY29uRGF0YWJhc2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZv
ciAoYXV0byYgZW50cnkgOiBtX3BhZ2VVUkxSZXRhaW5Db3VudE1hcCkgewotICAgICAgICB1aW50
NjRfdCBjb3VudCA9IGVudHJ5LnZhbHVlOwotICAgICAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBp
IDwgY291bnQ7ICsraSkKLSAgICAgICAgICAgIGljb25EYXRhYmFzZS0+cmVsZWFzZUljb25Gb3JQ
YWdlVVJMKGVudHJ5LmtleSk7Ci0gICAgfQotCi0gICAgbV9wYWdlVVJMUmV0YWluQ291bnRNYXAu
Y2xlYXIoKTsKLX0KLQogI2lmICFQTEFURk9STShDT0NPQSkKIGJvb2wgV2ViUHJvY2Vzc1Byb3h5
OjpwbGF0Zm9ybUlzQmVpbmdEZWJ1Z2dlZCgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDU2OTE4YjM5ZDM1OTBiZTA1N2I5ZmRiNDc5NjU1
MDIyYjgxNTQ4ODEuLjViYjM2YzY3MWY2Njg1ZTBjZWFhODU2ZDhlMGIwZTNkNjJlY2FlOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0yMTgsMTAgKzIx
OCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKFJl
ZjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9u
OjpEZWxheWVkUmVwbHk+JiYpOwogI2VuZGlmCiAKLSAgICB2b2lkIHJldGFpbkljb25Gb3JQYWdl
VVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCk7Ci0gICAgdm9pZCByZWxlYXNlSWNvbkZvclBhZ2VV
UkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMKTsKLSAgICB2b2lkIHJlbGVhc2VSZW1haW5pbmdJY29u
c0ZvclBhZ2VVUkxzKCk7Ci0KICAgICBib29sIHBsYXRmb3JtSXNCZWluZ0RlYnVnZ2VkKCkgY29u
c3Q7CiAKICAgICBzdGF0aWMgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBwbGF0Zm9ybVBhdGhzV2l0
aEFzc3VtZWRSZWFkQWNjZXNzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYjJiYjc4MTIwZjU1ZTY0NWE2ZTIxMjlk
ZGQzZjUzNWRkZWQ0ODViMy4uNDdlNWNkMmZiNzE0ODVjOTg5ZTJhMmI3MDU4YWVmODQwOTRjNzU2
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtNTEsOSArNTEsNiBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzUHJveHkg
TGVnYWN5UmVjZWl2ZXIgewogCiAgICAgU3RvcFJlc3BvbnNpdmVuZXNzVGltZXIoKQogCi0gICAg
UmV0YWluSWNvbkZvclBhZ2VVUkwoU3RyaW5nIHBhZ2VVUkwpCi0gICAgUmVsZWFzZUljb25Gb3JQ
YWdlVVJMKFN0cmluZyBwYWdlVVJMKQotCiAgICAgRGlkUmVjZWl2ZU1haW5UaHJlYWRQaW5nKCkK
ICAgICBEaWRSZWNlaXZlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzUGluZygpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCmluZGV4IGIw
YWNlZTM5NzY4ZWQyZmNkZTYzMDk4NjI2ZTQ4MDk2ZDdhYTI0Y2UuLmM1OTVkNTZkZjM5MTM0YzA1
MWU1YzE3NDJmOTUzODNkNDg4MWMzOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcApAQCAtMTA2LDEyICsxMDYsNiBAQCBTdHJpbmcg
V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5KCkKICAgICByZXR1cm4gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhl
ZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKIH0KIAotU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpwbGF0
Zm9ybURlZmF1bHRJY29uRGF0YWJhc2VQYXRoKCkgY29uc3QKLXsKLSAgICBHVW5pcXVlUHRyPGdj
aGFyPiBkYXRhYmFzZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVf
ZGlyKCksICJ3ZWJraXRndGsiLCAiaWNvbmRhdGFiYXNlIiwgbnVsbHB0cikpOwotICAgIHJldHVy
biBXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRhdGFiYXNlRGly
ZWN0b3J5LmdldCgpKTsKLX0KLQogU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9y
bURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQogewogICAgIHJldHVybiBBUEk6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQcm9jZXNzUG9vbFdQRS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUHJvY2Vzc1Bvb2xXUEUuY3BwCmluZGV4IDBiOWM2
ZmJlOGFkNzc1YjM4Yjc5ZmVkMGQxZjU0OTUxMmNlMmU3NjUuLmU1MjJhNTk1NThkYjFjZTlkYzY3
MjE5MzM0N2NkN2I5MDg4NTI0NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L3dwZS9XZWJQcm9jZXNzUG9vbFdQRS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
d3BlL1dlYlByb2Nlc3NQb29sV1BFLmNwcApAQCAtMTExLDEyICsxMTEsNiBAQCBTdHJpbmcgV2Vi
UHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5KCkKICAgICByZXR1cm4gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7CiB9CiAKLVN0cmluZyBXZWJQ
cm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0SWNvbkRhdGFiYXNlUGF0aCgpIGNvbnN0Ci17Ci0g
ICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGF0YWJhc2VEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShn
X2dldF91c2VyX2NhY2hlX2RpcigpLCAid3BlIiwgImljb25kYXRhYmFzZSIsIG51bGxwdHIpKTsK
LSAgICByZXR1cm4gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihk
YXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7Ci19Ci0KIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVn
YWN5UGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKIHsKICAgICBHVW5pcXVl
UHRyPGdjaGFyPiBzdG9yYWdlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9k
YXRhX2RpcigpLCAid3BlIiwgImxvY2Fsc3RvcmFnZSIsIG51bGxwdHIpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIzYzNiYTU1OTRi
ODFlOWRlNGU0NTBkYWRhMTVmOTY0ZGFkMGExMGQuLjU3OGM5MzM2OGU2YmM0MTVkOGM4MjFlYjlh
MjNjOTkwZGJjNGUwYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtOTM3LDEwICs5MzcsNiBAQAogCQk1MTBGQkI5QjEyODhDOTVFMDBB
RkZERjQgLyogV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRkJCOTkxMjg4Qzk1RTAwQUZGREY0IC8qIFdlYkNv
bnRleHRNZW51SXRlbURhdGEuaCAqLzsgfTsKIAkJNTExMEFFMEMxMzNDMTZDQjAwNzI3MTdBIC8q
IFdLSWNvbkRhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxMTBBRTBBMTMzQzE2Q0IwMDcyNzE3QSAvKiBXS0ljb25EYXRhYmFzZS5jcHAg
Ki87IH07CiAJCTUxMTBBRTBEMTMzQzE2Q0IwMDcyNzE3QSAvKiBXS0ljb25EYXRhYmFzZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExMEFFMEIxMzND
MTZDQjAwNzI3MTdBIC8qIFdLSWNvbkRhdGFiYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTExQjI0QTYxMzJFMDk1NzAwMDY1QTBDIC8qIFdl
Ykljb25EYXRhYmFzZVByb3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMUIyNEE0MTMyRTA5NTcwMDA2NUEwQyAvKiBXZWJJY29uRGF0YWJhc2VQ
cm94eS5jcHAgKi87IH07Ci0JCTUxMUIyNEE3MTMyRTA5NTcwMDA2NUEwQyAvKiBXZWJJY29uRGF0
YWJhc2VQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTExQjI0QTUxMzJFMDk1NzAwMDY1QTBDIC8qIFdlYkljb25EYXRhYmFzZVByb3h5LmggKi87
IH07Ci0JCTUxMUIyNEFBMTMyRTA5NzIwMDA2NUEwQyAvKiBXZWJJY29uRGF0YWJhc2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExQjI0QTgxMzJF
MDk3MjAwMDY1QTBDIC8qIFdlYkljb25EYXRhYmFzZS5jcHAgKi87IH07Ci0JCTUxMUIyNEFCMTMy
RTA5NzIwMDA2NUEwQyAvKiBXZWJJY29uRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUIyNEE5MTMyRTA5NzIwMDA2NUEwQyAvKiBXZWJJ
Y29uRGF0YWJhc2UuaCAqLzsgfTsKIAkJNTExRjdENDExRUIxQkNGNTAwRTQ3QjgzIC8qIFdlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTFGN0Q0MDFFQjFCQ0VFMDBFNDdCODMgLyogV2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnMuaCAqLzsgfTsKIAkJNTExRjdENDIxRUIxQkNGODAwRTQ3QjgzIC8qIFdlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMUY3RDNGMUVCMUJDRUUwMEU0N0I4MyAvKiBXZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycy5jcHAgKi87IH07CiAJCTUxMUY4QTdCMTM4QjQ2MDkwMEE5NUY0NCAvKiBT
ZWNJdGVtU2hpbUxpYnJhcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxMUY4QTc3MTM4QjQ2MDkwMEE5NUY0NCAvKiBTZWNJdGVtU2hpbUxpYnJhcnku
aCAqLzsgfTsKQEAgLTEwMjMsOCArMTAxOSw2IEBACiAJCTUxN0NGMEU0MTYzQTQ4NkMwMEMyOTUw
RSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3Q0YwRTIxNjNBNDg2QzAwQzI5NTBFIC8q
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi87IH07CiAJCTUxN0RENUJFMTgw
REE3RDMwMDgxNjYwQiAvKiBEYXRhYmFzZVByb2Nlc3NQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdERDVCQzE4MERBN0QzMDA4MTY2MEIg
LyogRGF0YWJhc2VQcm9jZXNzUHJveHkuY3BwICovOyB9OwogCQk1MTdERDVCRjE4MERBN0QzMDA4
MTY2MEIgLyogRGF0YWJhc2VQcm9jZXNzUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0RENUJEMTgwREE3RDMwMDgxNjYwQiAvKiBEYXRhYmFz
ZVByb2Nlc3NQcm94eS5oICovOyB9OwotCQk1MTgzNDU5MjEzNDUzMkU5MDA5MkI2OTYgLyogV2Vi
SWNvbkRhdGFiYXNlQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxODM0NTkwMTM0NTMyRTgwMDkyQjY5NiAvKiBXZWJJY29uRGF0YWJhc2VD
bGllbnQuY3BwICovOyB9OwotCQk1MTgzNDU5MzEzNDUzMkU5MDA5MkI2OTYgLyogV2ViSWNvbkRh
dGFiYXNlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTgzNDU5MTEzNDUzMkU4MDA5MkI2OTYgLyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50Lmgg
Ki87IH07CiAJCTUxODNEREVDMTYzMEJERkMwMDhCRTVDNyAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTEwNUIwRDQxNjJGN0E3QTAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAg
Ki87IH07CiAJCTUxODcxQjVCMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg3MUI1OTEy
N0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuY3BwICovOyB9OwogCQk1MTg3MUI1QzEy
N0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODcxQjVBMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJD
b250ZXh0TWVudS5oICovOyB9OwpAQCAtMTA2MCwxMCArMTA1NCw2IEBACiAJCTUxQ0QxQzY1MUIz
NEI5RDQwMDE0MkNBNSAvKiBXS1NlY3VyaXR5T3JpZ2luLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUNEMUM1RjFCMzRCOUM5MDAxNDJDQTUgLyogV0tT
ZWN1cml0eU9yaWdpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsg
fTsgfTsKIAkJNTFDRDFDNjYxQjM0QjlEQzAwMTQyQ0E1IC8qIFdLU2VjdXJpdHlPcmlnaW4ubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUNEMUM2MDFC
MzRCOUM5MDAxNDJDQTUgLyogV0tTZWN1cml0eU9yaWdpbi5tbSAqLzsgfTsKIAkJNTFDRDFDNjcx
QjM0QjlERjAwMTQyQ0E1IC8qIFdLU2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDRDFDNjExQjM0QjlDOTAwMTQy
Q0E1IC8qIFdLU2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oICovOyB9OwotCQk1MUQwMkY2NDEzMkVD
NUI5MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDAyRjYzMTMyRUM1Qjkw
MEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwotCQk1
MUQwMkY2QTEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlTWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDAyRjY3MTMyRUM3
MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VNZXNzYWdlcy5oICovOyB9OwotCQk1MUQwMkY2
QjEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMDJG
NjgxMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZVByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCAqLzsgfTsKLQkJNTFEMDJGNkMxMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFz
ZVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRDAyRjY5MTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94eU1l
c3NhZ2VzLmggKi87IH07CiAJCTUxRDEyNDIzMUU2RDM0QTEwMDJCMjgyMCAvKiBXZWJVUkxTY2hl
bWVUYXNrUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFEMTI0MjExRTZEMzQ5QTAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZVRhc2tQcm94eS5j
cHAgKi87IH07CiAJCTUxRDEyNDI4MUU2RDNGNUQwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5k
bGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
RDEyNDI0MUU2RDNDQzMwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyLmNwcCAqLzsgfTsK
IAkJNTFEMTI0MkMxRTZENDFGRDAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQy
QTFFNkQ0MUJDMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcCAqLzsgfTsK
QEAgLTMxODYsMTAgKzMxNzYsNiBAQAogCQk1MTBGQkI5OTEyODhDOTVFMDBBRkZERjQgLyogV2Vi
Q29udGV4dE1lbnVJdGVtRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJDb250ZXh0TWVudUl0ZW1EYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
MTBBRTBBMTMzQzE2Q0IwMDcyNzE3QSAvKiBXS0ljb25EYXRhYmFzZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0ljb25EYXRhYmFzZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxMTBBRTBCMTMzQzE2Q0IwMDcyNzE3QSAvKiBXS0ljb25EYXRh
YmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0ljb25EYXRhYmFzZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTFCMjRBNDEzMkUwOTU3MDAwNjVBMEMg
LyogV2ViSWNvbkRhdGFiYXNlUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gV2ViSWNvbkRhdGFiYXNlUHJveHkuY3BwOyBwYXRoID0gSWNvbkRhdGFiYXNlL1dl
Ykljb25EYXRhYmFzZVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTEx
QjI0QTUxMzJFMDk1NzAwMDY1QTBDIC8qIFdlYkljb25EYXRhYmFzZVByb3h5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkljb25EYXRhYmFzZVByb3h5Lmg7IHBhdGggPSBJ
Y29uRGF0YWJhc2UvV2ViSWNvbkRhdGFiYXNlUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNTExQjI0QTgxMzJFMDk3MjAwMDY1QTBDIC8qIFdlYkljb25EYXRhYmFzZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJY29uRGF0YWJhc2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTFCMjRBOTEzMkUwOTcyMDAwNjVBMEMg
LyogV2ViSWNvbkRhdGFiYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
Ykljb25EYXRhYmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTFGN0QzRjFF
QjFCQ0VFMDBFNDdCODMgLyogV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTFGN0Q0MDFFQjFCQ0VFMDBFNDdC
ODMgLyogV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTExRjhBNzcxMzhCNDYwOTAwQTk1RjQ0IC8qIFNlY0l0ZW1TaGltTGli
cmFyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTZWNJdGVtU2hpbUxpYnJh
cnkuaDsgcGF0aCA9IC4uLy4uL1dlYlByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltTGlicmFyeS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzI3MCwxMCArMzI1Niw3IEBACiAJCTUxN0NG
MEUyMTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdERDVCQzE4MERB
N0QzMDA4MTY2MEIgLyogRGF0YWJhc2VQcm9jZXNzUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gRGF0YWJhc2VQcm9jZXNzUHJveHkuY3BwOyBwYXRoID0gRGF0
YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTE3REQ1QkQxODBEQTdEMzAwODE2NjBCIC8qIERhdGFiYXNlUHJvY2Vzc1Byb3h5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERhdGFiYXNlUHJvY2Vzc1Byb3h5Lmg7
IHBhdGggPSBEYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJveHkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNTE4MzQ1OTAxMzQ1MzJFODAwOTJCNjk2IC8qIFdlYkljb25EYXRhYmFz
ZUNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJY29u
RGF0YWJhc2VDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTgzNDU5
MTEzNDUzMkU4MDA5MkI2OTYgLyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkljb25EYXRhYmFzZUNsaWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTgzQjM5MzEzNzlGODVDMDBFODc1NEUgLyogU2hpbS54Y2Nv
bmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBTaGltLnhjY29uZmlnOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTg0QkM0QTEzMkU5MDdBMDA2QjlFMjggLyogV2Vi
SWNvbkRhdGFiYXNlLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkljb25E
YXRhYmFzZS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4NzFC
NTkxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvbnRleHRNZW51LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTE4NzFCNUExMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbnRleHRNZW51Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxOEFDQUU5MTJBRUU2QkIwMEIwNEI4MyAvKiBX
S1Byb3RlY3Rpb25TcGFjZVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLUHJvdGVjdGlvblNwYWNlVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTMzMTYsMTYgKzMyOTksMTIgQEAKIAkJNTFDMEM5NzkxRERENzg1NDAwMzJDQUQzIC8qIF9XS0xp
bmtJY29uUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tM
aW5rSWNvblBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDMEM5
N0ExRERENzg1NDAwMzJDQUQzIC8qIF9XS0xpbmtJY29uUGFyYW1ldGVycy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0xpbmtJY29uUGFyYW1ldGVycy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDMEM5N0IxRERENzg1NDAwMzJDQUQzIC8q
IF9XS0xpbmtJY29uUGFyYW1ldGVyc0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IF9XS0xpbmtJY29uUGFyYW1ldGVyc0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxQzhFMTlCMUYyMTYxNzIwMEJGNzMxQiAvKiBXZWJJY29uRGF0YWJh
c2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSWNvbkRhdGFiYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxQ0QxQzU5MUIzNDkzQTkwMDE0MkNBNSAvKiBXS1NlY3VyaXR5T3JpZ2lu
UmVmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLU2VjdXJpdHlP
cmlnaW5SZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUNEMUM1QTFCMzQ5
M0E5MDAxNDJDQTUgLyogV0tTZWN1cml0eU9yaWdpblJlZi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXS1NlY3VyaXR5T3JpZ2luUmVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxQ0QxQzVGMUIzNEI5QzkwMDE0MkNBNSAvKiBXS1NlY3VyaXR5T3JpZ2luLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU2VjdXJpdHlPcmlnaW4uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDRDFDNjAxQjM0QjlDOTAwMTQyQ0E1IC8qIFdL
U2VjdXJpdHlPcmlnaW4ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXS1NlY3VyaXR5T3JpZ2luLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUNE
MUM2MTFCMzRCOUM5MDAxNDJDQTUgLyogV0tTZWN1cml0eU9yaWdpbkludGVybmFsLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MUQwMkY2MzEzMkVDNUI5MDBCRUFBOTYgLyog
V2ViSWNvbkRhdGFiYXNlTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYkljb25EYXRhYmFzZU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxRDAyRjY1MTMyRUM2RDMwMEJFQUE5NiAvKiBXZWJJ
Y29uRGF0YWJhc2VQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBXZWJJ
Y29uRGF0YWJhc2VQcm94eS5tZXNzYWdlcy5pbjsgcGF0aCA9IEljb25EYXRhYmFzZS9XZWJJY29u
RGF0YWJhc2VQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NTFEMDJGNjcxMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZU1lc3NhZ2VzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkljb25EYXRhYmFzZU1lc3NhZ2VzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxRDAyRjY4MTMyRUM3MzcwMEJFQUE5NiAv
KiBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxRDAyRjY5MTMyRUM3MzcwMEJF
QUE5NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkljb25EYXRhYmFzZVByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMTI0MjExRTZEMzQ5QTAwMkIyODIwIC8qIFdlYlVSTFNj
aGVtZVRhc2tQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MUQxMjQyMjFFNkQzNDlBMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lVGFza1Byb3h5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlVSTFNjaGVtZVRhc2tQcm94eS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUQxMjQyNDFFNkQzQ0MzMDAyQjI4MjAgLyogV2Vi
VVJMU2NoZW1lSGFuZGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJVUkxTY2hlbWVIYW5kbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTYyNTksMTYgKzYyMzgsNiBAQAogCQkJcGF0aCA9IERhdGFiYXNlU2VydmljZTsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCTUxRkJCOUMxMTMyRTA3OTIwMEYzMjdCNCAvKiBJ
Y29uRGF0YWJhc2UgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAot
CQkJCTUxMUIyNEE0MTMyRTA5NTcwMDA2NUEwQyAvKiBXZWJJY29uRGF0YWJhc2VQcm94eS5jcHAg
Ki8sCi0JCQkJNTExQjI0QTUxMzJFMDk1NzAwMDY1QTBDIC8qIFdlYkljb25EYXRhYmFzZVByb3h5
LmggKi8sCi0JCQkJNTFEMDJGNjUxMzJFQzZEMzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZVBy
b3h5Lm1lc3NhZ2VzLmluICovLAotCQkJKTsKLQkJCW5hbWUgPSBJY29uRGF0YWJhc2U7Ci0JCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwogCQk1MzlCRDVCMjFEQURCMEJBMDBGMkU0RTEg
LyogY2FwdHVyZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBA
IC02NTY5LDcgKzY1MzgsNiBAQAogCQkJCUNENzNCQTNEMTMxQTJBMjEwMEVFREVEMiAvKiBGdWxs
U2NyZWVuICovLAogCQkJCTUxNUJFMTcyMUQ1M0ZEQjkwMEREN0M2OCAvKiBHYW1lcGFkICovLAog
CQkJCUJDMEU1RkNCMTJENjk2REQwMDEyQTcyQSAvKiBHZW9sb2NhdGlvbiAqLywKLQkJCQk1MUZC
QjlDMTEzMkUwNzkyMDBGMzI3QjQgLyogSWNvbkRhdGFiYXNlICovLAogCQkJCUJDMjA0RURGMTFD
ODNFNzIwMDhGMzM3NSAvKiBJbmplY3RlZEJ1bmRsZSAqLywKIAkJCQkzM0QzQTNCRDEzMzk2MDk4
MDA3MDlCRTQgLyogTWVkaWFDYWNoZSAqLywKIAkJCQk0QTQxMEY0MTE5QUY3QjI3MDAyRUJBQjUg
LyogTWVkaWFTdHJlYW0gKi8sCkBAIC02ODIzLDExICs2NzkxLDcgQEAKIAkJCQlCQzBFNjE1MjEy
RDZDQUM4MDAxMkE3MkEgLyogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4g
Ki8sCiAJCQkJQkMxQkUxRjExMkQ1NERCRDAwMDRBMjI4IC8qIFdlYkdlb2xvY2F0aW9uUHJvdmlk
ZXIuY3BwICovLAogCQkJCUJDMUJFMUYwMTJENTREQkQwMDA0QTIyOCAvKiBXZWJHZW9sb2NhdGlv
blByb3ZpZGVyLmggKi8sCi0JCQkJNTExQjI0QTgxMzJFMDk3MjAwMDY1QTBDIC8qIFdlYkljb25E
YXRhYmFzZS5jcHAgKi8sCi0JCQkJNTExQjI0QTkxMzJFMDk3MjAwMDY1QTBDIC8qIFdlYkljb25E
YXRhYmFzZS5oICovLAotCQkJCTUxODRCQzRBMTMyRTkwN0EwMDZCOUUyOCAvKiBXZWJJY29uRGF0
YWJhc2UubWVzc2FnZXMuaW4gKi8sCi0JCQkJNTE4MzQ1OTAxMzQ1MzJFODAwOTJCNjk2IC8qIFdl
Ykljb25EYXRhYmFzZUNsaWVudC5jcHAgKi8sCi0JCQkJNTE4MzQ1OTExMzQ1MzJFODAwOTJCNjk2
IC8qIFdlYkljb25EYXRhYmFzZUNsaWVudC5oICovLAorCQkJCTUxQzhFMTlCMUYyMTYxNzIwMEJG
NzMxQiAvKiBXZWJJY29uRGF0YWJhc2UuaCAqLywKIAkJCQkxQzhFMjgzMzEyNzVENzM4MDBCQzdC
RDAgLyogV2ViSW5zcGVjdG9yUHJveHkuY3BwICovLAogCQkJCTFDOEUyODMyMTI3NUQ3MzgwMEJD
N0JEMCAvKiBXZWJJbnNwZWN0b3JQcm94eS5oICovLAogCQkJCTFDNzdDMTk1MTI4OEE4NzIwMDZB
NzQyRiAvKiBXZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbiAqLywKQEAgLTc4ODAsMTAgKzc4
NDQsNiBAQAogCQkJCUJDMEU2MDYwMTJENkJBOTEwMDEyQTcyQSAvKiBXZWJHZW9sb2NhdGlvbk1h
bmFnZXJNZXNzYWdlcy5oICovLAogCQkJCUJDMEU2MTgwMTJENkNCMUQwMDEyQTcyQSAvKiBXZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJQkMwRTYx
ODExMkQ2Q0IxRDAwMTJBNzJBIC8qIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5TWVzc2FnZXMu
aCAqLywKLQkJCQk1MUQwMkY2MzEzMkVDNUI5MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLywKLQkJCQk1MUQwMkY2NzEzMkVDNzM3MDBCRUFBOTYgLyogV2Vi
SWNvbkRhdGFiYXNlTWVzc2FnZXMuaCAqLywKLQkJCQk1MUQwMkY2ODEzMkVDNzM3MDBCRUFBOTYg
LyogV2ViSWNvbkRhdGFiYXNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAotCQkJCTUxRDAy
RjY5MTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VzLmggKi8s
CiAJCQkJNTEwNTIzNzcxQzczREE3MDAwNzk5M0NCIC8qIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVu
dE1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJNTEwNTIzNzgxQzczREE3MDAwNzk5M0NCIC8q
IFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudE1lc3NhZ2VzLmggKi8sCiAJCQkJNTEwNTIzNzIxQzcz
RDM3QjAwNzk5M0NCIC8qIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlck1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8sCkBAIC04NzE0LDExICs4Njc0LDYgQEAKIAkJCQlCQzFCRTFGMjEyRDU0REJEMDAwNEEy
MjggLyogV2ViR2VvbG9jYXRpb25Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ1MDM2
NzYxQkNFRDE5RjAwRTIwQkIzIC8qIFdlYkdlc3R1cmVFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTNBODhCMzMxQkM2RTlDRDAwQUJBNUMyIC8qIFdlYkhpdFRlc3RSZXN1bHREYXRhLmggaW4g
SGVhZGVycyAqLywKLQkJCQk1MTFCMjRBQjEzMkUwOTcyMDAwNjVBMEMgLyogV2ViSWNvbkRhdGFi
YXNlLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTgzNDU5MzEzNDUzMkU5MDA5MkI2OTYgLyogV2Vi
SWNvbkRhdGFiYXNlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MUQwMkY2QTEzMkVDNzM3
MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTUxMUIyNEE3MTMyRTA5NTcwMDA2NUEwQyAvKiBXZWJJY29uRGF0YWJhc2VQcm94eS5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJNTFEMDJGNkMxMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFz
ZVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0NERGRUIyMUU5RTc1MkYwMDM4
RDE5NiAvKiBXZWJJY29uVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTA1MjM3MDFD
NzM5RDQyMDA3OTkzQ0IgLyogV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MTA1MjM3QTFDNzNEQTc3MDA3OTkzQ0IgLyogV2ViSURCQ29ubmVjdGlvblRvQ2xp
ZW50TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApAQCAtOTM4OCw3ICs5MzQzLDcgQEAKIAkJCQlM
YXN0U3dpZnRVcGRhdGVDaGVjayA9IDA3MDA7CiAJCQkJTGFzdFVwZ3JhZGVDaGVjayA9IDA3MDA7
CiAJCQl9OwotCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDFERUI5MUIxMDg3MzNEQTUwMDEw
RTlDRCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIldlYktpdDIi
ICovOworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDFERUI5MUIxMDg3MzNEQTUwMDEwRTlD
RCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIldlYktpdCIgKi87
CiAJCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSAzLjIiOwogCQkJZGV2ZWxvcG1lbnRS
ZWdpb24gPSBFbmdsaXNoOwogCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDE7CkBAIC0xMDMx
MCwxMSArMTAyNjUsNiBAQAogCQkJCTJENTAzNjc1MUJDRUQxOUYwMEUyMEJCMyAvKiBXZWJHZXN0
dXJlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNBODhCMzYxQkM2RUFENTAwQUJBNUMy
IC8qIFdlYkhpdFRlc3RSZXN1bHREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzQTg4QjMw
MUJDNkU5OTcwMEFCQTVDMiAvKiBXZWJIaXRUZXN0UmVzdWx0RGF0YS5tbSBpbiBTb3VyY2VzICov
LAotCQkJCTUxMUIyNEFBMTMyRTA5NzIwMDA2NUEwQyAvKiBXZWJJY29uRGF0YWJhc2UuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJNTE4MzQ1OTIxMzQ1MzJFOTAwOTJCNjk2IC8qIFdlYkljb25EYXRh
YmFzZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MUQwMkY2NDEzMkVDNUI5MDBCRUFB
OTYgLyogV2ViSWNvbkRhdGFiYXNlTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTUxMUIyNEE2MTMyRTA5NTcwMDA2NUEwQyAvKiBXZWJJY29uRGF0YWJhc2VQcm94eS5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQk1MUQwMkY2QjEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRh
dGFiYXNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQ0REZF
QjMxRTlFNzUyRjAwMzhEMTk2IC8qIFdlYkljb25VdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLywK
IAkJCQk1MTA1MjM2RjFDNzM5RDQyMDA3OTkzQ0IgLyogV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMDUyMzc5MUM3M0RBNzcwMDc5OTNDQiAvKiBXZWJJ
REJDb25uZWN0aW9uVG9DbGllbnRNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0xMTE2Nyw3ICsxMTExNyw3IEBACiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9
IDA7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OwotCQkx
REVCOTFCMTA4NzMzREE1MDAxMEU5Q0QgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQ
QlhQcm9qZWN0ICJXZWJLaXQyIiAqLyA9IHsKKwkJMURFQjkxQjEwODczM0RBNTAwMTBFOUNEIC8q
IEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiV2ViS2l0IiAqLyA9IHsK
IAkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0g
KAogCQkJCTFERUI5MUIyMDg3MzNEQTUwMDEwRTlDRCAvKiBEZWJ1ZyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JY29uRGF0YWJhc2UvV2ViSWNvbkRhdGFiYXNlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ljb25EYXRhYmFzZS9XZWJJY29uRGF0
YWJhc2VQcm94eS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0MmVkZGQ2ZGMw
OWIzYmFjMTQ3ZTgzZTFjYjc2NDU5ODk4OTdiMzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ljb25EYXRhYmFz
ZS9XZWJJY29uRGF0YWJhc2VQcm94eS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDQgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJJY29uRGF0
YWJhc2VQcm94eS5oIgotCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIldl
Ykljb25EYXRhYmFzZU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2ViSWNvbkRhdGFiYXNlUHJveHlN
ZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNz
UHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViSWNvbkRhdGFiYXNlUHJveHk6On5XZWJJY29uRGF0
YWJhc2VQcm94eSgpCi17Ci19Ci0KLVdlYkljb25EYXRhYmFzZVByb3h5OjpXZWJJY29uRGF0YWJh
c2VQcm94eShXZWJQcm9jZXNzJiBwcm9jZXNzKQotICAgIDogbV9wcm9jZXNzKHByb2Nlc3MpCi17
Ci0gICAgbV9wcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSWNvbkRhdGFi
YXNlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOwotfQotCi1ib29sIFdlYklj
b25EYXRhYmFzZVByb3h5Ojppc0VuYWJsZWQoKSBjb25zdAotewotICAgIHJldHVybiBtX2lzRW5h
YmxlZDsKLX0KLQotdm9pZCBXZWJJY29uRGF0YWJhc2VQcm94eTo6c2V0RW5hYmxlZChib29sIGVu
YWJsZWQpCi17Ci0gICAgaWYgKGVuYWJsZWQgPT0gbV9pc0VuYWJsZWQpCi0gICAgICAgIHJldHVy
bjsKLSAgICAKLSAgICBtX2lzRW5hYmxlZCA9IGVuYWJsZWQ7Ci0gICAgc2V0R2xvYmFsSWNvbkRh
dGFiYXNlKGVuYWJsZWQgPyB0aGlzIDogMCk7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlUHJv
eHk6OnJldGFpbkljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCkKLXsKLSAgICBt
X3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJv
Y2Vzc1Byb3h5OjpSZXRhaW5JY29uRm9yUGFnZVVSTChwYWdlVVJMKSwgMCk7Ci19Ci0KLXZvaWQg
V2ViSWNvbkRhdGFiYXNlUHJveHk6OnJlbGVhc2VJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcm
IHBhZ2VVUkwpCi17Ci0gICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6UmVsZWFzZUljb25Gb3JQYWdlVVJMKHBhZ2VV
UkwpLCAwKTsKLX0KLQotSW1hZ2UqIFdlYkljb25EYXRhYmFzZVByb3h5OjpzeW5jaHJvbm91c0lj
b25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgY29uc3QgSW50U2l6ZSYgLypzaXpl
Ki8pCi17Ci0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdDsKLSAgICBpZiAoIW1fcHJvY2Vz
cy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViSWNvbkRh
dGFiYXNlOjpTeW5jaHJvbm91c0ljb25EYXRhRm9yUGFnZVVSTChwYWdlVVJMKSwgTWVzc2FnZXM6
OldlYkljb25EYXRhYmFzZTo6U3luY2hyb25vdXNJY29uRGF0YUZvclBhZ2VVUkw6OlJlcGx5KHJl
c3VsdCksIDApKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICAvLyBGSVhNRTogUmV0dXJu
IEltYWdlIGNyZWF0ZWQgd2l0aCB0aGUgYWJvdmUgZGF0YS4KLSAgICByZXR1cm4gMDsKLX0KLQot
Ci1TdHJpbmcgV2ViSWNvbkRhdGFiYXNlUHJveHk6OnN5bmNocm9ub3VzSWNvblVSTEZvclBhZ2VV
UkwoY29uc3QgU3RyaW5nJiAvKnBhZ2VVUkwqLykKLXsKLSAgICAvLyBGSVhNRTogVGhpcyBuZWVk
cyB0byBhc2sgdGhlIFVJIHByb2Nlc3MgZm9yIHRoZSBpY29uVVJMLCBidXQgaXQgY2FuJ3QgZG8g
c28gc3luY2hyb25vdXNseSBiZWNhdXNlIGl0IHdpbGwgc2xvdyBkb3duIHBhZ2UgbG9hZGluZy4K
LSAgICAvLyBUaGUgcGFydHMgaW4gV2ViQ29yZSB0aGF0IG5lZWQgdGhpcyBkYXRhIHdpbGwgaGF2
ZSB0byBiZSBjaGFuZ2VkIHRvIHdvcmsgYXN5Y25jaHJvbm91c2x5LgotICAgIHJldHVybiBTdHJp
bmcoKTsKLX0KLQotYm9vbCBXZWJJY29uRGF0YWJhc2VQcm94eTo6c3luY2hyb25vdXNJY29uRGF0
YUtub3duRm9ySWNvblVSTChjb25zdCBTdHJpbmcmIC8qaWNvblVSTCovKQotewotICAgIC8vIEZJ
WE1FOiBUaGlzIG5lZWRzIHRvIGFzayB0aGUgVUkgcHJvY2VzcyBmb3IgdGhlIGljb25VUkwsIGJ1
dCBpdCBjYW4ndCBkbyBzbyBzeW5jaHJvbm91c2x5IGJlY2F1c2UgaXQgd2lsbCBzbG93IGRvd24g
cGFnZSBsb2FkaW5nLgotICAgIC8vIFRoZSBwYXJ0cyBpbiBXZWJDb3JlIHRoYXQgbmVlZCB0aGlz
IGRhdGEgd2lsbCBoYXZlIHRvIGJlIGNoYW5nZWQgdG8gd29yayBhc3ljbmNocm9ub3VzbHkuCi0g
ICAgcmV0dXJuIGZhbHNlOwotfQotCi1JY29uTG9hZERlY2lzaW9uIFdlYkljb25EYXRhYmFzZVBy
b3h5OjpzeW5jaHJvbm91c0xvYWREZWNpc2lvbkZvckljb25VUkwoY29uc3QgU3RyaW5nJiAvKmlj
b25VUkwqLywgRG9jdW1lbnRMb2FkZXIqKQotewotICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRv
IGFzayB0aGUgVUkgcHJvY2VzcyBmb3IgdGhlIGljb25VUkwsIGJ1dCBpdCBjYW4ndCBkbyBzbyBz
eW5jaHJvbm91c2x5IGJlY2F1c2UgaXQgd2lsbCBzbG93IGRvd24gcGFnZSBsb2FkaW5nLgotICAg
IC8vIFRoZSBwYXJ0cyBpbiBXZWJDb3JlIHRoYXQgbmVlZCB0aGlzIGRhdGEgd2lsbCBoYXZlIHRv
IGJlIGNoYW5nZWQgdG8gd29yayBhc3ljbmNocm9ub3VzbHkuCi0gICAgcmV0dXJuIEljb25Mb2Fk
Tm87Ci19Ci0KLWJvb2wgV2ViSWNvbkRhdGFiYXNlUHJveHk6OnN1cHBvcnRzQXN5bmNocm9ub3Vz
TW9kZSgpCi17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlUHJv
eHk6OmxvYWREZWNpc2lvbkZvckljb25VUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBXZWJDb3Jl
OjpJY29uTG9hZERlY2lzaW9uQ2FsbGJhY2smIGNhbGxiYWNrKQotewotICAgIHVpbnQ2NF90IGlk
ID0gY2FsbGJhY2suY2FsbGJhY2tJRCgpOwotICAgIG1faWNvbkxvYWREZWNpc2lvbkNhbGxiYWNr
cy5hZGQoaWQsICZjYWxsYmFjayk7Ci0gICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkljb25EYXRhYmFzZTo6R2V0TG9hZERlY2lzaW9uRm9y
SWNvblVSTChpY29uVVJMLCBpZCksIDApOwotfQotCi12b2lkIFdlYkljb25EYXRhYmFzZVByb3h5
OjpyZWNlaXZlZEljb25Mb2FkRGVjaXNpb24oaW50IGRlY2lzaW9uLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQotewotICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9pY29uTG9hZERlY2lzaW9uQ2FsbGJh
Y2tzLnRha2UoY2FsbGJhY2tJRCkpCi0gICAgICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2so
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6SWNvbkxvYWREZWNpc2lvbj4oZGVjaXNpb24pKTsKLX0KLQot
dm9pZCBXZWJJY29uRGF0YWJhc2VQcm94eTo6aWNvbkRhdGFGb3JJY29uVVJMKGNvbnN0IFN0cmlu
ZyYsIFdlYkNvcmU6Okljb25EYXRhQ2FsbGJhY2smKQotewotfQotCi12b2lkIFdlYkljb25EYXRh
YmFzZVByb3h5OjpzZXRJY29uVVJMRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNv
bnN0IFN0cmluZyYgcGFnZVVSTCkKLXsKLSAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSWNvbkRhdGFiYXNlOjpTZXRJY29uVVJMRm9yUGFn
ZVVSTChpY29uVVJMLCBwYWdlVVJMKSwgMCk7Ci19Ci0KLXZvaWQgV2ViSWNvbkRhdGFiYXNlUHJv
eHk6OnNldEljb25EYXRhRm9ySWNvblVSTChTaGFyZWRCdWZmZXIqIGljb25EYXRhLCBjb25zdCBT
dHJpbmcmIGljb25VUkwpCi17Ci0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaWNvbkRhdGEgPyBpY29uRGF0YS0+ZGF0YSgpIDogbnVs
bHB0ciksIGljb25EYXRhID8gaWNvbkRhdGEtPnNpemUoKSA6IDApOwotICAgIG1fcHJvY2Vzcy5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJY29uRGF0YWJhc2U6
OlNldEljb25EYXRhRm9ySWNvblVSTChkYXRhLCBpY29uVVJMKSwgMCk7Ci19Ci0KLXZvaWQgV2Vi
SWNvbkRhdGFiYXNlUHJveHk6OnVybEltcG9ydEZpbmlzaGVkKCkKLXsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSWNvbkRh
dGFiYXNlL1dlYkljb25EYXRhYmFzZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SWNvbkRhdGFiYXNlL1dlYkljb25EYXRhYmFzZVByb3h5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDBhMjBkMzQ0M2MwNzNiMGU3MWE1NzQwOGQxNDViZjdiMjA5ZDJhYTEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0ljb25EYXRhYmFzZS9XZWJJY29uRGF0YWJhc2VQcm94eS5oCisrKyAvZGV2L251
bGwKQEAgLTEsNzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVk
ZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCi0jaW5jbHVkZSA8
V2ViQ29yZS9JY29uRGF0YWJhc2VCYXNlLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJQ
cm9jZXNzOwotCi1jbGFzcyBXZWJJY29uRGF0YWJhc2VQcm94eSBmaW5hbCA6IHB1YmxpYyBXZWJD
b3JlOjpJY29uRGF0YWJhc2VCYXNlLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKLXB1
YmxpYzoKLSAgICBleHBsaWNpdCBXZWJJY29uRGF0YWJhc2VQcm94eShXZWJQcm9jZXNzJik7Ci0g
ICAgdmlydHVhbCB+V2ViSWNvbkRhdGFiYXNlUHJveHkoKTsKLQotICAgIHZvaWQgc2V0RW5hYmxl
ZChib29sKSBmaW5hbDsKLQotcHJpdmF0ZToKLSAgICBib29sIGlzRW5hYmxlZCgpIGNvbnN0IGZp
bmFsOwotCi0gICAgdm9pZCByZXRhaW5JY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmKSBmaW5h
bDsKLSAgICB2b2lkIHJlbGVhc2VJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmKSBmaW5hbDsK
LSAgICB2b2lkIHNldEljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYpIGZpbmFsOwotICAgIHZvaWQgc2V0SWNvbkRhdGFGb3JJY29uVVJMKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYpIGZpbmFsOwotCi0gICAgU3RyaW5nIHN5bmNocm9ub3Vz
SWNvblVSTEZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgYm9vbCBzeW5jaHJv
bm91c0ljb25EYXRhS25vd25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAgIFdl
YkNvcmU6Okljb25Mb2FkRGVjaXNpb24gc3luY2hyb25vdXNMb2FkRGVjaXNpb25Gb3JJY29uVVJM
KGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgZmluYWw7Ci0gICAgV2Vi
Q29yZTo6SW1hZ2UqIHN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYpIGZpbmFsOwotICAgIAotICAgIGJvb2wgc3VwcG9ydHNBc3lu
Y2hyb25vdXNNb2RlKCkgZmluYWw7Ci0gICAgdm9pZCBsb2FkRGVjaXNpb25Gb3JJY29uVVJMKGNv
bnN0IFN0cmluZyYsIFdlYkNvcmU6Okljb25Mb2FkRGVjaXNpb25DYWxsYmFjayYpIGZpbmFsOwot
ICAgIHZvaWQgcmVjZWl2ZWRJY29uTG9hZERlY2lzaW9uKGludCBkZWNpc2lvbiwgdWludDY0X3Qg
Y2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBpY29uRGF0YUZvckljb25VUkwoY29uc3QgU3RyaW5nJiwg
V2ViQ29yZTo6SWNvbkRhdGFDYWxsYmFjayYpIGZpbmFsOwotCi0gICAgLy8gSVBDOjpNZXNzYWdl
UmVjZWl2ZXIKLSAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYpIGZpbmFsOwotICAgIAotICAgIC8vIENhbGxiYWNrcyBmcm9tIHRoZSBVSVBy
b2Nlc3MKLSAgICB2b2lkIHVybEltcG9ydEZpbmlzaGVkKCk7Ci0KLSAgICBib29sIG1faXNFbmFi
bGVkIHsgZmFsc2UgfTsKLSAgICBXZWJQcm9jZXNzJiBtX3Byb2Nlc3M7Ci0gICAgCi0gICAgSGFz
aE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkNvcmU6Okljb25Mb2FkRGVjaXNpb25DYWxsYmFjaz4+
IG1faWNvbkxvYWREZWNpc2lvbkNhbGxiYWNrczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ljb25EYXRhYmFzZS9XZWJJ
Y29uRGF0YWJhc2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
Y29uRGF0YWJhc2UvV2ViSWNvbkRhdGFiYXNlUHJveHkubWVzc2FnZXMuaW4KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDA0OWEwZDkxODQ2YTY4MzBjOGVkMTk1ZDNhMzUwYjZkOGI4YjE4
NjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0ljb25EYXRhYmFzZS9XZWJJY29uRGF0YWJhc2VQcm94eS5tZXNz
YWdlcy5pbgorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLQotbWVzc2FnZXMgLT4gV2ViSWNvbkRhdGFiYXNlUHJveHkg
ewotICAgIFVSTEltcG9ydEZpbmlzaGVkKCkKLSAgICBSZWNlaXZlZEljb25Mb2FkRGVjaXNpb24o
aW50IGxvYWREZWNpc2lvbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKLX0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCmluZGV4IDVjMjRkMDI0NmUyNTc3ZjY4MDlkOTcxZTY3MjM5ZTEwYzJl
OGFiY2IuLjM4MTk0MjY3YmM3OGU0NDA0MjlhZjEzM2QzZjExYWEwYjI5OTA2MjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtNDgsNyArNDgsNiBAQAogI2luY2x1ZGUgIldl
YkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyLmgiCi0jaW5jbHVkZSAiV2ViSWNvbkRhdGFiYXNlTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAi
V2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cFByb3h5LmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZjYxYjc3Mzk2MjA1ZDlhYjMzNjQ1MzdlN2Yz
ZjJlNDJkMDE5ZDNhMS4uM2VjNDNiMmFkYjJmMDQyNTJhZGEzMzE4NjM1NjRjZDFhNjg0OWEzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNTEsNyArNTEsNiBA
QAogI2luY2x1ZGUgIldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJXZWJH
YW1lcGFkUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbk1hbmFnZXIuaCIKLSNp
bmNsdWRlICJXZWJJY29uRGF0YWJhc2VQcm94eS5oIgogI2luY2x1ZGUgIldlYkxvYWRlclN0cmF0
ZWd5LmgiCiAjaW5jbHVkZSAiV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUg
IldlYk1lbW9yeVNhbXBsZXIuaCIKQEAgLTg4LDcgKzg3LDYgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L0dDQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR2x5cGhQYWdlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9IVE1MTWVkaWFFbGVtZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JY29uRGF0
YWJhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NV2luZG93Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CkBAIC0xNjMs
NyArMTYxLDYgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAgICAgLCBtX3ZpZXdVcGRhdGVE
aXNwYXRjaGVyKFZpZXdVcGRhdGVEaXNwYXRjaGVyOjpjcmVhdGUoKSkKICNlbmRpZgogICAgICwg
bV93ZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyKFdlYkluc3BlY3RvckludGVycnVwdERp
c3BhdGNoZXI6OmNyZWF0ZSgpKQotICAgICwgbV9pY29uRGF0YWJhc2VQcm94eSgqbmV3IFdlYklj
b25EYXRhYmFzZVByb3h5KCp0aGlzKSkKICAgICAsIG1fd2ViTG9hZGVyU3RyYXRlZ3koKm5ldyBX
ZWJMb2FkZXJTdHJhdGVneSkKICAgICAsIG1fZG5zUHJlZmV0Y2hIeXN0ZXJlcmlzKFt0aGlzXShI
eXN0ZXJlc2lzU3RhdGUgc3RhdGUpIHsgaWYgKHN0YXRlID09IEh5c3RlcmVzaXNTdGF0ZTo6U3Rv
cHBlZCkgbV9kbnNQcmVmZXRjaGVkSG9zdHMuY2xlYXIoKTsgfSkKICNpZiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkKQEAgLTMwMCwxMCArMjk3LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0
aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cykKICAgICBhdXRvJiBkYXRhYmFzZU1hbmFnZXIgPSBEYXRhYmFzZU1hbmFnZXI6OnNpbmdsZXRv
bigpOwogICAgIGRhdGFiYXNlTWFuYWdlci5pbml0aWFsaXplKHBhcmFtZXRlcnMud2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnkpOwogCi0jaWYgRU5BQkxFKElDT05EQVRBQkFTRSkKLSAgICBtX2ljb25E
YXRhYmFzZVByb3h5LnNldEVuYWJsZWQocGFyYW1ldGVycy5pY29uRGF0YWJhc2VFbmFibGVkKTsK
LSNlbmRpZgotCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGNvbnN0cnVjdGVkIHBlciBk
YXRhIHN0b3JlLCBub3QgcGVyIHByb2Nlc3MuCiAgICAgbV9hcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZSA9IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjcmVhdGUocGFyYW1ldGVycy5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRp
cmVjdG9yeU5hbWUpOwogI2lmIFBMQVRGT1JNKElPUykKQEAgLTEwMTUsMTIgKzEwMDgsNiBAQCB2
b2lkIFdlYlByb2Nlc3M6OmdldFdlYkNvcmVTdGF0aXN0aWNzKHVpbnQ2NF90IGNhbGxiYWNrSUQp
CiAgICAgZGF0YS5zdGF0aXN0aWNzTnVtYmVycy5zZXQoQVNDSUlMaXRlcmFsKCJGYXN0TWFsbG9j
Q29tbWl0dGVkVk1CeXRlcyIpLCBmYXN0TWFsbG9jU3RhdGlzdGljcy5jb21taXR0ZWRWTUJ5dGVz
KTsKICAgICBkYXRhLnN0YXRpc3RpY3NOdW1iZXJzLnNldChBU0NJSUxpdGVyYWwoIkZhc3RNYWxs
b2NGcmVlTGlzdEJ5dGVzIiksIGZhc3RNYWxsb2NTdGF0aXN0aWNzLmZyZWVMaXN0Qnl0ZXMpOwog
ICAgIAotICAgIC8vIEdhdGhlciBpY29uIHN0YXRpc3RpY3MuCi0gICAgZGF0YS5zdGF0aXN0aWNz
TnVtYmVycy5zZXQoQVNDSUlMaXRlcmFsKCJJY29uUGFnZVVSTE1hcHBpbmdDb3VudCIpLCBpY29u
RGF0YWJhc2UoKS5wYWdlVVJMTWFwcGluZ0NvdW50KCkpOwotICAgIGRhdGEuc3RhdGlzdGljc051
bWJlcnMuc2V0KEFTQ0lJTGl0ZXJhbCgiSWNvblJldGFpbmVkUGFnZVVSTENvdW50IiksIGljb25E
YXRhYmFzZSgpLnJldGFpbmVkUGFnZVVSTENvdW50KCkpOwotICAgIGRhdGEuc3RhdGlzdGljc051
bWJlcnMuc2V0KEFTQ0lJTGl0ZXJhbCgiSWNvblJlY29yZENvdW50IiksIGljb25EYXRhYmFzZSgp
Lmljb25SZWNvcmRDb3VudCgpKTsKLSAgICBkYXRhLnN0YXRpc3RpY3NOdW1iZXJzLnNldChBU0NJ
SUxpdGVyYWwoIkljb25zV2l0aERhdGFDb3VudCIpLCBpY29uRGF0YWJhc2UoKS5pY29uUmVjb3Jk
Q291bnRXaXRoRGF0YSgpKTsKLSAgICAKICAgICAvLyBHYXRoZXIgZm9udCBzdGF0aXN0aWNzLgog
ICAgIGF1dG8mIGZvbnRDYWNoZSA9IEZvbnRDYWNoZTo6c2luZ2xldG9uKCk7CiAgICAgZGF0YS5z
dGF0aXN0aWNzTnVtYmVycy5zZXQoQVNDSUlMaXRlcmFsKCJDYWNoZWRGb250RGF0YUNvdW50Iiks
IGZvbnRDYWNoZS5mb250Q291bnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aAppbmRleCBjYTIzZTZmZmFhMzY2ZjZiNTdhMDFjZGEyMWQwZGQ2OWI3ZTU3ODk2Li4wNmVkMTA0
ODYzNDA1OTk5YTcxODE0YThjMTUyYzdjOThhNzExY2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmgKQEAgLTgyLDcgKzgyLDYgQEAgY2xhc3MgV2F5bGFuZENvbXBvc2l0b3JE
aXNwbGF5OwogY2xhc3MgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTsKIGNsYXNzIFdlYkNvbm5l
Y3Rpb25Ub1VJUHJvY2VzczsKIGNsYXNzIFdlYkZyYW1lOwotY2xhc3MgV2ViSWNvbkRhdGFiYXNl
UHJveHk7CiBjbGFzcyBXZWJMb2FkZXJTdHJhdGVneTsKIGNsYXNzIFdlYlBhZ2U7CiBjbGFzcyBX
ZWJQYWdlR3JvdXBQcm94eTsKQEAgLTM3Niw4ICszNzUsNiBAQCBwcml2YXRlOgogCiAgICAgVGV4
dENoZWNrZXJTdGF0ZSBtX3RleHRDaGVja2VyU3RhdGU7CiAKLSAgICBXZWJJY29uRGF0YWJhc2VQ
cm94eSYgbV9pY29uRGF0YWJhc2VQcm94eTsKLQogICAgIHZvaWQgZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCk7CiAgICAgUmVmUHRyPE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbj4gbV9u
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb247CiAgICAgV2ViTG9hZGVyU3RyYXRlZ3kmIG1fd2ViTG9h
ZGVyU3RyYXRlZ3k7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>