<?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>51087</bug_id>
          
          <creation_ts>2010-12-14 19:02:49 -0800</creation_ts>
          <short_desc>WebKit2: Can&apos;t add files to an &lt;input type=file&gt;</short_desc>
          <delta_ts>2010-12-21 18:30:46 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>322441</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-14 19:02:49 -0800</bug_when>
    <thetext>WebKit2: Can&apos;t add files to an &lt;input type=file&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322442</commentid>
    <comment_count>1</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-14 19:03:01 -0800</bug_when>
    <thetext>&lt;rdar://problem/8668718&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322453</commentid>
    <comment_count>2</comment_count>
      <attachid>76618</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-14 19:27:13 -0800</bug_when>
    <thetext>Created attachment 76618
Patch to test (DO NOT REVIEW)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322470</commentid>
    <comment_count>3</comment_count>
      <attachid>76621</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-14 20:29:00 -0800</bug_when>
    <thetext>Created attachment 76621
Also a test! (DO NOT REVIEW)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322773</commentid>
    <comment_count>4</comment_count>
      <attachid>76683</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-15 13:06:14 -0800</bug_when>
    <thetext>Created attachment 76683
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322777</commentid>
    <comment_count>5</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-12-15 13:19:06 -0800</bug_when>
    <thetext>Attachment 76683 did not build on qt:
Build output: http://queues.webkit.org/results/7158046</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322781</commentid>
    <comment_count>6</comment_count>
      <attachid>76684</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-15 13:26:34 -0800</bug_when>
    <thetext>Created attachment 76684
Updated Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322788</commentid>
    <comment_count>7</comment_count>
      <attachid>76684</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-12-15 13:31:40 -0800</bug_when>
    <thetext>Comment on attachment 76684
Updated Patch

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

&gt; WebKit2/Scripts/webkit2/messages.py:420
&gt; +        &apos;WebKit::WebOpenPanelParameters::Data&apos;: &apos;&quot;WebOpenPanelParameters.h&quot;&apos;,

I don&apos;t think this is needed.

&gt; WebKit2/Shared/WebOpenPanelParameters.cpp:52
&gt; +{

I usually name the out parameter &quot;result&quot; here.

&gt; WebKit2/Shared/WebOpenPanelParameters.h:60
&gt; +    WebOpenPanelParameters(const Data&amp;);

Please make this explicit.

&gt; WebKitTools/MiniBrowser/mac/BrowserWindowController.m:540
&gt; +    printf(&quot;runOpenPanel callback\n&quot;);

Please remove this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322798</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-15 13:53:28 -0800</bug_when>
    <thetext>Landed in r74139.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325321</commentid>
    <comment_count>9</comment_count>
      <attachid>77177</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-21 18:30:46 -0800</bug_when>
    <thetext>Created attachment 77177
Tester</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76618</attachid>
            <date>2010-12-14 19:27:13 -0800</date>
            <delta_ts>2010-12-14 20:29:00 -0800</delta_ts>
            <desc>Patch to test (DO NOT REVIEW)</desc>
            <filename>testUpload.diff</filename>
            <type>text/plain</type>
            <size>70730</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NDA5NCkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzYgQEAKKzIwMTAtMTItMTQgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJLaXQy
OiBDYW4ndCBhZGQgZmlsZXMgdG8gYW4gPGlucHV0IHR5cGU9ZmlsZT4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMDg3CisKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdDIvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQmFzZS5o
OgorICAgICAgICAqIFNoYXJlZC9BUElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViT3Bl
blBhbmVsUGFyYW1ldGVycy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJPcGVuUGFu
ZWxQYXJhbWV0ZXJzOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJPcGVuUGFuZWxQYXJh
bWV0ZXJzOjpXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViT3Bl
blBhbmVsUGFyYW1ldGVyczo6fldlYk9wZW5QYW5lbFBhcmFtZXRlcnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzOjpEYXRhOjplbmNvZGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzOjpEYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFNo
YXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJPcGVuUGFuZWxQYXJhbWV0ZXJzOjphbGxvd011bHRpcGxlRmlsZXMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzOjp0eXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVs
UGFyYW1ldGVycy5jcHA6IEFkZGVkLgorICAgICAgICAoV0tPcGVuUGFuZWxQYXJhbWV0ZXJzR2V0
VHlwZUlEKToKKyAgICAgICAgKFdLT3BlblBhbmVsUGFyYW1ldGVyc0dldEFsbG93c011bHRpcGxl
RmlsZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFBhcmFtZXRlcnMu
aDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJHZXRU
eXBlSUQpOgorICAgICAgICAoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNob29zZUZpbGVzKToK
KyAgICAgICAgKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDYW5jZWwpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmg6IEFkZGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V2ViS2l0Mi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHA6CisgICAg
ICAgIChRV0tQYWdlOjpRV0tQYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6fldl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpjaG9vc2VGaWxlcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmNhbmNlbCk6CisgICAgICAgIChXZWJL
aXQ6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmludmFsaWRhdGUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5Lmg6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5Ojp0eXBl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpydW5PcGVuUGFuZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkaWRDYW5jZWxGb3JPcGVuUGFuZWwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVSUNsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlVJQ2xpZW50OjpydW5PcGVuUGFuZWwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJV
SUNsaWVudC5oOgorICAgICAgICAqIFdlYktpdDIucHJvOgorICAgICAgICAqIFdlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVu
dDo6cnVuT3BlblBhbmVsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyOjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyOjp+V2ViT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcjo6ZGlk
Q2hvb3NlRmlsZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXI6OmRpc2Nvbm5lY3RGcm9tUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjbG9zZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEFjdGl2ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRDYW5jZWxGb3JPcGVuUGFuZWwpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmFjdGl2ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi52
Y3Byb2o6CisgICAgICAgICogd2luL1dlYktpdDJHZW5lcmF0ZWQubWFrZToKKwogMjAxMC0xMi0x
NCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBX
aW5kb3dzIGJ1aWxkLgpJbmRleDogV2ViS2l0Mi9XZWJLaXQyLnBybwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL1dlYktpdDIucHJvCShyZXZpc2lvbiA3NDAwMCkKKysrIFdlYktpdDIvV2ViS2l0Mi5w
cm8JKHdvcmtpbmcgY29weSkKQEAgLTI1OSw2ICsyNTksNyBAQCBIRUFERVJTICs9IFwKICAgICBT
aGFyZWQvV2ViRmluZE9wdGlvbnMuaCBcCiAgICAgU2hhcmVkL1dlYk5hdmlnYXRpb25EYXRhU3Rv
cmUuaCBcCiAgICAgU2hhcmVkL1dlYk51bWJlci5oIFwKKyAgICBTaGFyZWQvV2ViT3BlblBhbmVs
UGFyYW1ldGVycy5oIFwKICAgICBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIFwK
ICAgICBTaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5oIFwKICAgICBTaGFyZWQvV2ViUG9wdXBJdGVt
LmggXApAQCAtMjg1LDYgKzI4Niw4IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJvY2Vzcy9BUEkv
Qy9XS0ZyYW1lLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVuZXIu
aCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmggXAorICAgIFVJUHJvY2Vzcy9B
UEkvQy9XS09wZW5QYW5lbFBhcmFtZXRlcnMuaCBcCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXIuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlv
bkRhdGEuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oIFwKICAgICBVSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlR3JvdXAuaCBcCkBAIC0zNDIsNiArMzQ1LDcgQEAgSEVBREVSUyArPSBcCiAg
ICAgVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5oIFwKICAgICBVSVByb2Nlc3MvV2ViTmF2aWdh
dGlvbkRhdGEuaCBcCiAgICAgVUlQcm9jZXNzL1dlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5oIFwK
KyAgICBVSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oIFwKICAgICBV
SVByb2Nlc3MvV2ViUGFnZUdyb3VwLmggXAogICAgIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBc
CiAgICAgVUlQcm9jZXNzL1dlYlBvbGljeUNsaWVudC5oIFwKQEAgLTQwNSw2ICs0MDksNyBAQCBI
RUFERVJTICs9IFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRWRpdENvbW1hbmQuaCBcCiAg
ICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmggXAogICAgIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJJbnNwZWN0b3IuaCBcCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyLmggXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggXAogICAg
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5oIFwKICAgICBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaCBcCkBAIC00NTQsNiArNDU5LDcgQEAgU09VUkNFUyArPSBcCiAgICAgU2hh
cmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAgXAogICAgIFNoYXJlZC9XZWJLZXlib2FyZEV2ZW50
LmNwcCBcCiAgICAgU2hhcmVkL1dlYk1vdXNlRXZlbnQuY3BwIFwKKyAgICBTaGFyZWQvV2ViT3Bl
blBhbmVsUGFyYW1ldGVycy5jcHAgXAogICAgIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcCBcCiAgICAgU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuY3BwIFwKICAgICBTaGFyZWQv
V2ViUGxhdGZvcm1Ub3VjaFBvaW50LmNwcCBcCkBAIC00ODMsNiArNDg5LDggQEAgU09VUkNFUyAr
PSBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJ
L0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLSW5z
cGVjdG9yLmNwcCBcCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUGFyYW1ldGVycy5j
cHAgXAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcCBc
CiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkRhdGEuY3BwIFwKICAgICBVSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNw
cCBcCkBAIC01MzIsNiArNTQwLDcgQEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9jZXNzL1dlYkxv
YWRlckNsaWVudC5jcHAgXAogICAgIFVJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uRGF0YS5jcHAgXAog
ICAgIFVJUHJvY2Vzcy9XZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwIFwKKyAgICBVSVByb2Nl
c3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9X
ZWJQYWdlR3JvdXAuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBcCiAgICAg
VUlQcm9jZXNzL1dlYlBvbGljeUNsaWVudC5jcHAgXApAQCAtNjE0LDkgKzYyMywxMCBAQCBTT1VS
Q0VTICs9IFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRWRpdENvbW1hbmQuY3BwIFwKICAg
ICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yLmNwcCBcCi0gICAgV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dlYkluc3Bl
Y3RvclF0LmNwcCBcCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExp
c3RlbmVyLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIFwKICAgICBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuY3BwIFwKKyAgICBXZWJQcm9jZXNz
L1dlYlBhZ2UvcXQvV2ViSW5zcGVjdG9yUXQuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uv
cXQvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUXQuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBh
Z2UvcXQvVGlsZWREcmF3aW5nQXJlYVF0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL3F0
L1dlYlBhZ2VRdC5jcHAgXApJbmRleDogV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMucHkJKHJl
dmlzaW9uIDczOTg1KQorKysgV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMucHkJKHdv
cmtpbmcgY29weSkKQEAgLTI0OSw4ICsyNDksOCBAQCBkZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVj
bGFyYXRpb24obWVzc2FnCiAKIGRlZiBzdHJ1Y3Rfb3JfY2xhc3MobmFtZXNwYWNlLCB0eXBlKToK
ICAgICBzdHJ1Y3RzID0gZnJvemVuc2V0KFsKLSAgICAgICAgJ1dlYkNvcmU6OktleXByZXNzQ29t
bWFuZCcsCiAgICAgICAgICdXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZScsCisgICAgICAg
ICdXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQnLAogICAgICAgICAnV2ViQ29yZTo6UGx1Z2luSW5m
bycsCiAgICAgICAgICdXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cycsCiAgICAgICAgICdXZWJD
b3JlOjpXaW5kb3dGZWF0dXJlcycsCkBAIC0yNTgsNiArMjU4LDcgQEAgZGVmIHN0cnVjdF9vcl9j
bGFzcyhuYW1lc3BhY2UsIHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpQbGF0Zm9ybVBvcHVwTWVu
dURhdGEnLAogICAgICAgICAnV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
JywKICAgICAgICAgJ1dlYktpdDo6V2ViTmF2aWdhdGlvbkRhdGFTdG9yZScsCisgICAgICAgICdX
ZWJLaXQ6OldlYk9wZW5QYW5lbFBhcmFtZXRlcnM6OkRhdGEnLAogICAgICAgICAnV2ViS2l0OjpX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJywKICAgICAgICAgJ1dlYktpdDo6V2ViUHJlZmVyZW5j
ZXNTdG9yZScsCiAgICAgICAgICdXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMn
LApAQCAtNDExLDEzICs0MTIsMTQgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAKICAg
ICBzcGVjaWFsX2Nhc2VzID0gewogICAgICAgICAnV1RGOjpTdHJpbmcnOiAnPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPicsCisgICAgICAgICdXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZSc6ICc8
V2ViQ29yZS9FZGl0b3IuaD4nLAogICAgICAgICAnV2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kJzog
JzxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4nLAogICAgICAgICAnV2ViQ29yZTo6UGx1Z2luSW5m
byc6ICc8V2ViQ29yZS9QbHVnaW5EYXRhLmg+JywKLSAgICAgICAgJ1dlYkNvcmU6OkNvbXBvc2l0
aW9uVW5kZXJsaW5lJzogJzxXZWJDb3JlL0VkaXRvci5oPicsCiAgICAgICAgICdXZWJLaXQ6Oldl
YktleWJvYXJkRXZlbnQnOiAnIldlYkV2ZW50LmgiJywKICAgICAgICAgJ1dlYktpdDo6V2ViTW91
c2VFdmVudCc6ICciV2ViRXZlbnQuaCInLAotICAgICAgICAnV2ViS2l0OjpXZWJXaGVlbEV2ZW50
JzogJyJXZWJFdmVudC5oIicsCisgICAgICAgICdXZWJLaXQ6OldlYk9wZW5QYW5lbFBhcmFtZXRl
cnM6OkRhdGEnOiAnIldlYk9wZW5QYW5lbFBhcmFtZXRlcnMuaCInLAogICAgICAgICAnV2ViS2l0
OjpXZWJUb3VjaEV2ZW50JzogJyJXZWJFdmVudC5oIicsCisgICAgICAgICdXZWJLaXQ6OldlYldo
ZWVsRXZlbnQnOiAnIldlYkV2ZW50LmgiJywKICAgICB9CiAgICAgaWYgdHlwZSBpbiBzcGVjaWFs
X2Nhc2VzOgogICAgICAgICByZXR1cm4gW3NwZWNpYWxfY2FzZXNbdHlwZV1dCkluZGV4OiBXZWJL
aXQyL1NoYXJlZC9BUElPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9BUElP
YmplY3QuaAkocmV2aXNpb24gNzM5ODYpCisrKyBXZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksOCBAQCBwdWJsaWM6CiAgICAgICAgIFR5cGVGcmFt
ZVBvbGljeUxpc3RlbmVyLAogICAgICAgICBUeXBlSW5zcGVjdG9yLAogICAgICAgICBUeXBlTmF2
aWdhdGlvbkRhdGEsCisgICAgICAgIFR5cGVPcGVuUGFuZWxQYXJhbWV0ZXJzLAorICAgICAgICBU
eXBlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIsCiAgICAgICAgIFR5cGVQYWdlLAogICAgICAgICBU
eXBlUGFnZUdyb3VwLAogICAgICAgICBUeXBlUHJlZmVyZW5jZXMsCkluZGV4OiBXZWJLaXQyL1No
YXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1No
YXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIv
U2hhcmVkL1dlYk9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldlYk9wZW5QYW5lbFBhcmFtZXRlcnMuaCIK
KworI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworUGFzc1JlZlB0cjxXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzPiBXZWJPcGVuUGFuZWxQYXJh
bWV0ZXJzOjpjcmVhdGUoY29uc3QgRGF0YSYgZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMoZGF0YSkpOworfQorCitXZWJPcGVuUGFuZWxQYXJh
bWV0ZXJzOjpXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzKGNvbnN0IERhdGEmIGRhdGEpCisgICAgOiBt
X2RhdGEoZGF0YSkKK3sKK30KKworV2ViT3BlblBhbmVsUGFyYW1ldGVyczo6fldlYk9wZW5QYW5l
bFBhcmFtZXRlcnMoKQoreworfQorCit2b2lkIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnM6OkRhdGE6
OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0Cit7CisgICAg
ZW5jb2Rlci0+ZW5jb2RlKENvcmVJUEM6OkluKGFsbG93TXVsdGlwbGVGaWxlcywgYWxsb3dzRGly
ZWN0b3J5VXBsb2FkLCBhY2NlcHRUeXBlcywgZmlsZW5hbWVzKSk7Cit9CisKK2Jvb2wgV2ViT3Bl
blBhbmVsUGFyYW1ldGVyczo6RGF0YTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlciog
ZGVjb2RlciwgRGF0YSYgcGFyYW1ldGVycykKK3sKKyAgICByZXR1cm4gZGVjb2Rlci0+ZGVjb2Rl
KENvcmVJUEM6Ok91dChwYXJhbWV0ZXJzLmFsbG93TXVsdGlwbGVGaWxlcywgcGFyYW1ldGVycy5h
bGxvd3NEaXJlY3RvcnlVcGxvYWQsIHBhcmFtZXRlcnMuYWNjZXB0VHlwZXMsIHBhcmFtZXRlcnMu
ZmlsZW5hbWVzKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYktpdDIv
U2hhcmVkL1dlYk9wZW5QYW5lbFBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1No
YXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1No
YXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnNfaAorI2RlZmlu
ZSBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzX2gKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIENvcmVJUEMgeworICAgIGNsYXNzIEFyZ3VtZW50RGVjb2RlcjsKKyAgICBjbGFz
cyBBcmd1bWVudEVuY29kZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJP
cGVuUGFuZWxQYXJhbWV0ZXJzIDogcHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAgc3Rh
dGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVPcGVuUGFuZWxQYXJhbWV0ZXJzOworCisgICAg
c3RydWN0IERhdGEgeworICAgICAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29k
ZXIqKSBjb25zdDsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50
RGVjb2RlciosIERhdGEmKTsKKworICAgICAgICBib29sIGFsbG93TXVsdGlwbGVGaWxlczsKKyAg
ICAgICAgYm9vbCBhbGxvd3NEaXJlY3RvcnlVcGxvYWQ7CisgICAgICAgIFN0cmluZyBhY2NlcHRU
eXBlczsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gZmlsZW5hbWVzOworICAgIH07CisKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzPiBjcmVhdGUoY29uc3QgRGF0
YSYpOworICAgIH5XZWJPcGVuUGFuZWxQYXJhbWV0ZXJzKCk7CisKKyAgICBib29sIGFsbG93TXVs
dGlwbGVGaWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5hbGxvd011bHRpcGxlRmlsZXM7IH0g
CisKK3ByaXZhdGU6CisgICAgV2ViT3BlblBhbmVsUGFyYW1ldGVycyhjb25zdCBEYXRhJik7CisK
KyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KKworICAg
IERhdGEgbV9kYXRhOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBX
ZWJPcGVuUGFuZWxQYXJhbWV0ZXJzX2gKSW5kZXg6IFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFz
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCShyZXZpc2lv
biA3Mzk4NSkKKysrIFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC03Myw2ICs3Myw4IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLRnJhbWUqIFdL
RnIKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLRnJhbWVQb2xpY3lMaXN0ZW5lciogV0tG
cmFtZVBvbGljeUxpc3RlbmVyUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tJbnNw
ZWN0b3IqIFdLSW5zcGVjdG9yUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tOYXZp
Z2F0aW9uRGF0YSogV0tOYXZpZ2F0aW9uRGF0YVJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9w
YXF1ZVdLT3BlblBhbmVsUGFyYW1ldGVycyogV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmOwordHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciogV0tPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lclJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUGFn
ZSogV0tQYWdlUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQYWdlR3JvdXAqIFdL
UGFnZUdyb3VwUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQcmVmZXJlbmNlcyog
V0tQcmVmZXJlbmNlc1JlZjsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV2ViT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXJQcm94eS5oIgorCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5j
bHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpXZWJPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKKyAgICA6IG1fcGFn
ZShwYWdlKQoreworfQorCitXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5Ojp+V2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSgpCit7Cit9CisKK3ZvaWQgV2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXJQcm94eTo6Y2hvb3NlRmlsZXMoSW1tdXRhYmxlQXJyYXkqIGZpbGVVUkxzQXJy
YXkpCit7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIHNpemVfdCBz
aXplID0gZmlsZVVSTHNBcnJheS0+c2l6ZSgpOworCisgICAgVmVjdG9yPFN0cmluZz4gZmlsZVVS
THM7CisgICAgZmlsZVVSTHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKKworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIFdlYlVSTCogdXJsID0g
ZmlsZVVSTHNBcnJheS0+YXQ8V2ViVVJMPihpKTsKKyAgICAgICAgaWYgKHVybCkKKyAgICAgICAg
ICAgIGZpbGVVUkxzLnVuY2hlY2tlZEFwcGVuZCh1cmwtPnN0cmluZygpKTsKKyAgICB9CisKKyAg
ICBtX3BhZ2UtPmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGZpbGVVUkxzKTsKK30KKwordm9p
ZCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpjYW5jZWwoKQoreworICAgIGlmICgh
bV9wYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BhZ2UtPmRpZENhbmNlbEZvck9wZW5Q
YW5lbCgpOworfQorCit2b2lkIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmludmFs
aWRhdGUoKQoreworICAgIG1fcGFnZSA9IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyUHJveHkuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyUHJveHkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eV9oCisjZGVm
aW5lIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHlfaAorCisjaW5jbHVkZSAiQVBJT2Jq
ZWN0LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBJbW11dGFibGVBcnJheTsKK2NsYXNz
IFdlYlBhZ2VQcm94eTsKKworY2xhc3MgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSA6
IHB1YmxpYyBBUElPYmplY3QgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5
cGUgPSBUeXBlRnJhbWVQb2xpY3lMaXN0ZW5lcjsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk+IGNyZWF0ZShXZWJQYWdlUHJveHkqIHBhZ2Up
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYk9wZW5QYW5lbFJlc3VsdExp
c3RlbmVyUHJveHkocGFnZSkpOworICAgIH0KKworICAgIHZpcnR1YWwgfldlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyUHJveHkoKTsKKworICAgIHZvaWQgY2hvb3NlRmlsZXMoSW1tdXRhYmxlQXJy
YXkqKTsKKyAgICB2b2lkIGNhbmNlbCgpOworCisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisKK3By
aXZhdGU6CisgICAgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eShXZWJQYWdlUHJveHkq
KTsKKworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQor
CisgICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gbV9wYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5X2gKSW5k
ZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gNzQwMDApCisrKyBXZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0
Nyw3IEBACiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRlICJXZWJGb3JtU3VibWlzc2lv
bkxpc3RlbmVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHku
aCIKKyNpbmNsdWRlICJXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5o
IgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cERhdGEuaCIKQEAgLTEyNTEsNiArMTI1MiwxOSBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6cGFnZURpZFNjcm9sbCgpCiAgICAgbV91aUNsaWVudC5wYWdlRGlk
U2Nyb2xsKHRoaXMpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuT3BlblBhbmVsKHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFdlYk9wZW5QYW5lbFBhcmFtZXRlcnM6OkRhdGEmIGRhdGEpCit7
CisgICAgaWYgKG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIpIHsKKyAgICAgICAgbV9vcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0ZSgpOworICAgICAgICBtX29wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyID0gMDsKKyAgICB9CisKKyAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyID0g
V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6Y3JlYXRlKHRoaXMpOworCisgICAgaWYg
KCFtX3VpQ2xpZW50LnJ1bk9wZW5QYW5lbCh0aGlzLCBwcm9jZXNzKCktPndlYkZyYW1lKGZyYW1l
SUQpLCBkYXRhLCBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmdldCgpKSkKKyAgICAgICAgZGlk
Q2FuY2VsRm9yT3BlblBhbmVsKCk7Cit9CisKICNpZiBQTEFURk9STShRVCkKIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6
ZSkKIHsKQEAgLTE0MjMsNiArMTQzNywyOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGV4dE1l
bnVJdGVtU2VsZWN0CiAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRT
ZWxlY3RJdGVtRnJvbUFjdGl2ZUNvbnRleHRNZW51KGl0ZW0pLCBtX3BhZ2VJRCk7CiB9CiAKK3Zv
aWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZmlsZVVSTHMpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIEZJWE1FOiBUaGlzIGFsc28gbmVlZHMgdG8gc2VuZCBhIHNhbmRib3ggZXh0
ZW5zaW9uIGZvciB0aGVzZSBwYXRocy4KKyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGZpbGVVUkxzKSwgbV9wYWdlSUQpOwor
CisgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0ZSgpOworICAgIG1fb3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXIgPSAwOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2Fu
Y2VsRm9yT3BlblBhbmVsKCkKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDYW5jZWxGb3JP
cGVuUGFuZWwoKSwgbV9wYWdlSUQpOworICAgIAorICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXItPmludmFsaWRhdGUoKTsKKyAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyID0gMDsKK30K
Kwogdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1JlZlB0cjxXZWJF
ZGl0Q29tbWFuZFByb3h5PiBjb21tYW5kUHJveHksIFVuZG9PclJlZG8gdW5kb09yUmVkbykKIHsK
ICAgICBtX3BhZ2VDbGllbnQtPnJlZ2lzdGVyRWRpdENvbW1hbmQoY29tbWFuZFByb3h5LCB1bmRv
T3JSZWRvKTsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiA3NDAwMCkK
KysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC03
OCw2ICs3OCw3IEBAIGNsYXNzIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ7CiBjbGFzcyBQYWdlQ2xp
ZW50OwogY2xhc3MgUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBTdHJpbmdQYWlyVmVj
dG9yOworY2xhc3MgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdlYkJh
Y2tGb3J3YXJkTGlzdDsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW07CiBjbGFzcyBXZWJD
b250ZXh0TWVudVByb3h5OwpAQCAtMjY3LDggKzI2OCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRSZXNpemVzVG9Db250ZW50c1VzaW5nTGF5b3V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
Jik7CiAjZW5kaWYKIAorICAgIC8vIENhbGxlZCBieSB0aGUgV2ViQ29udGV4dE1lbnVQcm94eS4K
ICAgICB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRl
bURhdGEmKTsKIAorICAgIC8vIENhbGxlZCBieSB0aGUgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXJQcm94eS4KKyAgICB2b2lkIGRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+Jik7CisgICAgdm9pZCBkaWRDYW5jZWxGb3JPcGVuUGFuZWwoKTsKKwogICAgIFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgY3JlYXRpb25QYXJhbWV0ZXJzKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmKSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKFFUKQpAQCAtMzM1LDYgKzM0MSw4IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCB1aW50NjRfdCBmcmFtZUlELCBib29sJiBzaG91bGRDbG9zZSk7CiAgICAg
dm9pZCBkaWRDaGFuZ2VWaWV3cG9ydERhdGEoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVu
dHMmKTsKICAgICB2b2lkIHBhZ2VEaWRTY3JvbGwoKTsKKyAgICB2b2lkIHJ1bk9wZW5QYW5lbCh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzOjpEYXRhJik7CisK
ICNpZiBFTkFCTEUoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICB2b2lkIHBhZ2VEaWRSZXF1ZXN0
U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKICNlbmRpZgpAQCAtNDM1LDYgKzQ0Myw3
IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IG1fYWN0aXZlUG9w
dXBNZW51OwogICAgIFJlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBtX2FjdGl2ZUNvbnRleHRN
ZW51OworICAgIFJlZlB0cjxXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5PiBtX29wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyOwogCiAgICAgZG91YmxlIG1fZXN0aW1hdGVkUHJvZ3Jlc3M7CiAK
SW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlz
aW9uIDczOTg1KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94
eSB7CiAgICAgQ2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkgLT4gKGJvb2wgY2FuUnVu
KQogICAgIFJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChXVEY6OlN0cmluZyBtZXNzYWdlLCB1
aW50NjRfdCBmcmFtZUlEKSAtPiAoYm9vbCBzaG91bGRDbG9zZSkKICAgICBQYWdlRGlkU2Nyb2xs
KCkKKyAgICBSdW5PcGVuUGFuZWwodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpXZWJPcGVuUGFu
ZWxQYXJhbWV0ZXJzOjpEYXRhIHBhcmFtZXRlcnMpCisKICNpZiBFTkFCTEUoVElMRURfQkFDS0lO
R19TVE9SRSkKICAgICBQYWdlRGlkUmVxdWVzdFNjcm9sbChXZWJDb3JlOjpJbnRTaXplIGRlbHRh
KQogI2VuZGlmCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQuY3BwCShyZXZpc2lvbiA3Mzk4
NSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKICNp
bmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJOdW1iZXIuaCIKKyNpbmNsdWRlICJX
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lu
dFNpemUuaD4KQEAgLTI0NSw0ICsyNDYsMTQgQEAgdW5zaWduZWQgbG9uZyBsb25nIFdlYlVJQ2xp
ZW50OjpleGNlZWRlZAogICAgIHJldHVybiBtX2NsaWVudC5leGNlZWRlZERhdGFiYXNlUXVvdGEo
dG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkob3JpZ2luKSwgdG9BUEkoZGF0YWJhc2VO
YW1lLmltcGwoKSksIHRvQVBJKGRhdGFiYXNlRGlzcGxheU5hbWUuaW1wbCgpKSwgY3VycmVudFF1
b3RhLCBjdXJyZW50VXNhZ2UsIGV4cGVjdGVkVXNhZ2UsIG1fY2xpZW50LmNsaWVudEluZm8pOwog
fQogCitib29sIFdlYlVJQ2xpZW50OjpydW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5KiBwYWdlLCBX
ZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgV2ViT3BlblBhbmVsUGFyYW1ldGVyczo6RGF0YSYg
cGFyYW1ldGVyRGF0YSwgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSogbGlzdGVuZXIp
Cit7CisgICAgaWYgKCFtX2NsaWVudC5ydW5PcGVuUGFuZWwpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIFJlZlB0cjxXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzID0gV2Vi
T3BlblBhbmVsUGFyYW1ldGVyczo6Y3JlYXRlKHBhcmFtZXRlckRhdGEpOworICAgIG1fY2xpZW50
LnJ1bk9wZW5QYW5lbCh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShwYXJhbWV0ZXJz
LmdldCgpKSwgdG9BUEkobGlzdGVuZXIpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJVSUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlVJ
Q2xpZW50LmgJKHJldmlzaW9uIDczOTg1KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkFQSUNsaWVu
dC5oIgogI2luY2x1ZGUgIldLUGFnZS5oIgogI2luY2x1ZGUgIldlYkV2ZW50LmgiCisjaW5jbHVk
ZSAiV2ViT3BlblBhbmVsUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIApAQCAtNDUsNiArNDYsNyBAQCBjbGFzcyBOYXRp
dmVXZWJLZXlib2FyZEV2ZW50OwogY2xhc3MgV2ViRnJhbWVQcm94eTsKIGNsYXNzIFdlYlBhZ2VQ
cm94eTsKIGNsYXNzIFdlYlNlY3VyaXR5T3JpZ2luOworY2xhc3MgV2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJQcm94eTsKIAogY2xhc3MgV2ViVUlDbGllbnQgOiBwdWJsaWMgQVBJQ2xpZW50PFdL
UGFnZVVJQ2xpZW50PiB7CiBwdWJsaWM6CkBAIC04MCw2ICs4Miw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHBhZ2VEaWRTY3JvbGwoV2ViUGFnZVByb3h5Kik7CiAKICAgICB1bnNpZ25lZCBsb25nIGxv
bmcgZXhjZWVkZWREYXRhYmFzZVF1b3RhKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBX
ZWJTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJp
bmcmIGRhdGFiYXNlRGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50UXVvdGEs
IHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50VXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBleHBl
Y3RlZFVzYWdlKTsKKworICAgIGJvb2wgcnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSosIFdlYkZy
YW1lUHJveHkqLCBjb25zdCBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzOjpEYXRhJiwgV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXJQcm94eSopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cklu
ZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkocmV2aXNpb24gNzM5ODUpCisrKyBX
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTMs
NiArNTMsOCBAQCBjbGFzcyBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk7CiBjbGFzcyBXZWJG
cmFtZVByb3h5OwogY2xhc3MgV2ViSW5zcGVjdG9yUHJveHk7CiBjbGFzcyBXZWJOYXZpZ2F0aW9u
RGF0YTsKK2NsYXNzIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnM7CitjbGFzcyBXZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lclByb3h5OwogY2xhc3MgV2ViUGFnZUdyb3VwOwogY2xhc3MgV2ViUGFnZVBy
b3h5OwogY2xhc3MgV2ViUHJlZmVyZW5jZXM7CkBAIC03MCw2ICs3Miw4IEBAIFdLX0FERF9BUElf
TUFQUElORyhXS0Zvcm1TdWJtaXNzaW9uTGlzdGUKIFdLX0FERF9BUElfTUFQUElORyhXS0ZyYW1l
UG9saWN5TGlzdGVuZXJSZWYsIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSkKIFdLX0FERF9B
UElfTUFQUElORyhXS0ZyYW1lUmVmLCBXZWJGcmFtZVByb3h5KQogV0tfQUREX0FQSV9NQVBQSU5H
KFdLTmF2aWdhdGlvbkRhdGFSZWYsIFdlYk5hdmlnYXRpb25EYXRhKQorV0tfQUREX0FQSV9NQVBQ
SU5HKFdLT3BlblBhbmVsUGFyYW1ldGVyc1JlZiwgV2ViT3BlblBhbmVsUGFyYW1ldGVycykKK1dL
X0FERF9BUElfTUFQUElORyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmLCBXZWJPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lclByb3h5KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUGFnZUdyb3VwUmVm
LCBXZWJQYWdlR3JvdXApCiBXS19BRERfQVBJX01BUFBJTkcoV0tQYWdlUmVmLCBXZWJQYWdlUHJv
eHkpCiBXS19BRERfQVBJX01BUFBJTkcoV0tQcmVmZXJlbmNlc1JlZiwgV2ViUHJlZmVyZW5jZXMp
CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFBhcmFtZXRlcnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUGFyYW1l
dGVycy5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5Q
YW5lbFBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgIldLT3BlblBhbmVsUGFyYW1ldGVycy5oIgorCisjaW5jbHVkZSAiV0tB
UElDYXN0LmgiCisjaW5jbHVkZSAiV2ViT3BlblBhbmVsUGFyYW1ldGVycy5oIgorCit1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS09wZW5QYW5lbFBhcmFtZXRlcnNHZXRUeXBl
SUQoKQoreworICAgIHJldHVybiB0b0FQSShXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzOjpBUElUeXBl
KTsKK30KKworYm9vbCBXS09wZW5QYW5lbFBhcmFtZXRlcnNHZXRBbGxvd3NNdWx0aXBsZUZpbGVz
KFdLT3BlblBhbmVsUGFyYW1ldGVyc1JlZiBwYXJhbWV0ZXJzUmVmKQoreworICAgIHJldHVybiB0
b0ltcGwocGFyYW1ldGVyc1JlZiktPmFsbG93TXVsdGlwbGVGaWxlcygpOworfQpJbmRleDogV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmgJKHJldmlz
aW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFBhcmFtZXRlcnMu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tP
cGVuUGFuZWxQYXJhbWV0ZXJzX2gKKyNkZWZpbmUgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzX2gKKwor
I2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNpZm5kZWYgX19jcGx1c3BsdXMKKyNpbmNs
dWRlIDxzdGRib29sLmg+CisjZW5kaWYKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMi
IHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzR2V0
VHlwZUlEKCk7CisKK1dLX0VYUE9SVCBib29sIFdLT3BlblBhbmVsUGFyYW1ldGVyc0dldEFsbG93
c011bHRpcGxlRmlsZXMoV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmIHBhcmFtZXRlcnMpOworCisj
aWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tPcGVuUGFuZWxQYXJh
bWV0ZXJzX2ggKi8KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV0tPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lci5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitX
S1R5cGVJRCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1
cm4gdG9BUEkoV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6QVBJVHlwZSk7Cit9CisK
K3ZvaWQgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNob29zZUZpbGVzKFdLT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXJSZWYgbGlzdGVuZXJSZWYsIFdLQXJyYXlSZWYgZmlsZVVSTHNSZWYpCit7Cisg
ICAgdG9JbXBsKGxpc3RlbmVyUmVmKS0+Y2hvb3NlRmlsZXModG9JbXBsKGZpbGVVUkxzUmVmKSk7
Cit9CisKK3ZvaWQgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNhbmNlbChXS09wZW5QYW5lbFJl
c3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyUmVmKQoreworICAgIHRvSW1wbChsaXN0ZW5lclJlZikt
PmNhbmNlbCgpOworfQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
cl9oCisjZGVmaW5lIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJfaAorCisjaW5jbHVkZSA8V2Vi
S2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRp
ZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckdldFR5cGVJ
RCgpOworCitXS19FWFBPUlQgdm9pZCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlRmls
ZXMoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgV0tBcnJheVJlZiBmaWxl
VVJMcyk7CitXS19FWFBPUlQgdm9pZCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2FuY2VsKFdL
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIpOworCisjaWZkZWYgX19jcGx1c3Bs
dXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcl9oICov
CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAkocmV2aXNpb24gNzQwMDApCisrKyBXZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDYgKzEz
MCwxMiBAQCBzdHJ1Y3QgV0tQYWdlRm9ybUNsaWVudCB7CiB9OwogdHlwZWRlZiBzdHJ1Y3QgV0tQ
YWdlRm9ybUNsaWVudCBXS1BhZ2VGb3JtQ2xpZW50OwogCisKK2VudW0geworICAgIFdLT3BlblBh
bmVsT3B0aW9uc0FsbG93TXVsdGlwbGVGaWxlcyA9IDEgPDwgMCwKK307Cit0eXBlZGVmIHVpbnQz
Ml90IFdLT3BlblBhbmVsT3B0aW9uczsKKwogLy8gVUkgQ2xpZW50CiB0eXBlZGVmIFdLUGFnZVJl
ZiAoKldLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRGljdGlv
bmFyeVJlZiBmZWF0dXJlcywgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdLRXZlbnRNb3Vz
ZUJ1dHRvbiBtb3VzZUJ1dHRvbiwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZv
aWQgKCpXS1BhZ2VTaG93UGFnZUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCAq
Y2xpZW50SW5mbyk7CkBAIC0xMzcsNiArMTQzLDcgQEAgdHlwZWRlZiB2b2lkICgqV0tQYWdlQ2xv
c2VDYWxsYmFjaykoV0tQYQogdHlwZWRlZiB2b2lkICgqV0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0
Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBhbGVydFRleHQsIFdLRnJhbWVS
ZWYgZnJhbWUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiBib29sICgqV0tQYWdl
UnVuSmF2YVNjcmlwdENvbmZpcm1DYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVm
IG1lc3NhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlw
ZWRlZiBXS1N0cmluZ1JlZiAoKldLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFjaykoV0tQ
YWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLU3RyaW5nUmVmIGRlZmF1bHRWYWx1
ZSwgV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZv
aWQgKCpXS1BhZ2VSdW5PcGVuUGFuZWwpKFdLUGFnZVJlZiBwYWdlLCBXS09wZW5QYW5lbE9wdGlv
bnMgb3B0aW9ucywgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qg
dm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VTZXRTdGF0dXNUZXh0Q2Fs
bGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiB0ZXh0LCBjb25zdCB2b2lkICpjbGll
bnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZU1vdXNlRGlkTW92ZU92ZXJFbGVtZW50Q2Fs
bGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgV0tUeXBl
UmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldL
UGFnZURpZE5vdEhhbmRsZUtleUV2ZW50Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS05hdGl2
ZUV2ZW50UHRyIGV2ZW50LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKQEAgLTE1NCw3ICsxNjEs
NyBAQCB0eXBlZGVmIGJvb2wgKCpXS1BhZ2VSdW5CZWZvcmVVbmxvYWRDb25mCiB0eXBlZGVmIHZv
aWQgKCpXS1BhZ2VEaWREcmF3Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkICpj
bGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZURpZFNjcm9sbENhbGxiYWNrKShXS1Bh
Z2VSZWYgcGFnZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHVuc2lnbmVkIGxv
bmcgbG9uZyAoKldLUGFnZUV4Y2VlZGVkRGF0YWJhc2VRdW90YUNhbGxiYWNrKShXS1BhZ2VSZWYg
cGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIFdLU3Ry
aW5nUmVmIGRhdGFiYXNlTmFtZSwgV0tTdHJpbmdSZWYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxv
bmcgbG9uZyBjdXJyZW50UXVvdGEsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50VXNhZ2UsIHVu
c2lnbmVkIGxvbmcgbG9uZyBleHBlY3RlZFVzYWdlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsK
LQordHlwZWRlZiB2b2lkICgqV0tQYWdlUnVuT3BlblBhbmVsQ2FsbGJhY2spKFdLUGFnZVJlZiBw
YWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYgcGFyYW1ldGVy
cywgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qgdm9pZCAqY2xp
ZW50SW5mbyk7CiAKIHN0cnVjdCBXS1BhZ2VVSUNsaWVudCB7CiAgICAgaW50ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJz
aW9uOwpAQCAtMTgyLDYgKzE4OSw3IEBAIHN0cnVjdCBXS1BhZ2VVSUNsaWVudCB7CiAgICAgV0tQ
YWdlRGlkRHJhd0NhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkaWREcmF3OwogICAgIFdLUGFnZURpZFNjcm9sbENhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZURpZFNjcm9sbDsKICAgICBXS1Bh
Z2VFeGNlZWRlZERhdGFiYXNlUXVvdGFDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4Y2VlZGVkRGF0YWJhc2VRdW90YTsKKyAgICBXS1BhZ2VSdW5PcGVuUGFuZWxDYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bk9wZW5QYW5l
bDsKIH07CiB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VVSUNsaWVudCBXS1BhZ2VVSUNsaWVudDsKIApJ
bmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV2ViS2l0Mi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dlYktpdDIuaAkocmV2aXNpb24gNzM5ODUpCisrKyBXZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XZWJLaXQyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQz
LDggQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLTXV0YWJsZURpY3Rpb25hcnkuaD4KICNpbmNsdWRl
IDxXZWJLaXQyL1dLTmF2aWdhdGlvbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLTnVtYmVy
Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS09wZW5QYW5lbFBhcmFtZXRlcnMuaD4KKyNpbmNsdWRl
IDxXZWJLaXQyL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaD4KICNpbmNsdWRlIDxXZWJLaXQy
L1dLUGFnZS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlR3JvdXAuaD4KICNpbmNsdWRlIDxX
ZWJLaXQyL1dLUHJlZmVyZW5jZXMuaD4KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
d2twYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFn
ZS5jcHAJKHJldmlzaW9uIDczOTg2KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3Bh
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjAsNyArMzYwLDggQEAgUVdLUGFnZTo6UVdLUGFn
ZShRV0tDb250ZXh0KiBjb250ZXh0KQogICAgICAgICAwLCAgLyogcnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsICovCiAgICAgICAgIDAsICAvKiBkaWREcmF3ICovCiAgICAgICAgIDAsICAvKiBw
YWdlRGlkU2Nyb2xsICovCi0gICAgICAgIDAgICAvKiBleGNlZWRlZERhdGFiYXNlUXVvdGEgKi8K
KyAgICAgICAgMCwgIC8qIGV4Y2VlZGVkRGF0YWJhc2VRdW90YSAqLworICAgICAgICAwICAgLyog
cnVuT3BlblBhbmVsICovCiAgICAgfTsKICAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQocGFnZVJl
ZigpLCAmdWlDbGllbnQpOwogfQpJbmRleDogV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDc0MDAwKQorKysgV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMyMCw2ICszMjAsOCBAQAogCQlC
QzFBN0M1ODExMzZFMTlDMDBGQjcxNjcgLyogUHJvY2Vzc0xhdW5jaGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzFBN0M1NzExMzZFMTlDMDBGQjcx
NjcgLyogUHJvY2Vzc0xhdW5jaGVyLmggKi87IH07CiAJCUJDMUI0MTk4MTFENDFENTcwMDExRThE
RCAvKiBXS0J1bmRsZVBhZ2VQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzFCNDE5NzExRDQxRDU3MDAxMUU4REQgLyogV0tCdW5kbGVQYWdl
UHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUJDMUREN0IyMTE0REMzOTYwMDVBREFGMyAvKiBXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMUREN0IxMTE0
REMzOTYwMDVBREFGMyAvKiBXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCAqLzsgfTsKKwkJQkMxREZF
OEYxMkIzMUNBODAwNURGNzMwIC8qIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMURGRThEMTJCMzFDQTgw
MDVERjczMCAvKiBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQlCQzFERkVBNDEyQjMxRjg3MDA1REY3MzAg
LyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxREZFQTIxMkIzMUY4NzAwNURGNzMwIC8qIFdl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaCAqLzsgfTsKIAkJQkMyMDRFRTIxMUM4M0U5
ODAwOEYzMzc1IC8qIEluamVjdGVkQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjA0RUUwMTFDODNFOTgwMDhGMzM3NSAvKiBJbmplY3Rl
ZEJ1bmRsZS5jcHAgKi87IH07CiAJCUJDMjA0RUUzMTFDODNFOTgwMDhGMzM3NSAvKiBJbmplY3Rl
ZEJ1bmRsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkMyMDRFRTExMUM4M0U5ODAwOEYzMzc1IC8qIEluamVjdGVkQnVuZGxlLmggKi87IH07CiAJCUJD
MjA0RUU2MTFDODNFQTkwMDhGMzM3NSAvKiBJbmplY3RlZEJ1bmRsZU1hYy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzIwNEVFNTExQzgzRUE5MDA4
RjMzNzUgLyogSW5qZWN0ZWRCdW5kbGVNYWMuY3BwICovOyB9OwpAQCAtNDQwLDYgKzQ0MiwxNCBA
QAogCQlCQzg0NTJBODExNjJDODA5MDBDQUI5QjUgLyogRHJhd2luZ0FyZWEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODQ1MkE2MTE2MkM4MDkwMENB
QjlCNSAvKiBEcmF3aW5nQXJlYS5oICovOyB9OwogCQlCQzg0RUIxODEyQTcxMDBDMDA4M0YyREEg
LyogV2ViUHJlZmVyZW5jZXNNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzg0RUIxNzEyQTcxMDBDMDA4M0YyREEgLyogV2ViUHJlZmVyZW5jZXNN
YWMubW0gKi87IH07CiAJCUJDODU3RTg3MTJCNzFFQkIwMEVERUIyRSAvKiBXZWJQYWdlUHJveHlN
YWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzg1
N0U4NTEyQjcxRUJCMDBFREVCMkUgLyogV2ViUGFnZVByb3h5TWFjLm1tICovOyB9OworCQlCQzg1
N0Y3RTEyQjgyQ0VFMDBFREVCMkUgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzFERkVB
MzEyQjMxRjg3MDA1REY3MzAgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAg
Ki87IH07CisJCUJDODU3Rjg1MTJCODJEMEIwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkM4NTdGODMxMkI4MkQwQjAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmgg
Ki87IH07CisJCUJDODU3Rjg2MTJCODJEMEIwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzg1N0Y4NDEyQjgyRDBCMDBFREVCMkUgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIu
Y3BwICovOyB9OworCQlCQzg1N0ZCNTEyQjgzMEU2MDBFREVCMkUgLyogV2ViT3BlblBhbmVsUGFy
YW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkM4NTdGQjMxMkI4MzBFNjAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMuaCAqLzsg
fTsKKwkJQkM4NTdGQjYxMkI4MzBFNjAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4NTdG
QjQxMkI4MzBFNjAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwICovOyB9Owor
CQlCQzg1N0ZFNjEyQjg0M0Q4MDBFREVCMkUgLyogV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzg1N0ZFNDEyQjg0
M0Q4MDBFREVCMkUgLyogV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQlCQzg1ODA2MjEyQjg1MDU3MDBFREVCMkUg
LyogV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzFERkU4RTEyQjMxQ0E4MDA1REY3MzAgLyogV0tPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAgKi87IH07CisJCUJDODU4MDYzMTJCODUwNTcwMEVERUIy
RSAvKiBXS09wZW5QYW5lbFBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4NTdGRTUxMkI4NDNEODAwRURFQjJFIC8qIFdLT3BlblBh
bmVsUGFyYW1ldGVycy5jcHAgKi87IH07CiAJCUJDODY5OUI1MTE2QUFEQUEwMDJBOTI1QiAvKiBX
S1ZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
ODY5OUIyMTE2QUFEQUEwMDJBOTI1QiAvKiBXS1ZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCUJDODY5OUI2MTE2QUFEQUEwMDJBOTI1QiAvKiBX
S1ZpZXcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
Qzg2OTlCMzExNkFBREFBMDAyQTkyNUIgLyogV0tWaWV3Lm1tICovOyB9OwogCQlCQzg2OTlCNzEx
NkFBREFBMDAyQTkyNUIgLyogV0tWaWV3SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODY5OUI0MTE2QUFEQUEwMDJBOTI1QiAvKiBXS1Zp
ZXdJbnRlcm5hbC5oICovOyB9OwpAQCAtOTY3LDYgKzk3NywxMCBAQAogCQlCQzFBN0M1NzExMzZF
MTlDMDBGQjcxNjcgLyogUHJvY2Vzc0xhdW5jaGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFByb2Nlc3NMYXVuY2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQzFCNDE5NzExRDQxRDU3MDAxMUU4REQgLyogV0tCdW5kbGVQYWdlUHJpdmF0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRsZVBhZ2VQcml2YXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMUREN0IxMTE0REMzOTYwMDVBREFGMyAvKiBXZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMURG
RThEMTJCMzFDQTgwMDVERjczMCAvKiBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMxREZFOEUxMkIzMUNBODAwNURGNzMwIC8q
IFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUJDMURGRUEyMTJCMzFGODcwMDVERjczMCAvKiBXZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQkMxREZFQTMxMkIzMUY4NzAwNURGNzMwIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDMjA0RUUwMTFDODNFOTgwMDhGMzM3NSAvKiBJbmplY3RlZEJ1bmRsZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMjA0RUUxMTFDODNFOTgwMDhGMzM3NSAvKiBJbmpl
Y3RlZEJ1bmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZEJ1
bmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzIwNEVFNTExQzgzRUE5MDA4
RjMzNzUgLyogSW5qZWN0ZWRCdW5kbGVNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTA4Nyw2ICsxMTAxLDEyIEBACiAJCUJDODQ1MkE2MTE2MkM4MDkwMENBQjlCNSAv
KiBEcmF3aW5nQXJlYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEcmF3aW5n
QXJlYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzg0RUIxNzEyQTcxMDBDMDA4
M0YyREEgLyogV2ViUHJlZmVyZW5jZXNNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXZWJQcmVmZXJlbmNlc01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkM4NTdFODUxMkI3MUVCQjAwRURFQjJFIC8qIFdlYlBhZ2VQcm94eU1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBhZ2VQcm94eU1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM4NTdGODMxMkI4MkQwQjAwRURFQjJF
IC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJDODU3Rjg0MTJCODJEMEIwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUJDODU3RkIzMTJCODMwRTYwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM4NTdGQjQxMkI4MzBFNjAwRURFQjJFIC8q
IFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViT3BlblBhbmVsUGFyYW1ldGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUJDODU3RkU0MTJCODQzRDgwMEVERUIyRSAvKiBXS09wZW5QYW5lbFBhcmFtZXRl
cnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tPcGVuUGFuZWxQYXJhbWV0
ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDODU3RkU1MTJCODQzRDgwMEVE
RUIyRSAvKiBXS09wZW5QYW5lbFBhcmFtZXRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkM4Njk5QjIxMTZBQURBQTAwMkE5MjVCIC8qIFdLVmlldy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1ZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkM4Njk5QjMxMTZBQURBQTAwMkE5MjVCIC8qIFdLVmlldy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLVmlldy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQkM4Njk5QjQxMTZBQURBQTAwMkE5MjVCIC8qIFdLVmlld0ludGVy
bmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVmlld0ludGVybmFsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTc1LDYgKzE1OTUsOCBAQAogCQkJCUJD
MzNERDY3MTIzODQ2NDYwMDM2MEYzRiAvKiBXZWJOdW1iZXIuaCAqLywKIAkJCQlCQzU3NDRFRDEy
NjM4RkIzMDA2RjBGMTIgLyogV2ViUG9wdXBJdGVtLmNwcCAqLywKIAkJCQlCQzU3NDRFRTEyNjM4
RkIzMDA2RjBGMTIgLyogV2ViUG9wdXBJdGVtLmggKi8sCisJCQkJQkM4NTdGQjQxMkI4MzBFNjAw
RURFQjJFIC8qIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwICovLAorCQkJCUJDODU3RkIzMTJC
ODMwRTYwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmggKi8sCiAJCQkJQzA2QzYw
OTMxMjRDMTQ0MzAwMDE2ODJGIC8qIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwICovLAog
CQkJCUMwNkM2MDk0MTI0QzE0NDMwMDAxNjgyRiAvKiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmggKi8sCiAJCQkJQkM3QjYyNTExMkE0M0M5NjAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cERhdGEu
Y3BwICovLApAQCAtMTgxNSw2ICsxODM3LDggQEAKIAkJCQkxQzhFMjgxRjEyNzVEMTU0MDBCQzdC
RDAgLyogV2ViSW5zcGVjdG9yLmNwcCAqLywKIAkJCQkxQzhFMjgxRTEyNzVEMTU0MDBCQzdCRDAg
LyogV2ViSW5zcGVjdG9yLmggKi8sCiAJCQkJMUM4RTJBMUMxMjc3ODMzRjAwQkM3QkQwIC8qIFdl
Ykluc3BlY3Rvci5tZXNzYWdlcy5pbiAqLywKKwkJCQlCQzg1N0Y4NDEyQjgyRDBCMDBFREVCMkUg
LyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwICovLAorCQkJCUJDODU3RjgzMTJCODJE
MEIwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oICovLAogCQkJCUJDOTYz
RDZBMTEzREQxOTIwMDU3NEJFMiAvKiBXZWJQYWdlLmNwcCAqLywKIAkJCQlCQzAzMkQ4QjEwRjQz
N0EwMDA1OEMxNUEgLyogV2ViUGFnZS5oICovLAogCQkJCUMwQ0U3MjU4MTI0N0U0REEwMEJDMEVD
NCAvKiBXZWJQYWdlLm1lc3NhZ2VzLmluICovLApAQCAtMTg4OSw2ICsxOTEzLDggQEAKIAkJCQlC
QzU5NTM0MDEwRkMwNDUyMDA5OEY4MkQgLyogV2ViTG9hZGVyQ2xpZW50LmggKi8sCiAJCQkJQkNG
NjlGQTExMTc2RDAxNDAwNDcxQTUyIC8qIFdlYk5hdmlnYXRpb25EYXRhLmNwcCAqLywKIAkJCQlC
Q0Y2OUZBMDExNzZEMDE0MDA0NzFBNTIgLyogV2ViTmF2aWdhdGlvbkRhdGEuaCAqLywKKwkJCQlC
QzFERkVBMzEyQjMxRjg3MDA1REY3MzAgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94
eS5jcHAgKi8sCisJCQkJQkMxREZFQTIxMkIzMUY4NzAwNURGNzMwIC8qIFdlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyUHJveHkuaCAqLywKIAkJCQk1MTUzNTY5QTEyOTFCMUQyMDAwNzQ5REMgLyog
V2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCAqLywKIAkJCQk1MTUzNTY5QjEyOTFCMUQyMDAw
NzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmggKi8sCiAJCQkJQkM3QjYyMDUxMjlB
MEE2NzAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cC5jcHAgKi8sCkBAIC0xOTQ5LDYgKzE5NzUsMTAg
QEAKIAkJCQkxQUI3RDc4QjEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZC5oICovLAogCQkJ
CUJDRTQ2OTU3MTIxNEVERjQwMDBCOThFQiAvKiBXS0Zvcm1TdWJtaXNzaW9uTGlzdGVuZXIuY3Bw
ICovLAogCQkJCUJDRTQ2OTU4MTIxNEVERjQwMDBCOThFQiAvKiBXS0Zvcm1TdWJtaXNzaW9uTGlz
dGVuZXIuaCAqLywKKwkJCQlCQzFERkU4RTEyQjMxQ0E4MDA1REY3MzAgLyogV0tPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lci5jcHAgKi8sCisJCQkJQkMxREZFOEQxMkIzMUNBODAwNURGNzMwIC8qIFdL
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCAqLywKKwkJCQlCQzg1N0ZFNTEyQjg0M0Q4MDBFREVC
MkUgLyogV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcCAqLywKKwkJCQlCQzg1N0ZFNDEyQjg0M0Q4
MDBFREVCMkUgLyogV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmggKi8sCiAJCQkJQkNEMDEzOTgxMTBG
QTQyMDAwM0I4QTY3IC8qIFdLRnJhbWUuY3BwICovLAogCQkJCUJDRDAxMzk3MTEwRkE0MjAwMDNC
OEE2NyAvKiBXS0ZyYW1lLmggKi8sCiAJCQkJQkNCOUY2QTQxMTIzREQwRDAwQTEzN0UwIC8qIFdL
RnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAgKi8sCkBAIC0yNjkxLDYgKzI3MjEsMTEgQEAKIAkJCQlG
NjJBNzY2MjEyQjFBQkVEMDAwNUYxQjYgLyogV0tEYXRhYmFzZU1hbmFnZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUY2MkE3NkI3MTJCMUIyNUYwMDA1RjFCNiAvKiBXZWJEYXRhYmFzZU1hbmFnZXJN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjYyQTc2QjkxMkIxQjI1RjAwMDVGMUI2IC8q
IFdlYkRhdGFiYXNlTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUJD
MURGRThGMTJCMzFDQTgwMDVERjczMCAvKiBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQlCQzFERkVBNDEyQjMxRjg3MDA1REY3MzAgLyogV2ViT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkM4NTdGODUxMkI4MkQw
QjAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQlCQzg1N0ZCNTEyQjgzMEU2MDBFREVCMkUgLyogV2ViT3BlblBhbmVsUGFyYW1ldGVycy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQkM4NTdGRTYxMkI4NDNEODAwRURFQjJFIC8qIFdLT3BlblBh
bmVsUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0zMTA2LDYgKzMxNDEsMTEgQEAKIAkJ
CQlGNjJBNzZCNjEyQjFCMjVGMDAwNUYxQjYgLyogV2ViRGF0YWJhc2VNYW5hZ2VyTWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY2MkE3NkI4MTJCMUIyNUYwMDA1RjFCNiAv
KiBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCQzg1N0U4NzEyQjcxRUJCMDBFREVCMkUgLyogV2ViUGFnZVByb3h5TWFjLm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJQkM4NTdGN0UxMkI4MkNFRTAwRURFQjJFIC8qIFdlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkM4NTdGODYxMkI4
MkQwQjAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUJDODU3RkI2MTJCODMwRTYwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxQYXJhbWV0
ZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDODU4MDYyMTJCODUwNTcwMEVERUIyRSAvKiBX
S09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDODU4MDYz
MTJCODUwNTcwMEVERUIyRSAvKiBXS09wZW5QYW5lbFBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24gNzM5ODUpCisrKyBXZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzUsNiArMzUsOCBAQAogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1
ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNs
dWRlICJXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiV2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCkBA
IC01MDgsOSArNTEwLDI2IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpjYW5jZWxHZW9sb2NhdGlv
blAKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYkNocm9tZUNsaWVudDo6cnVu
T3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pCit2b2lkIFdlYkNocm9t
ZUNsaWVudDo6cnVuT3BlblBhbmVsKEZyYW1lKiBmcmFtZSwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nl
cj4gcHJwRmlsZUNob29zZXIpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAobV9w
YWdlLT5hY3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcigpKQorICAgICAgICByZXR1cm47CisK
KyAgICBSZWZQdHI8RmlsZUNob29zZXI+IGZpbGVDaG9vc2VyID0gcHJwRmlsZUNob29zZXI7CisK
KyAgICBtX3BhZ2UtPnNldEFjdGl2ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyKFdlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyOjpjcmVhdGUobV9wYWdlLCBmaWxlQ2hvb3Nlci5nZXQoKSkpOworICAg
IAorICAgIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnM6OkRhdGEgcGFyYW1ldGVyczsKKyAgICBwYXJh
bWV0ZXJzLmFsbG93TXVsdGlwbGVGaWxlcyA9IGZpbGVDaG9vc2VyLT5hbGxvd3NNdWx0aXBsZUZp
bGVzKCk7CisjaWYgRU5BQkxFKERJUkVDVE9SWV9VUExPQUQpCisgICAgcGFyYW1ldGVycy5hbGxv
d3NEaXJlY3RvcnlVcGxvYWQgPSBmaWxlQ2hvb3Nlci0+YWxsb3dzRGlyZWN0b3J5VXBsb2FkKCk7
CisjZWxzZQorICAgIHBhcmFtZXRlcnMuYWxsb3dzRGlyZWN0b3J5VXBsb2FkID0gZmFsc2U7Cisj
ZW5kaWYKKyAgICBwYXJhbWV0ZXJzLmFjY2VwdFR5cGVzID0gZmlsZUNob29zZXItPmFjY2VwdFR5
cGVzKCk7CisgICAgcGFyYW1ldGVycy5maWxlbmFtZXMgPSBmaWxlQ2hvb3Nlci0+ZmlsZW5hbWVz
KCk7CisKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuT3BlblBh
bmVsKHN0YXRpY19jYXN0PFdlYkZyYW1lTG9hZGVyQ2xpZW50Kj4oZnJhbWUtPmxvYWRlcigpLT5j
bGllbnQoKSktPndlYkZyYW1lKCktPmZyYW1lSUQoKSwgcGFyYW1ldGVycykpOwogfQogCiB2b2lk
IFdlYkNocm9tZUNsaWVudDo6Y2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiwgRmlsZUNob29zZXIqKQpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcAkocmV2aXNpb24gMCkKKysr
IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNw
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJX
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFz
c1JlZlB0cjxXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcj4gV2ViT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXI6OmNyZWF0ZShXZWJQYWdlKiBwYWdlLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZpbGVDaG9v
c2VyPiBmaWxlQ2hvb3NlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyKHBhZ2UsIGZpbGVDaG9vc2VyKSk7Cit9CisKK1dlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyOjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcihXZWJQYWdlKiBwYWdlLCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OkZpbGVDaG9vc2VyPiBmaWxlQ2hvb3NlcikKKyAgICA6IG1fcGFn
ZShwYWdlKQorICAgICwgbV9maWxlQ2hvb3NlcihmaWxlQ2hvb3NlcikKK3sKK30KKworV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXI6On5XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcigpCit7Cit9
CisKK3ZvaWQgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXI6OmRpZENob29zZUZpbGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBmaWxlcykKK3sKKyAgICBtX2ZpbGVDaG9vc2VyLT5jaG9vc2VGaWxl
cyhmaWxlcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5o
CShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJfaAorI2RlZmluZSBXZWJPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lcl9oCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvRmlsZUNob29zZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYlBhZ2U7CisKK2NsYXNzIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyIDogcHVibGlj
IFJlZkNvdW50ZWQ8V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXI+IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcj4gY3JlYXRlKFdlYlBh
Z2UqLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZpbGVDaG9vc2VyPik7CisgICAgfldlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyKCk7CisKKyAgICB2b2lkIGRpc2Nvbm5lY3RGcm9tUGFnZSgpIHsgbV9w
YWdlID0gMDsgfQorICAgIHZvaWQgZGlkQ2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
KTsKKworcHJpdmF0ZToKKyAgICBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcihXZWJQYWdlKiwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpGaWxlQ2hvb3Nlcj4pOworCisgICAgV2ViUGFnZSogbV9wYWdl
OworICAgIFJlZlB0cjxXZWJDb3JlOjpGaWxlQ2hvb3Nlcj4gbV9maWxlQ2hvb3NlcjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisKKyNlbmRpZiAvLyBXZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lcl9oCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2
aXNpb24gNzQwMDApCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51
Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXIuaCIKICNpbmNsdWRlICJXZWJEcmFnQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViRWRpdG9yQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKQEAgLTMyNiw2ICszMjcsMTEgQEAgdm9pZCBX
ZWJQYWdlOjpjbG9zZSgpCiAgICAgICAgIG1fYWN0aXZlUG9wdXBNZW51ID0gMDsKICAgICB9CiAK
KyAgICBpZiAobV9hY3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcikgeworICAgICAgICBtX2Fj
dGl2ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5kaXNjb25uZWN0RnJvbVBhZ2UoKTsKKyAgICAg
ICAgbV9hY3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA9IDA7CisgICAgfQorCiAgICAgbV9z
YW5kYm94RXh0ZW5zaW9uVHJhY2tlci5pbnZhbGlkYXRlKCk7CiAKICAgICBtX21haW5GcmFtZS0+
Y29yZUZyYW1lKCktPmxvYWRlcigpLT5kZXRhY2hGcm9tUGFyZW50KCk7CkBAIC0xMDYyLDYgKzEw
NjgsMTEgQEAgdm9pZCBXZWJQYWdlOjpzZXRBY3RpdmVQb3B1cE1lbnUoV2ViUG9wdQogICAgIG1f
YWN0aXZlUG9wdXBNZW51ID0gbWVudTsKIH0KIAordm9pZCBXZWJQYWdlOjpzZXRBY3RpdmVPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lcihQYXNzUmVmUHRyPFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
PiBvcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcikKK3sKKyAgICBtX2FjdGl2ZU9wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyID0gb3BlblBhbmVsUmVzdWx0TGlzdGVuZXI7Cit9CisKIGJvb2wgV2ViUGFnZTo6
ZmluZFN0cmluZ0Zyb21JbmplY3RlZEJ1bmRsZShjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9w
dGlvbnMgb3B0aW9ucykKIHsKICAgICByZXR1cm4gbV9wYWdlLT5maW5kU3RyaW5nKHRhcmdldCwg
b3B0aW9ucyk7CkBAIC0xMDkxLDYgKzExMDIsMjAgQEAgdm9pZCBXZWJQYWdlOjpkaWRDaGFuZ2VT
ZWxlY3RlZEluZGV4Rm9yQQogICAgIG1fYWN0aXZlUG9wdXBNZW51ID0gMDsKIH0KIAordm9pZCBX
ZWJQYWdlOjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZmlsZXMpCit7CisgICAgaWYgKCFtX2FjdGl2ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX2FjdGl2ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5kaWRD
aG9vc2VGaWxlcyhmaWxlcyk7CisgICAgbV9hY3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA9
IDA7Cit9CisKK3ZvaWQgV2ViUGFnZTo6ZGlkQ2FuY2VsRm9yT3BlblBhbmVsKCkKK3sKKyAgICBt
X2FjdGl2ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyID0gMDsKK30KKwogdm9pZCBXZWJQYWdlOjpk
aWRTZWxlY3RJdGVtRnJvbUFjdGl2ZUNvbnRleHRNZW51KGNvbnN0IFdlYkNvbnRleHRNZW51SXRl
bURhdGEmIGl0ZW0pCiB7CiAgICAgQVNTRVJUKG1fY29udGV4dE1lbnUpOwpJbmRleDogV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gNzQwMDApCisrKyBXZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDcg
QEAgY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJJbnNwZWN0b3I7CiBjbGFzcyBXZWJLZXlib2Fy
ZEV2ZW50OwogY2xhc3MgV2ViTW91c2VFdmVudDsKK2NsYXNzIFdlYk9wZW5QYW5lbFJlc3VsdExp
c3RlbmVyOwogY2xhc3MgV2ViUGFnZUdyb3VwUHJveHk7CiBjbGFzcyBXZWJQb3B1cE1lbnU7CiBj
bGFzcyBXZWJXaGVlbEV2ZW50OwpAQCAtMTM2LDYgKzEzNyw5IEBAIHB1YmxpYzoKICAgICBib29s
IGlzSW5SZWRvKCkgY29uc3QgeyByZXR1cm4gbV9pc0luUmVkbzsgfQogCiAgICAgdm9pZCBzZXRB
Y3RpdmVQb3B1cE1lbnUoV2ViUG9wdXBNZW51Kik7CisgICAgCisgICAgV2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXIqIGFjdGl2ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyKCkgY29uc3QgeyByZXR1
cm4gbV9hY3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5nZXQoKTsgfQorICAgIHZvaWQgc2V0
QWN0aXZlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIoUGFzc1JlZlB0cjxXZWJPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lcj4pOwogCiAgICAgLy8gLS0gQ2FsbGVkIGZyb20gV2ViUHJvY2Vzcy4KICAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNz
YWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwpAQCAtMzIyLDYgKzMyNiw5IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIGRpZENoYW5nZVNlbGVjdGVkSW5kZXhGb3JBY3RpdmVQb3B1cE1l
bnUoaW50MzJfdCBuZXdJbmRleCk7CiAKKyAgICB2b2lkIGRpZENob29zZUZpbGVzRm9yT3BlblBh
bmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CisgICAgdm9pZCBkaWRDYW5jZWxGb3JPcGVuUGFu
ZWwoKTsKKwogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIHZvaWQgZGlkU2VsZWN0SXRl
bUZyb21BY3RpdmVDb250ZXh0TWVudShjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJik7CiAj
ZW5kaWYKQEAgLTM4NCw2ICszOTEsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgUmVmUHRyPFdl
YlBvcHVwTWVudT4gbV9hY3RpdmVQb3B1cE1lbnU7CiAgICAgUmVmUHRyPFdlYkNvbnRleHRNZW51
PiBtX2NvbnRleHRNZW51OworICAgIFJlZlB0cjxXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcj4g
bV9hY3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcjsKIAogICAgIFNhbmRib3hFeHRlbnNpb25U
cmFja2VyIG1fc2FuZGJveEV4dGVuc2lvblRyYWNrZXI7CiAgICAgdWludDY0X3QgbV9wYWdlSUQ7
CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4JKHJldmlzaW9uIDc0MDAwKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNiBAQCBtZXNzYWdlcyAt
PiBXZWJQYWdlIHsKICAgICBHZXRTb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBjYWxsYmFja0lEKQogICAgIFJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXVEY6OlN0cmlu
ZyBzY3JpcHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKLQogICAgIFByZWZlcmVuY2VzRGlkQ2hh
bmdlKFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSkKIAogICAgIFNldFVzZXJBZ2Vu
dChXVEY6OlN0cmluZyB1c2VyQWdlbnQpCkBAIC05MSw2ICs5MCwxMCBAQCBtZXNzYWdlcyAtPiBX
ZWJQYWdlIHsKICAgICAjIENvbnRleHQgbWVudS4KICAgICBEaWRTZWxlY3RJdGVtRnJvbUFjdGl2
ZUNvbnRleHRNZW51KFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YSBtZW51SXRlbSk7CiAK
KyAgICAjIE9wZW4gcGFuZWwuCisgICAgRGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoVmVjdG9y
PFdURjo6U3RyaW5nPiBmaWxlVVJMcykKKyAgICBEaWRDYW5jZWxGb3JPcGVuUGFuZWwoKQorCiAg
ICAgU2V0V2luZG93UmVzaXplclNpemUoV2ViQ29yZTo6SW50U2l6ZSBpbnRlcnNlY3RzVmlldykK
IAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTEwMCwxMCArMTAzLDEyIEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2UgewogICAgIENoYXJhY3RlckluZGV4Rm9yUG9pbnQoV2ViQ29yZTo6SW50UG9pbnQgcG9p
bnQpIC0+ICh1aW50NjRfdCByZXN1bHQpCiAgICAgRmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2Uo
dWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCkgLT4gKFdlYkNvcmU6OkludFJlY3Qg
cmVzdWx0UmVjdCkKICNlbmRpZgotCS8vIFRoaXMgaXMgYSBkdW1teSBtZXNzYWdlIHRvIGF2b2lk
IGJyZWFraW5nIHRoZSBidWlsZCBmb3IgcGxhdGZvcm1zIHRoYXQgZG9uJ3QgcmVxdWlyZSAKLQkv
LyBzeW5jaHJvbm91cyBtZXNzYWdlcy4KLQlEdW1teSgpIC0+IChib29sIGR1bW15UmV0dXJuKQor
CiAjaWYgUExBVEZPUk0oUVQpCiAgICAgRmluZFpvb21hYmxlQXJlYUZvclBvaW50KFdlYkNvcmU6
OkludFBvaW50IHBvaW50KQogI2VuZGlmCisKKyAgICAvLyBUaGlzIGlzIGEgZHVtbXkgbWVzc2Fn
ZSB0byBhdm9pZCBicmVha2luZyB0aGUgYnVpbGQgZm9yIHBsYXRmb3JtcyB0aGF0IGRvbid0IHJl
cXVpcmUgCisgICAgLy8gc3luY2hyb25vdXMgbWVzc2FnZXMuCisgICAgRHVtbXkoKSAtPiAoYm9v
bCBkdW1teVJldHVybikKIH0KSW5kZXg6IFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCShyZXZpc2lvbiA3NDAwMCkKKysr
IFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01NzEsNiArNTcx
LDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XFNoYXJlZFxXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJ
PEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxXZWJPcGVuUGFuZWxQYXJhbWV0ZXJz
LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNo
YXJlZFxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBA
IC0xMzM4LDYgKzEzNDYsMTQgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcV2ViUGFnZVxXZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lci5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxXZWJQcm9jZXNzXFdlYlBhZ2VcV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIu
aCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XFdlYlByb2Nlc3NcV2ViUGFnZVxXZWJQYWdlLmNwcCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KQEAg
LTIwNDcsNiArMjA2MywxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5j
cHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJ
UHJvY2Vzc1xXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgiCisJCQkJPgorCQkJPC9G
aWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xXZWJQYWdlQ29u
dGV4dE1lbnVDbGllbnQuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAgLTIyNTcsNiArMjI4MSwy
MiBAQAogCQkJCQkJPgogCQkJCQk8L0ZpbGU+CiAJCQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXFVJUHJvY2Vzc1xBUElcQ1xXS09wZW5QYW5lbFBhcmFtZXRlcnMuY3BwIgorCQkJCQkJ
PgorCQkJCQk8L0ZpbGU+CisJCQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJv
Y2Vzc1xBUElcQ1xXS09wZW5QYW5lbFBhcmFtZXRlcnMuaCIKKwkJCQkJCT4KKwkJCQkJPC9GaWxl
PgorCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcQVBJXENcV0tP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAiCisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJ
PEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXEFQSVxDXFdLT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXIuaCIKKwkJCQkJCT4KKwkJCQkJPC9GaWxlPgorCQkJCQk8RmlsZQogCQkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcQVBJXENcV0tQYWdlLmNwcCIKIAkJCQkJCT4K
IAkJCQkJPC9GaWxlPgpJbmRleDogV2ViS2l0Mi93aW4vV2ViS2l0MkdlbmVyYXRlZC5tYWtlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvd2luL1dlYktpdDJHZW5lcmF0ZWQubWFrZQkocmV2aXNpb24g
NzM5ODUpCisrKyBXZWJLaXQyL3dpbi9XZWJLaXQyR2VuZXJhdGVkLm1ha2UJKHdvcmtpbmcgY29w
eSkKQEAgLTQ5LDYgKzQ5LDggQEAgYWxsOgogICAgIHhjb3B5IC95IC9kICIuLlxVSVByb2Nlc3Nc
QVBJXGNcV0tJbnNwZWN0b3IuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIi
CiAgICAgeGNvcHkgL3kgL2QgIi4uXFVJUHJvY2Vzc1xBUElcQ1xXS05hdGl2ZUV2ZW50LmgiICIk
KFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxXZWJLaXQyIgogICAgIHhjb3B5IC95IC9kICIuLlxV
SVByb2Nlc3NcQVBJXENcV0tOYXZpZ2F0aW9uRGF0YS5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGlu
Y2x1ZGVcV2ViS2l0MiIKKyAgICB4Y29weSAveSAvZCAiLi5cVUlQcm9jZXNzXEFQSVxDXFdLT3Bl
blBhbmVsUGFyYW1ldGVycy5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIK
KyAgICB4Y29weSAveSAvZCAiLi5cVUlQcm9jZXNzXEFQSVxDXFdLT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXIuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAgICAgeGNvcHkg
L3kgL2QgIi4uXFVJUHJvY2Vzc1xBUElcQ1xXS1BhZ2UuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxp
bmNsdWRlXFdlYktpdDIiCiAgICAgeGNvcHkgL3kgL2QgIi4uXFVJUHJvY2Vzc1xBUElcQ1xXS1Bh
Z2VHcm91cC5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKICAgICB4Y29w
eSAveSAvZCAiLi5cVUlQcm9jZXNzXEFQSVxDXFdLUHJlZmVyZW5jZXMuaCIgIiQoV0VCS0lUT1VU
UFVURElSKVxpbmNsdWRlXFdlYktpdDIiCkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NDA5NCkKKysrIFdl
YktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEw
LTEyLTE0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViS2l0MjogQ2FuJ3QgYWRkIGZpbGVzIHRv
IGFuIDxpbnB1dCB0eXBlPWZpbGU+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MTA4NworCisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJX
aW5kb3dDb250cm9sbGVyLm06CisgICAgICAgIChydW5PcGVuUGFuZWwpOgorICAgICAgICAoLVtC
cm93c2VyV2luZG93Q29udHJvbGxlciBhd2FrZUZyb21OaWJdKToKKyAgICAgICAgKiBNaW5pQnJv
d3Nlci93aW4vQnJvd3NlclZpZXcuY3BwOgorICAgICAgICAoQnJvd3NlclZpZXc6OmNyZWF0ZSk6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChXVFI6OmNyZWF0ZU90aGVyUGFnZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpp
bml0aWFsaXplKToKKwogMjAxMC0xMi0xNCAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmlhbiBMaS4KSW5kZXg6IFdlYktpdFRvb2xzL01p
bmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdFRvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tCShyZXZp
c2lvbiA3Mzk3NSkKKysrIFdlYktpdFRvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93
Q29udHJvbGxlci5tCSh3b3JraW5nIGNvcHkpCkBAIC01MzUsNiArNTM1LDM2IEBAIHN0YXRpYyBi
b29sIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgKICAgICByZXR1cm4gYnV0dG9uID09IE5T
QWxlcnRGaXJzdEJ1dHRvblJldHVybjsKIH0KIAorc3RhdGljIHZvaWQgcnVuT3BlblBhbmVsKFdL
UGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYg
cGFyYW1ldGVycywgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBwcmludGYoInJ1bk9wZW5QYW5lbCBjYWxsYmFja1xu
Iik7CisKKyAgICBOU09wZW5QYW5lbCAqb3BlblBhbmVsID0gW1tOU09wZW5QYW5lbCBhbGxvY10g
aW5pdF07CisgICAgW29wZW5QYW5lbCBzZXRBbGxvd3NNdWx0aXBsZVNlbGVjdGlvbjpXS09wZW5Q
YW5lbFBhcmFtZXRlcnNHZXRBbGxvd3NNdWx0aXBsZUZpbGVzKHBhcmFtZXRlcnMpXTsKKworICAg
IFdLUmV0YWluKGxpc3RlbmVyKTsKKworICAgIFtvcGVuUGFuZWwgYmVnaW5TaGVldE1vZGFsRm9y
V2luZG93OlsoQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgKiljbGllbnRJbmZvIHdpbmRvd10gY29t
cGxldGlvbkhhbmRsZXI6XihOU0ludGVnZXIgcmVzdWx0KSB7CisgICAgICAgIGlmIChyZXN1bHQg
PT0gTlNGaWxlSGFuZGxpbmdQYW5lbE9LQnV0dG9uKSB7CisgICAgICAgICAgICBXS011dGFibGVB
cnJheVJlZiBmaWxlVVJMcyA9IFdLTXV0YWJsZUFycmF5Q3JlYXRlKCk7CisKKyAgICAgICAgICAg
IE5TVVJMICpuc1VSTDsKKyAgICAgICAgICAgIGZvciAobnNVUkwgaW4gW29wZW5QYW5lbCBVUkxz
XSkgeworICAgICAgICAgICAgICAgIFdLVVJMUmVmIHdrVVJMID0gV0tVUkxDcmVhdGVXaXRoQ0ZV
UkwoKENGVVJMUmVmKW5zVVJMKTsKKyAgICAgICAgICAgICAgICBXS0FycmF5QXBwZW5kSXRlbShm
aWxlVVJMcywgd2tVUkwpOworICAgICAgICAgICAgICAgIFdLUmVsZWFzZSh3a1VSTCk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDaG9vc2VG
aWxlcyhsaXN0ZW5lciwgZmlsZVVSTHMpOworCisgICAgICAgICAgICBXS1JlbGVhc2UoZmlsZVVS
THMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXJDYW5jZWwobGlzdGVuZXIpOworICAgICAgICAKKyAgICAgICAgV0tSZWxlYXNlKGxpc3RlbmVy
KTsKKyAgICB9XTsKK30KKwogLSAodm9pZClhd2FrZUZyb21OaWIKIHsKICAgICBfd2ViVmlldyA9
IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOltjb250YWluZXJWaWV3IGZyYW1lXSBjb250
ZXh0UmVmOl9jb250ZXh0XTsKQEAgLTYwNyw3ICs2MzcsOCBAQCAtICh2b2lkKWF3YWtlRnJvbU5p
YgogICAgICAgICBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwsCiAgICAgICAgIDAsICAgICAg
ICAgIC8qIGRpZERyYXcgKi8KICAgICAgICAgMCwgICAgICAgICAgLyogcGFnZURpZFNjcm9sbCAq
LwotICAgICAgICAwICAgICAgICAgICAvKiBleGNlZWRlZERhdGFiYXNlUXVvdGEgKi8KKyAgICAg
ICAgMCwgICAgICAgICAgLyogZXhjZWVkZWREYXRhYmFzZVF1b3RhICovCisgICAgICAgIHJ1bk9w
ZW5QYW5lbAogICAgIH07CiAgICAgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KF93ZWJWaWV3LnBhZ2VS
ZWYsICZ1aUNsaWVudCk7CiB9CkluZGV4OiBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci93aW4vQnJv
d3NlclZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL01pbmlCcm93c2VyL3dpbi9C
cm93c2VyVmlldy5jcHAJKHJldmlzaW9uIDczOTc1KQorKysgV2ViS2l0VG9vbHMvTWluaUJyb3dz
ZXIvd2luL0Jyb3dzZXJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDcgKzExNyw4IEBA
IHZvaWQgQnJvd3NlclZpZXc6OmNyZWF0ZShSRUNUIHdlYlZpZXdSZWMKICAgICAgICAgMCwgICAg
ICAgICAgLyogcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsICovCiAgICAgICAgIDAsICAgICAg
ICAgIC8qIGRpZERyYXcgKi8KICAgICAgICAgMCwgICAgICAgICAgLyogcGFnZURpZFNjcm9sbCAq
LwotICAgICAgICAwICAgICAgICAgICAvKiBleGNlZWRlZERhdGFiYXNlUXVvdGEgKi8KKyAgICAg
ICAgMCwgICAgICAgICAgLyogZXhjZWVkZWREYXRhYmFzZVF1b3RhICovCisgICAgICAgIDAgICAg
ICAgICAgIC8qIHJ1bk9wZW5QYW5lbCAqLwogICAgIH07CiAKICAgICBXS1BhZ2VTZXRQYWdlVUlD
bGllbnQoV0tWaWV3R2V0UGFnZShtX3dlYlZpZXcpLCAmdWlDbGllbnQpOwpJbmRleDogV2ViS2l0
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDczOTc2KQorKysgV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw3ICsxMzYsOCBAQCBzdGF0aWMgV0tQYWdlUmVmIGNy
ZWF0ZU90aGVyUGFnZShXS1BhZ2VSCiAgICAgICAgIDAsIC8vIHJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbAogICAgICAgICAwLCAvLyBkaWREcmF3CiAgICAgICAgIDAsIC8vIHBhZ2VEaWRTY3Jv
bGwKLSAgICAgICAgMCAgLy8gZXhjZWVkZWREYXRhYmFzZVF1b3RhCisgICAgICAgIDAsIC8vIGV4
Y2VlZGVkRGF0YWJhc2VRdW90YQorICAgICAgICAwICAvLyBydW5PcGVuUGFuZWwKICAgICB9Owog
ICAgIFdLUGFnZVNldFBhZ2VVSUNsaWVudChuZXdQYWdlLCAmb3RoZXJQYWdlVUlDbGllbnQpOwog
CkBAIC0yMzgsNyArMjM5LDggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZShpbnQg
YXJnYwogICAgICAgICAwLCAvLyBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwKICAgICAgICAg
MCwgLy8gZGlkRHJhdwogICAgICAgICAwLCAvLyBwYWdlRGlkU2Nyb2xsCi0gICAgICAgIDAgIC8v
IGV4Y2VlZGVkRGF0YWJhc2VRdW90YQorICAgICAgICAwLCAvLyBleGNlZWRlZERhdGFiYXNlUXVv
dGEKKyAgICAgICAgMCAgLy8gcnVuT3BlblBhbmVsCiAgICAgfTsKICAgICBXS1BhZ2VTZXRQYWdl
VUlDbGllbnQobV9tYWluV2ViVmlldy0+cGFnZSgpLCAmcGFnZVVJQ2xpZW50KTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76621</attachid>
            <date>2010-12-14 20:29:00 -0800</date>
            <delta_ts>2010-12-15 13:06:14 -0800</delta_ts>
            <desc>Also a test! (DO NOT REVIEW)</desc>
            <filename>testUpload.diff</filename>
            <type>text/plain</type>
            <size>70730</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NDA5NCkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzYgQEAKKzIwMTAtMTItMTQgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJLaXQy
OiBDYW4ndCBhZGQgZmlsZXMgdG8gYW4gPGlucHV0IHR5cGU9ZmlsZT4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMDg3CisKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdDIvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQmFzZS5o
OgorICAgICAgICAqIFNoYXJlZC9BUElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViT3Bl
blBhbmVsUGFyYW1ldGVycy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJPcGVuUGFu
ZWxQYXJhbWV0ZXJzOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJPcGVuUGFuZWxQYXJh
bWV0ZXJzOjpXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViT3Bl
blBhbmVsUGFyYW1ldGVyczo6fldlYk9wZW5QYW5lbFBhcmFtZXRlcnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzOjpEYXRhOjplbmNvZGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzOjpEYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFNo
YXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJPcGVuUGFuZWxQYXJhbWV0ZXJzOjphbGxvd011bHRpcGxlRmlsZXMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzOjp0eXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVs
UGFyYW1ldGVycy5jcHA6IEFkZGVkLgorICAgICAgICAoV0tPcGVuUGFuZWxQYXJhbWV0ZXJzR2V0
VHlwZUlEKToKKyAgICAgICAgKFdLT3BlblBhbmVsUGFyYW1ldGVyc0dldEFsbG93c011bHRpcGxl
RmlsZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFBhcmFtZXRlcnMu
aDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJHZXRU
eXBlSUQpOgorICAgICAgICAoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNob29zZUZpbGVzKToK
KyAgICAgICAgKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDYW5jZWwpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmg6IEFkZGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V2ViS2l0Mi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHA6CisgICAg
ICAgIChRV0tQYWdlOjpRV0tQYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6fldl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpjaG9vc2VGaWxlcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmNhbmNlbCk6CisgICAgICAgIChXZWJL
aXQ6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmludmFsaWRhdGUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5Lmg6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5Ojp0eXBl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpydW5PcGVuUGFuZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkaWRDYW5jZWxGb3JPcGVuUGFuZWwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVSUNsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlVJQ2xpZW50OjpydW5PcGVuUGFuZWwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJV
SUNsaWVudC5oOgorICAgICAgICAqIFdlYktpdDIucHJvOgorICAgICAgICAqIFdlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVu
dDo6cnVuT3BlblBhbmVsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyOjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyOjp+V2ViT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcjo6ZGlk
Q2hvb3NlRmlsZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXI6OmRpc2Nvbm5lY3RGcm9tUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjbG9zZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEFjdGl2ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRDYW5jZWxGb3JPcGVuUGFuZWwpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmFjdGl2ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi52
Y3Byb2o6CisgICAgICAgICogd2luL1dlYktpdDJHZW5lcmF0ZWQubWFrZToKKwogMjAxMC0xMi0x
NCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBX
aW5kb3dzIGJ1aWxkLgpJbmRleDogV2ViS2l0Mi9XZWJLaXQyLnBybwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL1dlYktpdDIucHJvCShyZXZpc2lvbiA3NDAwMCkKKysrIFdlYktpdDIvV2ViS2l0Mi5w
cm8JKHdvcmtpbmcgY29weSkKQEAgLTI1OSw2ICsyNTksNyBAQCBIRUFERVJTICs9IFwKICAgICBT
aGFyZWQvV2ViRmluZE9wdGlvbnMuaCBcCiAgICAgU2hhcmVkL1dlYk5hdmlnYXRpb25EYXRhU3Rv
cmUuaCBcCiAgICAgU2hhcmVkL1dlYk51bWJlci5oIFwKKyAgICBTaGFyZWQvV2ViT3BlblBhbmVs
UGFyYW1ldGVycy5oIFwKICAgICBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIFwK
ICAgICBTaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5oIFwKICAgICBTaGFyZWQvV2ViUG9wdXBJdGVt
LmggXApAQCAtMjg1LDYgKzI4Niw4IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJvY2Vzcy9BUEkv
Qy9XS0ZyYW1lLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVuZXIu
aCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmggXAorICAgIFVJUHJvY2Vzcy9B
UEkvQy9XS09wZW5QYW5lbFBhcmFtZXRlcnMuaCBcCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXIuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlv
bkRhdGEuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oIFwKICAgICBVSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlR3JvdXAuaCBcCkBAIC0zNDIsNiArMzQ1LDcgQEAgSEVBREVSUyArPSBcCiAg
ICAgVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5oIFwKICAgICBVSVByb2Nlc3MvV2ViTmF2aWdh
dGlvbkRhdGEuaCBcCiAgICAgVUlQcm9jZXNzL1dlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5oIFwK
KyAgICBVSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oIFwKICAgICBV
SVByb2Nlc3MvV2ViUGFnZUdyb3VwLmggXAogICAgIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBc
CiAgICAgVUlQcm9jZXNzL1dlYlBvbGljeUNsaWVudC5oIFwKQEAgLTQwNSw2ICs0MDksNyBAQCBI
RUFERVJTICs9IFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRWRpdENvbW1hbmQuaCBcCiAg
ICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmggXAogICAgIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJJbnNwZWN0b3IuaCBcCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyLmggXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggXAogICAg
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5oIFwKICAgICBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaCBcCkBAIC00NTQsNiArNDU5LDcgQEAgU09VUkNFUyArPSBcCiAgICAgU2hh
cmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAgXAogICAgIFNoYXJlZC9XZWJLZXlib2FyZEV2ZW50
LmNwcCBcCiAgICAgU2hhcmVkL1dlYk1vdXNlRXZlbnQuY3BwIFwKKyAgICBTaGFyZWQvV2ViT3Bl
blBhbmVsUGFyYW1ldGVycy5jcHAgXAogICAgIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcCBcCiAgICAgU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuY3BwIFwKICAgICBTaGFyZWQv
V2ViUGxhdGZvcm1Ub3VjaFBvaW50LmNwcCBcCkBAIC00ODMsNiArNDg5LDggQEAgU09VUkNFUyAr
PSBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJ
L0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLSW5z
cGVjdG9yLmNwcCBcCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUGFyYW1ldGVycy5j
cHAgXAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcCBc
CiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkRhdGEuY3BwIFwKICAgICBVSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNw
cCBcCkBAIC01MzIsNiArNTQwLDcgQEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9jZXNzL1dlYkxv
YWRlckNsaWVudC5jcHAgXAogICAgIFVJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uRGF0YS5jcHAgXAog
ICAgIFVJUHJvY2Vzcy9XZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwIFwKKyAgICBVSVByb2Nl
c3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9X
ZWJQYWdlR3JvdXAuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBcCiAgICAg
VUlQcm9jZXNzL1dlYlBvbGljeUNsaWVudC5jcHAgXApAQCAtNjE0LDkgKzYyMywxMCBAQCBTT1VS
Q0VTICs9IFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRWRpdENvbW1hbmQuY3BwIFwKICAg
ICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yLmNwcCBcCi0gICAgV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dlYkluc3Bl
Y3RvclF0LmNwcCBcCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExp
c3RlbmVyLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIFwKICAgICBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuY3BwIFwKKyAgICBXZWJQcm9jZXNz
L1dlYlBhZ2UvcXQvV2ViSW5zcGVjdG9yUXQuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2Uv
cXQvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUXQuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBh
Z2UvcXQvVGlsZWREcmF3aW5nQXJlYVF0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL3F0
L1dlYlBhZ2VRdC5jcHAgXApJbmRleDogV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMucHkJKHJl
dmlzaW9uIDczOTg1KQorKysgV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMucHkJKHdv
cmtpbmcgY29weSkKQEAgLTI0OSw4ICsyNDksOCBAQCBkZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVj
bGFyYXRpb24obWVzc2FnCiAKIGRlZiBzdHJ1Y3Rfb3JfY2xhc3MobmFtZXNwYWNlLCB0eXBlKToK
ICAgICBzdHJ1Y3RzID0gZnJvemVuc2V0KFsKLSAgICAgICAgJ1dlYkNvcmU6OktleXByZXNzQ29t
bWFuZCcsCiAgICAgICAgICdXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZScsCisgICAgICAg
ICdXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQnLAogICAgICAgICAnV2ViQ29yZTo6UGx1Z2luSW5m
bycsCiAgICAgICAgICdXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cycsCiAgICAgICAgICdXZWJD
b3JlOjpXaW5kb3dGZWF0dXJlcycsCkBAIC0yNTgsNiArMjU4LDcgQEAgZGVmIHN0cnVjdF9vcl9j
bGFzcyhuYW1lc3BhY2UsIHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpQbGF0Zm9ybVBvcHVwTWVu
dURhdGEnLAogICAgICAgICAnV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
JywKICAgICAgICAgJ1dlYktpdDo6V2ViTmF2aWdhdGlvbkRhdGFTdG9yZScsCisgICAgICAgICdX
ZWJLaXQ6OldlYk9wZW5QYW5lbFBhcmFtZXRlcnM6OkRhdGEnLAogICAgICAgICAnV2ViS2l0OjpX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJywKICAgICAgICAgJ1dlYktpdDo6V2ViUHJlZmVyZW5j
ZXNTdG9yZScsCiAgICAgICAgICdXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMn
LApAQCAtNDExLDEzICs0MTIsMTQgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAKICAg
ICBzcGVjaWFsX2Nhc2VzID0gewogICAgICAgICAnV1RGOjpTdHJpbmcnOiAnPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPicsCisgICAgICAgICdXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZSc6ICc8
V2ViQ29yZS9FZGl0b3IuaD4nLAogICAgICAgICAnV2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kJzog
JzxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4nLAogICAgICAgICAnV2ViQ29yZTo6UGx1Z2luSW5m
byc6ICc8V2ViQ29yZS9QbHVnaW5EYXRhLmg+JywKLSAgICAgICAgJ1dlYkNvcmU6OkNvbXBvc2l0
aW9uVW5kZXJsaW5lJzogJzxXZWJDb3JlL0VkaXRvci5oPicsCiAgICAgICAgICdXZWJLaXQ6Oldl
YktleWJvYXJkRXZlbnQnOiAnIldlYkV2ZW50LmgiJywKICAgICAgICAgJ1dlYktpdDo6V2ViTW91
c2VFdmVudCc6ICciV2ViRXZlbnQuaCInLAotICAgICAgICAnV2ViS2l0OjpXZWJXaGVlbEV2ZW50
JzogJyJXZWJFdmVudC5oIicsCisgICAgICAgICdXZWJLaXQ6OldlYk9wZW5QYW5lbFBhcmFtZXRl
cnM6OkRhdGEnOiAnIldlYk9wZW5QYW5lbFBhcmFtZXRlcnMuaCInLAogICAgICAgICAnV2ViS2l0
OjpXZWJUb3VjaEV2ZW50JzogJyJXZWJFdmVudC5oIicsCisgICAgICAgICdXZWJLaXQ6OldlYldo
ZWVsRXZlbnQnOiAnIldlYkV2ZW50LmgiJywKICAgICB9CiAgICAgaWYgdHlwZSBpbiBzcGVjaWFs
X2Nhc2VzOgogICAgICAgICByZXR1cm4gW3NwZWNpYWxfY2FzZXNbdHlwZV1dCkluZGV4OiBXZWJL
aXQyL1NoYXJlZC9BUElPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9BUElP
YmplY3QuaAkocmV2aXNpb24gNzM5ODYpCisrKyBXZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksOCBAQCBwdWJsaWM6CiAgICAgICAgIFR5cGVGcmFt
ZVBvbGljeUxpc3RlbmVyLAogICAgICAgICBUeXBlSW5zcGVjdG9yLAogICAgICAgICBUeXBlTmF2
aWdhdGlvbkRhdGEsCisgICAgICAgIFR5cGVPcGVuUGFuZWxQYXJhbWV0ZXJzLAorICAgICAgICBU
eXBlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIsCiAgICAgICAgIFR5cGVQYWdlLAogICAgICAgICBU
eXBlUGFnZUdyb3VwLAogICAgICAgICBUeXBlUHJlZmVyZW5jZXMsCkluZGV4OiBXZWJLaXQyL1No
YXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1No
YXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIv
U2hhcmVkL1dlYk9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldlYk9wZW5QYW5lbFBhcmFtZXRlcnMuaCIK
KworI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworUGFzc1JlZlB0cjxXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzPiBXZWJPcGVuUGFuZWxQYXJh
bWV0ZXJzOjpjcmVhdGUoY29uc3QgRGF0YSYgZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMoZGF0YSkpOworfQorCitXZWJPcGVuUGFuZWxQYXJh
bWV0ZXJzOjpXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzKGNvbnN0IERhdGEmIGRhdGEpCisgICAgOiBt
X2RhdGEoZGF0YSkKK3sKK30KKworV2ViT3BlblBhbmVsUGFyYW1ldGVyczo6fldlYk9wZW5QYW5l
bFBhcmFtZXRlcnMoKQoreworfQorCit2b2lkIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnM6OkRhdGE6
OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0Cit7CisgICAg
ZW5jb2Rlci0+ZW5jb2RlKENvcmVJUEM6OkluKGFsbG93TXVsdGlwbGVGaWxlcywgYWxsb3dzRGly
ZWN0b3J5VXBsb2FkLCBhY2NlcHRUeXBlcywgZmlsZW5hbWVzKSk7Cit9CisKK2Jvb2wgV2ViT3Bl
blBhbmVsUGFyYW1ldGVyczo6RGF0YTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlciog
ZGVjb2RlciwgRGF0YSYgcGFyYW1ldGVycykKK3sKKyAgICByZXR1cm4gZGVjb2Rlci0+ZGVjb2Rl
KENvcmVJUEM6Ok91dChwYXJhbWV0ZXJzLmFsbG93TXVsdGlwbGVGaWxlcywgcGFyYW1ldGVycy5h
bGxvd3NEaXJlY3RvcnlVcGxvYWQsIHBhcmFtZXRlcnMuYWNjZXB0VHlwZXMsIHBhcmFtZXRlcnMu
ZmlsZW5hbWVzKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYktpdDIv
U2hhcmVkL1dlYk9wZW5QYW5lbFBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1No
YXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1No
YXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnNfaAorI2RlZmlu
ZSBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzX2gKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIENvcmVJUEMgeworICAgIGNsYXNzIEFyZ3VtZW50RGVjb2RlcjsKKyAgICBjbGFz
cyBBcmd1bWVudEVuY29kZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJP
cGVuUGFuZWxQYXJhbWV0ZXJzIDogcHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAgc3Rh
dGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVPcGVuUGFuZWxQYXJhbWV0ZXJzOworCisgICAg
c3RydWN0IERhdGEgeworICAgICAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29k
ZXIqKSBjb25zdDsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50
RGVjb2RlciosIERhdGEmKTsKKworICAgICAgICBib29sIGFsbG93TXVsdGlwbGVGaWxlczsKKyAg
ICAgICAgYm9vbCBhbGxvd3NEaXJlY3RvcnlVcGxvYWQ7CisgICAgICAgIFN0cmluZyBhY2NlcHRU
eXBlczsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gZmlsZW5hbWVzOworICAgIH07CisKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzPiBjcmVhdGUoY29uc3QgRGF0
YSYpOworICAgIH5XZWJPcGVuUGFuZWxQYXJhbWV0ZXJzKCk7CisKKyAgICBib29sIGFsbG93TXVs
dGlwbGVGaWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5hbGxvd011bHRpcGxlRmlsZXM7IH0g
CisKK3ByaXZhdGU6CisgICAgV2ViT3BlblBhbmVsUGFyYW1ldGVycyhjb25zdCBEYXRhJik7CisK
KyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KKworICAg
IERhdGEgbV9kYXRhOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBX
ZWJPcGVuUGFuZWxQYXJhbWV0ZXJzX2gKSW5kZXg6IFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFz
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCShyZXZpc2lv
biA3Mzk4NSkKKysrIFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC03Myw2ICs3Myw4IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLRnJhbWUqIFdL
RnIKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLRnJhbWVQb2xpY3lMaXN0ZW5lciogV0tG
cmFtZVBvbGljeUxpc3RlbmVyUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tJbnNw
ZWN0b3IqIFdLSW5zcGVjdG9yUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tOYXZp
Z2F0aW9uRGF0YSogV0tOYXZpZ2F0aW9uRGF0YVJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9w
YXF1ZVdLT3BlblBhbmVsUGFyYW1ldGVycyogV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmOwordHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciogV0tPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lclJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUGFn
ZSogV0tQYWdlUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQYWdlR3JvdXAqIFdL
UGFnZUdyb3VwUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQcmVmZXJlbmNlcyog
V0tQcmVmZXJlbmNlc1JlZjsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV2ViT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXJQcm94eS5oIgorCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5j
bHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpXZWJPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKKyAgICA6IG1fcGFn
ZShwYWdlKQoreworfQorCitXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5Ojp+V2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSgpCit7Cit9CisKK3ZvaWQgV2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXJQcm94eTo6Y2hvb3NlRmlsZXMoSW1tdXRhYmxlQXJyYXkqIGZpbGVVUkxzQXJy
YXkpCit7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIHNpemVfdCBz
aXplID0gZmlsZVVSTHNBcnJheS0+c2l6ZSgpOworCisgICAgVmVjdG9yPFN0cmluZz4gZmlsZVVS
THM7CisgICAgZmlsZVVSTHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKKworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIFdlYlVSTCogdXJsID0g
ZmlsZVVSTHNBcnJheS0+YXQ8V2ViVVJMPihpKTsKKyAgICAgICAgaWYgKHVybCkKKyAgICAgICAg
ICAgIGZpbGVVUkxzLnVuY2hlY2tlZEFwcGVuZCh1cmwtPnN0cmluZygpKTsKKyAgICB9CisKKyAg
ICBtX3BhZ2UtPmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGZpbGVVUkxzKTsKK30KKwordm9p
ZCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpjYW5jZWwoKQoreworICAgIGlmICgh
bV9wYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BhZ2UtPmRpZENhbmNlbEZvck9wZW5Q
YW5lbCgpOworfQorCit2b2lkIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmludmFs
aWRhdGUoKQoreworICAgIG1fcGFnZSA9IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyUHJveHkuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyUHJveHkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eV9oCisjZGVm
aW5lIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHlfaAorCisjaW5jbHVkZSAiQVBJT2Jq
ZWN0LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBJbW11dGFibGVBcnJheTsKK2NsYXNz
IFdlYlBhZ2VQcm94eTsKKworY2xhc3MgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSA6
IHB1YmxpYyBBUElPYmplY3QgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5
cGUgPSBUeXBlRnJhbWVQb2xpY3lMaXN0ZW5lcjsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk+IGNyZWF0ZShXZWJQYWdlUHJveHkqIHBhZ2Up
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYk9wZW5QYW5lbFJlc3VsdExp
c3RlbmVyUHJveHkocGFnZSkpOworICAgIH0KKworICAgIHZpcnR1YWwgfldlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyUHJveHkoKTsKKworICAgIHZvaWQgY2hvb3NlRmlsZXMoSW1tdXRhYmxlQXJy
YXkqKTsKKyAgICB2b2lkIGNhbmNlbCgpOworCisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisKK3By
aXZhdGU6CisgICAgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eShXZWJQYWdlUHJveHkq
KTsKKworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQor
CisgICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gbV9wYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5X2gKSW5k
ZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gNzQwMDApCisrKyBXZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0
Nyw3IEBACiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRlICJXZWJGb3JtU3VibWlzc2lv
bkxpc3RlbmVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHku
aCIKKyNpbmNsdWRlICJXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5o
IgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cERhdGEuaCIKQEAgLTEyNTEsNiArMTI1MiwxOSBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6cGFnZURpZFNjcm9sbCgpCiAgICAgbV91aUNsaWVudC5wYWdlRGlk
U2Nyb2xsKHRoaXMpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6cnVuT3BlblBhbmVsKHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFdlYk9wZW5QYW5lbFBhcmFtZXRlcnM6OkRhdGEmIGRhdGEpCit7
CisgICAgaWYgKG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIpIHsKKyAgICAgICAgbV9vcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0ZSgpOworICAgICAgICBtX29wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyID0gMDsKKyAgICB9CisKKyAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyID0g
V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6Y3JlYXRlKHRoaXMpOworCisgICAgaWYg
KCFtX3VpQ2xpZW50LnJ1bk9wZW5QYW5lbCh0aGlzLCBwcm9jZXNzKCktPndlYkZyYW1lKGZyYW1l
SUQpLCBkYXRhLCBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmdldCgpKSkKKyAgICAgICAgZGlk
Q2FuY2VsRm9yT3BlblBhbmVsKCk7Cit9CisKICNpZiBQTEFURk9STShRVCkKIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6
ZSkKIHsKQEAgLTE0MjMsNiArMTQzNywyOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGV4dE1l
bnVJdGVtU2VsZWN0CiAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRT
ZWxlY3RJdGVtRnJvbUFjdGl2ZUNvbnRleHRNZW51KGl0ZW0pLCBtX3BhZ2VJRCk7CiB9CiAKK3Zv
aWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZmlsZVVSTHMpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIEZJWE1FOiBUaGlzIGFsc28gbmVlZHMgdG8gc2VuZCBhIHNhbmRib3ggZXh0
ZW5zaW9uIGZvciB0aGVzZSBwYXRocy4KKyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGZpbGVVUkxzKSwgbV9wYWdlSUQpOwor
CisgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0ZSgpOworICAgIG1fb3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXIgPSAwOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2Fu
Y2VsRm9yT3BlblBhbmVsKCkKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDYW5jZWxGb3JP
cGVuUGFuZWwoKSwgbV9wYWdlSUQpOworICAgIAorICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXItPmludmFsaWRhdGUoKTsKKyAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyID0gMDsKK30K
Kwogdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1JlZlB0cjxXZWJF
ZGl0Q29tbWFuZFByb3h5PiBjb21tYW5kUHJveHksIFVuZG9PclJlZG8gdW5kb09yUmVkbykKIHsK
ICAgICBtX3BhZ2VDbGllbnQtPnJlZ2lzdGVyRWRpdENvbW1hbmQoY29tbWFuZFByb3h5LCB1bmRv
T3JSZWRvKTsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiA3NDAwMCkK
KysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC03
OCw2ICs3OCw3IEBAIGNsYXNzIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ7CiBjbGFzcyBQYWdlQ2xp
ZW50OwogY2xhc3MgUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBTdHJpbmdQYWlyVmVj
dG9yOworY2xhc3MgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdlYkJh
Y2tGb3J3YXJkTGlzdDsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW07CiBjbGFzcyBXZWJD
b250ZXh0TWVudVByb3h5OwpAQCAtMjY3LDggKzI2OCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRSZXNpemVzVG9Db250ZW50c1VzaW5nTGF5b3V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
Jik7CiAjZW5kaWYKIAorICAgIC8vIENhbGxlZCBieSB0aGUgV2ViQ29udGV4dE1lbnVQcm94eS4K
ICAgICB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRl
bURhdGEmKTsKIAorICAgIC8vIENhbGxlZCBieSB0aGUgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXJQcm94eS4KKyAgICB2b2lkIGRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+Jik7CisgICAgdm9pZCBkaWRDYW5jZWxGb3JPcGVuUGFuZWwoKTsKKwogICAgIFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgY3JlYXRpb25QYXJhbWV0ZXJzKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmKSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKFFUKQpAQCAtMzM1LDYgKzM0MSw4IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCB1aW50NjRfdCBmcmFtZUlELCBib29sJiBzaG91bGRDbG9zZSk7CiAgICAg
dm9pZCBkaWRDaGFuZ2VWaWV3cG9ydERhdGEoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVu
dHMmKTsKICAgICB2b2lkIHBhZ2VEaWRTY3JvbGwoKTsKKyAgICB2b2lkIHJ1bk9wZW5QYW5lbCh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzOjpEYXRhJik7CisK
ICNpZiBFTkFCTEUoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICB2b2lkIHBhZ2VEaWRSZXF1ZXN0
U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKICNlbmRpZgpAQCAtNDM1LDYgKzQ0Myw3
IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IG1fYWN0aXZlUG9w
dXBNZW51OwogICAgIFJlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBtX2FjdGl2ZUNvbnRleHRN
ZW51OworICAgIFJlZlB0cjxXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5PiBtX29wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyOwogCiAgICAgZG91YmxlIG1fZXN0aW1hdGVkUHJvZ3Jlc3M7CiAK
SW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlz
aW9uIDczOTg1KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94
eSB7CiAgICAgQ2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkgLT4gKGJvb2wgY2FuUnVu
KQogICAgIFJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChXVEY6OlN0cmluZyBtZXNzYWdlLCB1
aW50NjRfdCBmcmFtZUlEKSAtPiAoYm9vbCBzaG91bGRDbG9zZSkKICAgICBQYWdlRGlkU2Nyb2xs
KCkKKyAgICBSdW5PcGVuUGFuZWwodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpXZWJPcGVuUGFu
ZWxQYXJhbWV0ZXJzOjpEYXRhIHBhcmFtZXRlcnMpCisKICNpZiBFTkFCTEUoVElMRURfQkFDS0lO
R19TVE9SRSkKICAgICBQYWdlRGlkUmVxdWVzdFNjcm9sbChXZWJDb3JlOjpJbnRTaXplIGRlbHRh
KQogI2VuZGlmCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQuY3BwCShyZXZpc2lvbiA3Mzk4
NSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKICNp
bmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJOdW1iZXIuaCIKKyNpbmNsdWRlICJX
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lu
dFNpemUuaD4KQEAgLTI0NSw0ICsyNDYsMTQgQEAgdW5zaWduZWQgbG9uZyBsb25nIFdlYlVJQ2xp
ZW50OjpleGNlZWRlZAogICAgIHJldHVybiBtX2NsaWVudC5leGNlZWRlZERhdGFiYXNlUXVvdGEo
dG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkob3JpZ2luKSwgdG9BUEkoZGF0YWJhc2VO
YW1lLmltcGwoKSksIHRvQVBJKGRhdGFiYXNlRGlzcGxheU5hbWUuaW1wbCgpKSwgY3VycmVudFF1
b3RhLCBjdXJyZW50VXNhZ2UsIGV4cGVjdGVkVXNhZ2UsIG1fY2xpZW50LmNsaWVudEluZm8pOwog
fQogCitib29sIFdlYlVJQ2xpZW50OjpydW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5KiBwYWdlLCBX
ZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgV2ViT3BlblBhbmVsUGFyYW1ldGVyczo6RGF0YSYg
cGFyYW1ldGVyRGF0YSwgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSogbGlzdGVuZXIp
Cit7CisgICAgaWYgKCFtX2NsaWVudC5ydW5PcGVuUGFuZWwpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIFJlZlB0cjxXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzID0gV2Vi
T3BlblBhbmVsUGFyYW1ldGVyczo6Y3JlYXRlKHBhcmFtZXRlckRhdGEpOworICAgIG1fY2xpZW50
LnJ1bk9wZW5QYW5lbCh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShwYXJhbWV0ZXJz
LmdldCgpKSwgdG9BUEkobGlzdGVuZXIpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJVSUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlVJ
Q2xpZW50LmgJKHJldmlzaW9uIDczOTg1KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkFQSUNsaWVu
dC5oIgogI2luY2x1ZGUgIldLUGFnZS5oIgogI2luY2x1ZGUgIldlYkV2ZW50LmgiCisjaW5jbHVk
ZSAiV2ViT3BlblBhbmVsUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIApAQCAtNDUsNiArNDYsNyBAQCBjbGFzcyBOYXRp
dmVXZWJLZXlib2FyZEV2ZW50OwogY2xhc3MgV2ViRnJhbWVQcm94eTsKIGNsYXNzIFdlYlBhZ2VQ
cm94eTsKIGNsYXNzIFdlYlNlY3VyaXR5T3JpZ2luOworY2xhc3MgV2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJQcm94eTsKIAogY2xhc3MgV2ViVUlDbGllbnQgOiBwdWJsaWMgQVBJQ2xpZW50PFdL
UGFnZVVJQ2xpZW50PiB7CiBwdWJsaWM6CkBAIC04MCw2ICs4Miw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHBhZ2VEaWRTY3JvbGwoV2ViUGFnZVByb3h5Kik7CiAKICAgICB1bnNpZ25lZCBsb25nIGxv
bmcgZXhjZWVkZWREYXRhYmFzZVF1b3RhKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBX
ZWJTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJp
bmcmIGRhdGFiYXNlRGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50UXVvdGEs
IHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50VXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBleHBl
Y3RlZFVzYWdlKTsKKworICAgIGJvb2wgcnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSosIFdlYkZy
YW1lUHJveHkqLCBjb25zdCBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzOjpEYXRhJiwgV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXJQcm94eSopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cklu
ZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkocmV2aXNpb24gNzM5ODUpCisrKyBX
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTMs
NiArNTMsOCBAQCBjbGFzcyBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk7CiBjbGFzcyBXZWJG
cmFtZVByb3h5OwogY2xhc3MgV2ViSW5zcGVjdG9yUHJveHk7CiBjbGFzcyBXZWJOYXZpZ2F0aW9u
RGF0YTsKK2NsYXNzIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnM7CitjbGFzcyBXZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lclByb3h5OwogY2xhc3MgV2ViUGFnZUdyb3VwOwogY2xhc3MgV2ViUGFnZVBy
b3h5OwogY2xhc3MgV2ViUHJlZmVyZW5jZXM7CkBAIC03MCw2ICs3Miw4IEBAIFdLX0FERF9BUElf
TUFQUElORyhXS0Zvcm1TdWJtaXNzaW9uTGlzdGUKIFdLX0FERF9BUElfTUFQUElORyhXS0ZyYW1l
UG9saWN5TGlzdGVuZXJSZWYsIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSkKIFdLX0FERF9B
UElfTUFQUElORyhXS0ZyYW1lUmVmLCBXZWJGcmFtZVByb3h5KQogV0tfQUREX0FQSV9NQVBQSU5H
KFdLTmF2aWdhdGlvbkRhdGFSZWYsIFdlYk5hdmlnYXRpb25EYXRhKQorV0tfQUREX0FQSV9NQVBQ
SU5HKFdLT3BlblBhbmVsUGFyYW1ldGVyc1JlZiwgV2ViT3BlblBhbmVsUGFyYW1ldGVycykKK1dL
X0FERF9BUElfTUFQUElORyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmLCBXZWJPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lclByb3h5KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUGFnZUdyb3VwUmVm
LCBXZWJQYWdlR3JvdXApCiBXS19BRERfQVBJX01BUFBJTkcoV0tQYWdlUmVmLCBXZWJQYWdlUHJv
eHkpCiBXS19BRERfQVBJX01BUFBJTkcoV0tQcmVmZXJlbmNlc1JlZiwgV2ViUHJlZmVyZW5jZXMp
CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFBhcmFtZXRlcnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUGFyYW1l
dGVycy5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5Q
YW5lbFBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgIldLT3BlblBhbmVsUGFyYW1ldGVycy5oIgorCisjaW5jbHVkZSAiV0tB
UElDYXN0LmgiCisjaW5jbHVkZSAiV2ViT3BlblBhbmVsUGFyYW1ldGVycy5oIgorCit1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS09wZW5QYW5lbFBhcmFtZXRlcnNHZXRUeXBl
SUQoKQoreworICAgIHJldHVybiB0b0FQSShXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzOjpBUElUeXBl
KTsKK30KKworYm9vbCBXS09wZW5QYW5lbFBhcmFtZXRlcnNHZXRBbGxvd3NNdWx0aXBsZUZpbGVz
KFdLT3BlblBhbmVsUGFyYW1ldGVyc1JlZiBwYXJhbWV0ZXJzUmVmKQoreworICAgIHJldHVybiB0
b0ltcGwocGFyYW1ldGVyc1JlZiktPmFsbG93TXVsdGlwbGVGaWxlcygpOworfQpJbmRleDogV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmgJKHJldmlz
aW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFBhcmFtZXRlcnMu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tP
cGVuUGFuZWxQYXJhbWV0ZXJzX2gKKyNkZWZpbmUgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzX2gKKwor
I2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNpZm5kZWYgX19jcGx1c3BsdXMKKyNpbmNs
dWRlIDxzdGRib29sLmg+CisjZW5kaWYKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMi
IHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzR2V0
VHlwZUlEKCk7CisKK1dLX0VYUE9SVCBib29sIFdLT3BlblBhbmVsUGFyYW1ldGVyc0dldEFsbG93
c011bHRpcGxlRmlsZXMoV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmIHBhcmFtZXRlcnMpOworCisj
aWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tPcGVuUGFuZWxQYXJh
bWV0ZXJzX2ggKi8KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV0tPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lci5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitX
S1R5cGVJRCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1
cm4gdG9BUEkoV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6QVBJVHlwZSk7Cit9CisK
K3ZvaWQgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNob29zZUZpbGVzKFdLT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXJSZWYgbGlzdGVuZXJSZWYsIFdLQXJyYXlSZWYgZmlsZVVSTHNSZWYpCit7Cisg
ICAgdG9JbXBsKGxpc3RlbmVyUmVmKS0+Y2hvb3NlRmlsZXModG9JbXBsKGZpbGVVUkxzUmVmKSk7
Cit9CisKK3ZvaWQgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNhbmNlbChXS09wZW5QYW5lbFJl
c3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyUmVmKQoreworICAgIHRvSW1wbChsaXN0ZW5lclJlZikt
PmNhbmNlbCgpOworfQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
cl9oCisjZGVmaW5lIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJfaAorCisjaW5jbHVkZSA8V2Vi
S2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRp
ZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckdldFR5cGVJ
RCgpOworCitXS19FWFBPUlQgdm9pZCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlRmls
ZXMoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgV0tBcnJheVJlZiBmaWxl
VVJMcyk7CitXS19FWFBPUlQgdm9pZCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2FuY2VsKFdL
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIpOworCisjaWZkZWYgX19jcGx1c3Bs
dXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcl9oICov
CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAkocmV2aXNpb24gNzQwMDApCisrKyBXZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDYgKzEz
MCwxMiBAQCBzdHJ1Y3QgV0tQYWdlRm9ybUNsaWVudCB7CiB9OwogdHlwZWRlZiBzdHJ1Y3QgV0tQ
YWdlRm9ybUNsaWVudCBXS1BhZ2VGb3JtQ2xpZW50OwogCisKK2VudW0geworICAgIFdLT3BlblBh
bmVsT3B0aW9uc0FsbG93TXVsdGlwbGVGaWxlcyA9IDEgPDwgMCwKK307Cit0eXBlZGVmIHVpbnQz
Ml90IFdLT3BlblBhbmVsT3B0aW9uczsKKwogLy8gVUkgQ2xpZW50CiB0eXBlZGVmIFdLUGFnZVJl
ZiAoKldLUGFnZUNyZWF0ZU5ld1BhZ2VDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRGljdGlv
bmFyeVJlZiBmZWF0dXJlcywgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdLRXZlbnRNb3Vz
ZUJ1dHRvbiBtb3VzZUJ1dHRvbiwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZv
aWQgKCpXS1BhZ2VTaG93UGFnZUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCAq
Y2xpZW50SW5mbyk7CkBAIC0xMzcsNiArMTQzLDcgQEAgdHlwZWRlZiB2b2lkICgqV0tQYWdlQ2xv
c2VDYWxsYmFjaykoV0tQYQogdHlwZWRlZiB2b2lkICgqV0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0
Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBhbGVydFRleHQsIFdLRnJhbWVS
ZWYgZnJhbWUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiBib29sICgqV0tQYWdl
UnVuSmF2YVNjcmlwdENvbmZpcm1DYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVm
IG1lc3NhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlw
ZWRlZiBXS1N0cmluZ1JlZiAoKldLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRDYWxsYmFjaykoV0tQ
YWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLU3RyaW5nUmVmIGRlZmF1bHRWYWx1
ZSwgV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZv
aWQgKCpXS1BhZ2VSdW5PcGVuUGFuZWwpKFdLUGFnZVJlZiBwYWdlLCBXS09wZW5QYW5lbE9wdGlv
bnMgb3B0aW9ucywgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qg
dm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VTZXRTdGF0dXNUZXh0Q2Fs
bGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiB0ZXh0LCBjb25zdCB2b2lkICpjbGll
bnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZU1vdXNlRGlkTW92ZU92ZXJFbGVtZW50Q2Fs
bGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgV0tUeXBl
UmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldL
UGFnZURpZE5vdEhhbmRsZUtleUV2ZW50Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS05hdGl2
ZUV2ZW50UHRyIGV2ZW50LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKQEAgLTE1NCw3ICsxNjEs
NyBAQCB0eXBlZGVmIGJvb2wgKCpXS1BhZ2VSdW5CZWZvcmVVbmxvYWRDb25mCiB0eXBlZGVmIHZv
aWQgKCpXS1BhZ2VEaWREcmF3Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkICpj
bGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZURpZFNjcm9sbENhbGxiYWNrKShXS1Bh
Z2VSZWYgcGFnZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHVuc2lnbmVkIGxv
bmcgbG9uZyAoKldLUGFnZUV4Y2VlZGVkRGF0YWJhc2VRdW90YUNhbGxiYWNrKShXS1BhZ2VSZWYg
cGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIFdLU3Ry
aW5nUmVmIGRhdGFiYXNlTmFtZSwgV0tTdHJpbmdSZWYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxv
bmcgbG9uZyBjdXJyZW50UXVvdGEsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50VXNhZ2UsIHVu
c2lnbmVkIGxvbmcgbG9uZyBleHBlY3RlZFVzYWdlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsK
LQordHlwZWRlZiB2b2lkICgqV0tQYWdlUnVuT3BlblBhbmVsQ2FsbGJhY2spKFdLUGFnZVJlZiBw
YWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYgcGFyYW1ldGVy
cywgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qgdm9pZCAqY2xp
ZW50SW5mbyk7CiAKIHN0cnVjdCBXS1BhZ2VVSUNsaWVudCB7CiAgICAgaW50ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJz
aW9uOwpAQCAtMTgyLDYgKzE4OSw3IEBAIHN0cnVjdCBXS1BhZ2VVSUNsaWVudCB7CiAgICAgV0tQ
YWdlRGlkRHJhd0NhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkaWREcmF3OwogICAgIFdLUGFnZURpZFNjcm9sbENhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZURpZFNjcm9sbDsKICAgICBXS1Bh
Z2VFeGNlZWRlZERhdGFiYXNlUXVvdGFDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4Y2VlZGVkRGF0YWJhc2VRdW90YTsKKyAgICBXS1BhZ2VSdW5PcGVuUGFuZWxDYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bk9wZW5QYW5l
bDsKIH07CiB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VVSUNsaWVudCBXS1BhZ2VVSUNsaWVudDsKIApJ
bmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV2ViS2l0Mi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dlYktpdDIuaAkocmV2aXNpb24gNzM5ODUpCisrKyBXZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XZWJLaXQyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQz
LDggQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLTXV0YWJsZURpY3Rpb25hcnkuaD4KICNpbmNsdWRl
IDxXZWJLaXQyL1dLTmF2aWdhdGlvbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLTnVtYmVy
Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS09wZW5QYW5lbFBhcmFtZXRlcnMuaD4KKyNpbmNsdWRl
IDxXZWJLaXQyL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaD4KICNpbmNsdWRlIDxXZWJLaXQy
L1dLUGFnZS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlR3JvdXAuaD4KICNpbmNsdWRlIDxX
ZWJLaXQyL1dLUHJlZmVyZW5jZXMuaD4KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
d2twYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFn
ZS5jcHAJKHJldmlzaW9uIDczOTg2KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3Bh
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjAsNyArMzYwLDggQEAgUVdLUGFnZTo6UVdLUGFn
ZShRV0tDb250ZXh0KiBjb250ZXh0KQogICAgICAgICAwLCAgLyogcnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsICovCiAgICAgICAgIDAsICAvKiBkaWREcmF3ICovCiAgICAgICAgIDAsICAvKiBw
YWdlRGlkU2Nyb2xsICovCi0gICAgICAgIDAgICAvKiBleGNlZWRlZERhdGFiYXNlUXVvdGEgKi8K
KyAgICAgICAgMCwgIC8qIGV4Y2VlZGVkRGF0YWJhc2VRdW90YSAqLworICAgICAgICAwICAgLyog
cnVuT3BlblBhbmVsICovCiAgICAgfTsKICAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQocGFnZVJl
ZigpLCAmdWlDbGllbnQpOwogfQpJbmRleDogV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDc0MDAwKQorKysgV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMyMCw2ICszMjAsOCBAQAogCQlC
QzFBN0M1ODExMzZFMTlDMDBGQjcxNjcgLyogUHJvY2Vzc0xhdW5jaGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzFBN0M1NzExMzZFMTlDMDBGQjcx
NjcgLyogUHJvY2Vzc0xhdW5jaGVyLmggKi87IH07CiAJCUJDMUI0MTk4MTFENDFENTcwMDExRThE
RCAvKiBXS0J1bmRsZVBhZ2VQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzFCNDE5NzExRDQxRDU3MDAxMUU4REQgLyogV0tCdW5kbGVQYWdl
UHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUJDMUREN0IyMTE0REMzOTYwMDVBREFGMyAvKiBXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMUREN0IxMTE0
REMzOTYwMDVBREFGMyAvKiBXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCAqLzsgfTsKKwkJQkMxREZF
OEYxMkIzMUNBODAwNURGNzMwIC8qIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMURGRThEMTJCMzFDQTgw
MDVERjczMCAvKiBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQlCQzFERkVBNDEyQjMxRjg3MDA1REY3MzAg
LyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxREZFQTIxMkIzMUY4NzAwNURGNzMwIC8qIFdl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaCAqLzsgfTsKIAkJQkMyMDRFRTIxMUM4M0U5
ODAwOEYzMzc1IC8qIEluamVjdGVkQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjA0RUUwMTFDODNFOTgwMDhGMzM3NSAvKiBJbmplY3Rl
ZEJ1bmRsZS5jcHAgKi87IH07CiAJCUJDMjA0RUUzMTFDODNFOTgwMDhGMzM3NSAvKiBJbmplY3Rl
ZEJ1bmRsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkMyMDRFRTExMUM4M0U5ODAwOEYzMzc1IC8qIEluamVjdGVkQnVuZGxlLmggKi87IH07CiAJCUJD
MjA0RUU2MTFDODNFQTkwMDhGMzM3NSAvKiBJbmplY3RlZEJ1bmRsZU1hYy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzIwNEVFNTExQzgzRUE5MDA4
RjMzNzUgLyogSW5qZWN0ZWRCdW5kbGVNYWMuY3BwICovOyB9OwpAQCAtNDQwLDYgKzQ0MiwxNCBA
QAogCQlCQzg0NTJBODExNjJDODA5MDBDQUI5QjUgLyogRHJhd2luZ0FyZWEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODQ1MkE2MTE2MkM4MDkwMENB
QjlCNSAvKiBEcmF3aW5nQXJlYS5oICovOyB9OwogCQlCQzg0RUIxODEyQTcxMDBDMDA4M0YyREEg
LyogV2ViUHJlZmVyZW5jZXNNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzg0RUIxNzEyQTcxMDBDMDA4M0YyREEgLyogV2ViUHJlZmVyZW5jZXNN
YWMubW0gKi87IH07CiAJCUJDODU3RTg3MTJCNzFFQkIwMEVERUIyRSAvKiBXZWJQYWdlUHJveHlN
YWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzg1
N0U4NTEyQjcxRUJCMDBFREVCMkUgLyogV2ViUGFnZVByb3h5TWFjLm1tICovOyB9OworCQlCQzg1
N0Y3RTEyQjgyQ0VFMDBFREVCMkUgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzFERkVB
MzEyQjMxRjg3MDA1REY3MzAgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAg
Ki87IH07CisJCUJDODU3Rjg1MTJCODJEMEIwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkM4NTdGODMxMkI4MkQwQjAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmgg
Ki87IH07CisJCUJDODU3Rjg2MTJCODJEMEIwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzg1N0Y4NDEyQjgyRDBCMDBFREVCMkUgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIu
Y3BwICovOyB9OworCQlCQzg1N0ZCNTEyQjgzMEU2MDBFREVCMkUgLyogV2ViT3BlblBhbmVsUGFy
YW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkM4NTdGQjMxMkI4MzBFNjAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMuaCAqLzsg
fTsKKwkJQkM4NTdGQjYxMkI4MzBFNjAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4NTdG
QjQxMkI4MzBFNjAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwICovOyB9Owor
CQlCQzg1N0ZFNjEyQjg0M0Q4MDBFREVCMkUgLyogV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzg1N0ZFNDEyQjg0
M0Q4MDBFREVCMkUgLyogV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQlCQzg1ODA2MjEyQjg1MDU3MDBFREVCMkUg
LyogV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzFERkU4RTEyQjMxQ0E4MDA1REY3MzAgLyogV0tPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAgKi87IH07CisJCUJDODU4MDYzMTJCODUwNTcwMEVERUIy
RSAvKiBXS09wZW5QYW5lbFBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4NTdGRTUxMkI4NDNEODAwRURFQjJFIC8qIFdLT3BlblBh
bmVsUGFyYW1ldGVycy5jcHAgKi87IH07CiAJCUJDODY5OUI1MTE2QUFEQUEwMDJBOTI1QiAvKiBX
S1ZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
ODY5OUIyMTE2QUFEQUEwMDJBOTI1QiAvKiBXS1ZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCUJDODY5OUI2MTE2QUFEQUEwMDJBOTI1QiAvKiBX
S1ZpZXcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
Qzg2OTlCMzExNkFBREFBMDAyQTkyNUIgLyogV0tWaWV3Lm1tICovOyB9OwogCQlCQzg2OTlCNzEx
NkFBREFBMDAyQTkyNUIgLyogV0tWaWV3SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODY5OUI0MTE2QUFEQUEwMDJBOTI1QiAvKiBXS1Zp
ZXdJbnRlcm5hbC5oICovOyB9OwpAQCAtOTY3LDYgKzk3NywxMCBAQAogCQlCQzFBN0M1NzExMzZF
MTlDMDBGQjcxNjcgLyogUHJvY2Vzc0xhdW5jaGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFByb2Nlc3NMYXVuY2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQzFCNDE5NzExRDQxRDU3MDAxMUU4REQgLyogV0tCdW5kbGVQYWdlUHJpdmF0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRsZVBhZ2VQcml2YXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMUREN0IxMTE0REMzOTYwMDVBREFGMyAvKiBXZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMURG
RThEMTJCMzFDQTgwMDVERjczMCAvKiBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMxREZFOEUxMkIzMUNBODAwNURGNzMwIC8q
IFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUJDMURGRUEyMTJCMzFGODcwMDVERjczMCAvKiBXZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQkMxREZFQTMxMkIzMUY4NzAwNURGNzMwIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDMjA0RUUwMTFDODNFOTgwMDhGMzM3NSAvKiBJbmplY3RlZEJ1bmRsZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMjA0RUUxMTFDODNFOTgwMDhGMzM3NSAvKiBJbmpl
Y3RlZEJ1bmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZEJ1
bmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzIwNEVFNTExQzgzRUE5MDA4
RjMzNzUgLyogSW5qZWN0ZWRCdW5kbGVNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTA4Nyw2ICsxMTAxLDEyIEBACiAJCUJDODQ1MkE2MTE2MkM4MDkwMENBQjlCNSAv
KiBEcmF3aW5nQXJlYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEcmF3aW5n
QXJlYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzg0RUIxNzEyQTcxMDBDMDA4
M0YyREEgLyogV2ViUHJlZmVyZW5jZXNNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXZWJQcmVmZXJlbmNlc01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkM4NTdFODUxMkI3MUVCQjAwRURFQjJFIC8qIFdlYlBhZ2VQcm94eU1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBhZ2VQcm94eU1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM4NTdGODMxMkI4MkQwQjAwRURFQjJF
IC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJDODU3Rjg0MTJCODJEMEIwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUJDODU3RkIzMTJCODMwRTYwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM4NTdGQjQxMkI4MzBFNjAwRURFQjJFIC8q
IFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViT3BlblBhbmVsUGFyYW1ldGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUJDODU3RkU0MTJCODQzRDgwMEVERUIyRSAvKiBXS09wZW5QYW5lbFBhcmFtZXRl
cnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tPcGVuUGFuZWxQYXJhbWV0
ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDODU3RkU1MTJCODQzRDgwMEVE
RUIyRSAvKiBXS09wZW5QYW5lbFBhcmFtZXRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkM4Njk5QjIxMTZBQURBQTAwMkE5MjVCIC8qIFdLVmlldy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1ZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkM4Njk5QjMxMTZBQURBQTAwMkE5MjVCIC8qIFdLVmlldy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLVmlldy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQkM4Njk5QjQxMTZBQURBQTAwMkE5MjVCIC8qIFdLVmlld0ludGVy
bmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVmlld0ludGVybmFsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTc1LDYgKzE1OTUsOCBAQAogCQkJCUJD
MzNERDY3MTIzODQ2NDYwMDM2MEYzRiAvKiBXZWJOdW1iZXIuaCAqLywKIAkJCQlCQzU3NDRFRDEy
NjM4RkIzMDA2RjBGMTIgLyogV2ViUG9wdXBJdGVtLmNwcCAqLywKIAkJCQlCQzU3NDRFRTEyNjM4
RkIzMDA2RjBGMTIgLyogV2ViUG9wdXBJdGVtLmggKi8sCisJCQkJQkM4NTdGQjQxMkI4MzBFNjAw
RURFQjJFIC8qIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwICovLAorCQkJCUJDODU3RkIzMTJC
ODMwRTYwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmggKi8sCiAJCQkJQzA2QzYw
OTMxMjRDMTQ0MzAwMDE2ODJGIC8qIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwICovLAog
CQkJCUMwNkM2MDk0MTI0QzE0NDMwMDAxNjgyRiAvKiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmggKi8sCiAJCQkJQkM3QjYyNTExMkE0M0M5NjAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cERhdGEu
Y3BwICovLApAQCAtMTgxNSw2ICsxODM3LDggQEAKIAkJCQkxQzhFMjgxRjEyNzVEMTU0MDBCQzdC
RDAgLyogV2ViSW5zcGVjdG9yLmNwcCAqLywKIAkJCQkxQzhFMjgxRTEyNzVEMTU0MDBCQzdCRDAg
LyogV2ViSW5zcGVjdG9yLmggKi8sCiAJCQkJMUM4RTJBMUMxMjc3ODMzRjAwQkM3QkQwIC8qIFdl
Ykluc3BlY3Rvci5tZXNzYWdlcy5pbiAqLywKKwkJCQlCQzg1N0Y4NDEyQjgyRDBCMDBFREVCMkUg
LyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwICovLAorCQkJCUJDODU3RjgzMTJCODJE
MEIwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oICovLAogCQkJCUJDOTYz
RDZBMTEzREQxOTIwMDU3NEJFMiAvKiBXZWJQYWdlLmNwcCAqLywKIAkJCQlCQzAzMkQ4QjEwRjQz
N0EwMDA1OEMxNUEgLyogV2ViUGFnZS5oICovLAogCQkJCUMwQ0U3MjU4MTI0N0U0REEwMEJDMEVD
NCAvKiBXZWJQYWdlLm1lc3NhZ2VzLmluICovLApAQCAtMTg4OSw2ICsxOTEzLDggQEAKIAkJCQlC
QzU5NTM0MDEwRkMwNDUyMDA5OEY4MkQgLyogV2ViTG9hZGVyQ2xpZW50LmggKi8sCiAJCQkJQkNG
NjlGQTExMTc2RDAxNDAwNDcxQTUyIC8qIFdlYk5hdmlnYXRpb25EYXRhLmNwcCAqLywKIAkJCQlC
Q0Y2OUZBMDExNzZEMDE0MDA0NzFBNTIgLyogV2ViTmF2aWdhdGlvbkRhdGEuaCAqLywKKwkJCQlC
QzFERkVBMzEyQjMxRjg3MDA1REY3MzAgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94
eS5jcHAgKi8sCisJCQkJQkMxREZFQTIxMkIzMUY4NzAwNURGNzMwIC8qIFdlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyUHJveHkuaCAqLywKIAkJCQk1MTUzNTY5QTEyOTFCMUQyMDAwNzQ5REMgLyog
V2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCAqLywKIAkJCQk1MTUzNTY5QjEyOTFCMUQyMDAw
NzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmggKi8sCiAJCQkJQkM3QjYyMDUxMjlB
MEE2NzAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cC5jcHAgKi8sCkBAIC0xOTQ5LDYgKzE5NzUsMTAg
QEAKIAkJCQkxQUI3RDc4QjEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZC5oICovLAogCQkJ
CUJDRTQ2OTU3MTIxNEVERjQwMDBCOThFQiAvKiBXS0Zvcm1TdWJtaXNzaW9uTGlzdGVuZXIuY3Bw
ICovLAogCQkJCUJDRTQ2OTU4MTIxNEVERjQwMDBCOThFQiAvKiBXS0Zvcm1TdWJtaXNzaW9uTGlz
dGVuZXIuaCAqLywKKwkJCQlCQzFERkU4RTEyQjMxQ0E4MDA1REY3MzAgLyogV0tPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lci5jcHAgKi8sCisJCQkJQkMxREZFOEQxMkIzMUNBODAwNURGNzMwIC8qIFdL
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCAqLywKKwkJCQlCQzg1N0ZFNTEyQjg0M0Q4MDBFREVC
MkUgLyogV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcCAqLywKKwkJCQlCQzg1N0ZFNDEyQjg0M0Q4
MDBFREVCMkUgLyogV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmggKi8sCiAJCQkJQkNEMDEzOTgxMTBG
QTQyMDAwM0I4QTY3IC8qIFdLRnJhbWUuY3BwICovLAogCQkJCUJDRDAxMzk3MTEwRkE0MjAwMDNC
OEE2NyAvKiBXS0ZyYW1lLmggKi8sCiAJCQkJQkNCOUY2QTQxMTIzREQwRDAwQTEzN0UwIC8qIFdL
RnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAgKi8sCkBAIC0yNjkxLDYgKzI3MjEsMTEgQEAKIAkJCQlG
NjJBNzY2MjEyQjFBQkVEMDAwNUYxQjYgLyogV0tEYXRhYmFzZU1hbmFnZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUY2MkE3NkI3MTJCMUIyNUYwMDA1RjFCNiAvKiBXZWJEYXRhYmFzZU1hbmFnZXJN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjYyQTc2QjkxMkIxQjI1RjAwMDVGMUI2IC8q
IFdlYkRhdGFiYXNlTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUJD
MURGRThGMTJCMzFDQTgwMDVERjczMCAvKiBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQlCQzFERkVBNDEyQjMxRjg3MDA1REY3MzAgLyogV2ViT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkM4NTdGODUxMkI4MkQw
QjAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQlCQzg1N0ZCNTEyQjgzMEU2MDBFREVCMkUgLyogV2ViT3BlblBhbmVsUGFyYW1ldGVycy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQkM4NTdGRTYxMkI4NDNEODAwRURFQjJFIC8qIFdLT3BlblBh
bmVsUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0zMTA2LDYgKzMxNDEsMTEgQEAKIAkJ
CQlGNjJBNzZCNjEyQjFCMjVGMDAwNUYxQjYgLyogV2ViRGF0YWJhc2VNYW5hZ2VyTWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY2MkE3NkI4MTJCMUIyNUYwMDA1RjFCNiAv
KiBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCQzg1N0U4NzEyQjcxRUJCMDBFREVCMkUgLyogV2ViUGFnZVByb3h5TWFjLm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJQkM4NTdGN0UxMkI4MkNFRTAwRURFQjJFIC8qIFdlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkM4NTdGODYxMkI4
MkQwQjAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUJDODU3RkI2MTJCODMwRTYwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxQYXJhbWV0
ZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDODU4MDYyMTJCODUwNTcwMEVERUIyRSAvKiBX
S09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDODU4MDYz
MTJCODUwNTcwMEVERUIyRSAvKiBXS09wZW5QYW5lbFBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24gNzM5ODUpCisrKyBXZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzUsNiArMzUsOCBAQAogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1
ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNs
dWRlICJXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiV2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCkBA
IC01MDgsOSArNTEwLDI2IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpjYW5jZWxHZW9sb2NhdGlv
blAKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYkNocm9tZUNsaWVudDo6cnVu
T3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pCit2b2lkIFdlYkNocm9t
ZUNsaWVudDo6cnVuT3BlblBhbmVsKEZyYW1lKiBmcmFtZSwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nl
cj4gcHJwRmlsZUNob29zZXIpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAobV9w
YWdlLT5hY3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcigpKQorICAgICAgICByZXR1cm47CisK
KyAgICBSZWZQdHI8RmlsZUNob29zZXI+IGZpbGVDaG9vc2VyID0gcHJwRmlsZUNob29zZXI7CisK
KyAgICBtX3BhZ2UtPnNldEFjdGl2ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyKFdlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyOjpjcmVhdGUobV9wYWdlLCBmaWxlQ2hvb3Nlci5nZXQoKSkpOworICAg
IAorICAgIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnM6OkRhdGEgcGFyYW1ldGVyczsKKyAgICBwYXJh
bWV0ZXJzLmFsbG93TXVsdGlwbGVGaWxlcyA9IGZpbGVDaG9vc2VyLT5hbGxvd3NNdWx0aXBsZUZp
bGVzKCk7CisjaWYgRU5BQkxFKERJUkVDVE9SWV9VUExPQUQpCisgICAgcGFyYW1ldGVycy5hbGxv
d3NEaXJlY3RvcnlVcGxvYWQgPSBmaWxlQ2hvb3Nlci0+YWxsb3dzRGlyZWN0b3J5VXBsb2FkKCk7
CisjZWxzZQorICAgIHBhcmFtZXRlcnMuYWxsb3dzRGlyZWN0b3J5VXBsb2FkID0gZmFsc2U7Cisj
ZW5kaWYKKyAgICBwYXJhbWV0ZXJzLmFjY2VwdFR5cGVzID0gZmlsZUNob29zZXItPmFjY2VwdFR5
cGVzKCk7CisgICAgcGFyYW1ldGVycy5maWxlbmFtZXMgPSBmaWxlQ2hvb3Nlci0+ZmlsZW5hbWVz
KCk7CisKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuT3BlblBh
bmVsKHN0YXRpY19jYXN0PFdlYkZyYW1lTG9hZGVyQ2xpZW50Kj4oZnJhbWUtPmxvYWRlcigpLT5j
bGllbnQoKSktPndlYkZyYW1lKCktPmZyYW1lSUQoKSwgcGFyYW1ldGVycykpOwogfQogCiB2b2lk
IFdlYkNocm9tZUNsaWVudDo6Y2hvb3NlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiwgRmlsZUNob29zZXIqKQpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcAkocmV2aXNpb24gMCkKKysr
IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNw
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJX
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFz
c1JlZlB0cjxXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcj4gV2ViT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXI6OmNyZWF0ZShXZWJQYWdlKiBwYWdlLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZpbGVDaG9v
c2VyPiBmaWxlQ2hvb3NlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyKHBhZ2UsIGZpbGVDaG9vc2VyKSk7Cit9CisKK1dlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyOjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcihXZWJQYWdlKiBwYWdlLCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OkZpbGVDaG9vc2VyPiBmaWxlQ2hvb3NlcikKKyAgICA6IG1fcGFn
ZShwYWdlKQorICAgICwgbV9maWxlQ2hvb3NlcihmaWxlQ2hvb3NlcikKK3sKK30KKworV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXI6On5XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcigpCit7Cit9
CisKK3ZvaWQgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXI6OmRpZENob29zZUZpbGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBmaWxlcykKK3sKKyAgICBtX2ZpbGVDaG9vc2VyLT5jaG9vc2VGaWxl
cyhmaWxlcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5o
CShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJfaAorI2RlZmluZSBXZWJPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lcl9oCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvRmlsZUNob29zZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYlBhZ2U7CisKK2NsYXNzIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyIDogcHVibGlj
IFJlZkNvdW50ZWQ8V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXI+IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcj4gY3JlYXRlKFdlYlBh
Z2UqLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZpbGVDaG9vc2VyPik7CisgICAgfldlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyKCk7CisKKyAgICB2b2lkIGRpc2Nvbm5lY3RGcm9tUGFnZSgpIHsgbV9w
YWdlID0gMDsgfQorICAgIHZvaWQgZGlkQ2hvb3NlRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
KTsKKworcHJpdmF0ZToKKyAgICBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcihXZWJQYWdlKiwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpGaWxlQ2hvb3Nlcj4pOworCisgICAgV2ViUGFnZSogbV9wYWdl
OworICAgIFJlZlB0cjxXZWJDb3JlOjpGaWxlQ2hvb3Nlcj4gbV9maWxlQ2hvb3NlcjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisKKyNlbmRpZiAvLyBXZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lcl9oCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2
aXNpb24gNzQwMDApCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51
Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXIuaCIKICNpbmNsdWRlICJXZWJEcmFnQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViRWRpdG9yQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKQEAgLTMyNiw2ICszMjcsMTEgQEAgdm9pZCBX
ZWJQYWdlOjpjbG9zZSgpCiAgICAgICAgIG1fYWN0aXZlUG9wdXBNZW51ID0gMDsKICAgICB9CiAK
KyAgICBpZiAobV9hY3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcikgeworICAgICAgICBtX2Fj
dGl2ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5kaXNjb25uZWN0RnJvbVBhZ2UoKTsKKyAgICAg
ICAgbV9hY3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA9IDA7CisgICAgfQorCiAgICAgbV9z
YW5kYm94RXh0ZW5zaW9uVHJhY2tlci5pbnZhbGlkYXRlKCk7CiAKICAgICBtX21haW5GcmFtZS0+
Y29yZUZyYW1lKCktPmxvYWRlcigpLT5kZXRhY2hGcm9tUGFyZW50KCk7CkBAIC0xMDYyLDYgKzEw
NjgsMTEgQEAgdm9pZCBXZWJQYWdlOjpzZXRBY3RpdmVQb3B1cE1lbnUoV2ViUG9wdQogICAgIG1f
YWN0aXZlUG9wdXBNZW51ID0gbWVudTsKIH0KIAordm9pZCBXZWJQYWdlOjpzZXRBY3RpdmVPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lcihQYXNzUmVmUHRyPFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
PiBvcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcikKK3sKKyAgICBtX2FjdGl2ZU9wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyID0gb3BlblBhbmVsUmVzdWx0TGlzdGVuZXI7Cit9CisKIGJvb2wgV2ViUGFnZTo6
ZmluZFN0cmluZ0Zyb21JbmplY3RlZEJ1bmRsZShjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9w
dGlvbnMgb3B0aW9ucykKIHsKICAgICByZXR1cm4gbV9wYWdlLT5maW5kU3RyaW5nKHRhcmdldCwg
b3B0aW9ucyk7CkBAIC0xMDkxLDYgKzExMDIsMjAgQEAgdm9pZCBXZWJQYWdlOjpkaWRDaGFuZ2VT
ZWxlY3RlZEluZGV4Rm9yQQogICAgIG1fYWN0aXZlUG9wdXBNZW51ID0gMDsKIH0KIAordm9pZCBX
ZWJQYWdlOjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZmlsZXMpCit7CisgICAgaWYgKCFtX2FjdGl2ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX2FjdGl2ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5kaWRD
aG9vc2VGaWxlcyhmaWxlcyk7CisgICAgbV9hY3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA9
IDA7Cit9CisKK3ZvaWQgV2ViUGFnZTo6ZGlkQ2FuY2VsRm9yT3BlblBhbmVsKCkKK3sKKyAgICBt
X2FjdGl2ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyID0gMDsKK30KKwogdm9pZCBXZWJQYWdlOjpk
aWRTZWxlY3RJdGVtRnJvbUFjdGl2ZUNvbnRleHRNZW51KGNvbnN0IFdlYkNvbnRleHRNZW51SXRl
bURhdGEmIGl0ZW0pCiB7CiAgICAgQVNTRVJUKG1fY29udGV4dE1lbnUpOwpJbmRleDogV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gNzQwMDApCisrKyBXZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDcg
QEAgY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJJbnNwZWN0b3I7CiBjbGFzcyBXZWJLZXlib2Fy
ZEV2ZW50OwogY2xhc3MgV2ViTW91c2VFdmVudDsKK2NsYXNzIFdlYk9wZW5QYW5lbFJlc3VsdExp
c3RlbmVyOwogY2xhc3MgV2ViUGFnZUdyb3VwUHJveHk7CiBjbGFzcyBXZWJQb3B1cE1lbnU7CiBj
bGFzcyBXZWJXaGVlbEV2ZW50OwpAQCAtMTM2LDYgKzEzNyw5IEBAIHB1YmxpYzoKICAgICBib29s
IGlzSW5SZWRvKCkgY29uc3QgeyByZXR1cm4gbV9pc0luUmVkbzsgfQogCiAgICAgdm9pZCBzZXRB
Y3RpdmVQb3B1cE1lbnUoV2ViUG9wdXBNZW51Kik7CisgICAgCisgICAgV2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXIqIGFjdGl2ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyKCkgY29uc3QgeyByZXR1
cm4gbV9hY3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5nZXQoKTsgfQorICAgIHZvaWQgc2V0
QWN0aXZlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIoUGFzc1JlZlB0cjxXZWJPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lcj4pOwogCiAgICAgLy8gLS0gQ2FsbGVkIGZyb20gV2ViUHJvY2Vzcy4KICAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNz
YWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwpAQCAtMzIyLDYgKzMyNiw5IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIGRpZENoYW5nZVNlbGVjdGVkSW5kZXhGb3JBY3RpdmVQb3B1cE1l
bnUoaW50MzJfdCBuZXdJbmRleCk7CiAKKyAgICB2b2lkIGRpZENob29zZUZpbGVzRm9yT3BlblBh
bmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CisgICAgdm9pZCBkaWRDYW5jZWxGb3JPcGVuUGFu
ZWwoKTsKKwogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIHZvaWQgZGlkU2VsZWN0SXRl
bUZyb21BY3RpdmVDb250ZXh0TWVudShjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJik7CiAj
ZW5kaWYKQEAgLTM4NCw2ICszOTEsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgUmVmUHRyPFdl
YlBvcHVwTWVudT4gbV9hY3RpdmVQb3B1cE1lbnU7CiAgICAgUmVmUHRyPFdlYkNvbnRleHRNZW51
PiBtX2NvbnRleHRNZW51OworICAgIFJlZlB0cjxXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcj4g
bV9hY3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcjsKIAogICAgIFNhbmRib3hFeHRlbnNpb25U
cmFja2VyIG1fc2FuZGJveEV4dGVuc2lvblRyYWNrZXI7CiAgICAgdWludDY0X3QgbV9wYWdlSUQ7
CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4JKHJldmlzaW9uIDc0MDAwKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNiBAQCBtZXNzYWdlcyAt
PiBXZWJQYWdlIHsKICAgICBHZXRTb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBjYWxsYmFja0lEKQogICAgIFJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXVEY6OlN0cmlu
ZyBzY3JpcHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKLQogICAgIFByZWZlcmVuY2VzRGlkQ2hh
bmdlKFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSkKIAogICAgIFNldFVzZXJBZ2Vu
dChXVEY6OlN0cmluZyB1c2VyQWdlbnQpCkBAIC05MSw2ICs5MCwxMCBAQCBtZXNzYWdlcyAtPiBX
ZWJQYWdlIHsKICAgICAjIENvbnRleHQgbWVudS4KICAgICBEaWRTZWxlY3RJdGVtRnJvbUFjdGl2
ZUNvbnRleHRNZW51KFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YSBtZW51SXRlbSk7CiAK
KyAgICAjIE9wZW4gcGFuZWwuCisgICAgRGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoVmVjdG9y
PFdURjo6U3RyaW5nPiBmaWxlVVJMcykKKyAgICBEaWRDYW5jZWxGb3JPcGVuUGFuZWwoKQorCiAg
ICAgU2V0V2luZG93UmVzaXplclNpemUoV2ViQ29yZTo6SW50U2l6ZSBpbnRlcnNlY3RzVmlldykK
IAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTEwMCwxMCArMTAzLDEyIEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2UgewogICAgIENoYXJhY3RlckluZGV4Rm9yUG9pbnQoV2ViQ29yZTo6SW50UG9pbnQgcG9p
bnQpIC0+ICh1aW50NjRfdCByZXN1bHQpCiAgICAgRmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2Uo
dWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCkgLT4gKFdlYkNvcmU6OkludFJlY3Qg
cmVzdWx0UmVjdCkKICNlbmRpZgotCS8vIFRoaXMgaXMgYSBkdW1teSBtZXNzYWdlIHRvIGF2b2lk
IGJyZWFraW5nIHRoZSBidWlsZCBmb3IgcGxhdGZvcm1zIHRoYXQgZG9uJ3QgcmVxdWlyZSAKLQkv
LyBzeW5jaHJvbm91cyBtZXNzYWdlcy4KLQlEdW1teSgpIC0+IChib29sIGR1bW15UmV0dXJuKQor
CiAjaWYgUExBVEZPUk0oUVQpCiAgICAgRmluZFpvb21hYmxlQXJlYUZvclBvaW50KFdlYkNvcmU6
OkludFBvaW50IHBvaW50KQogI2VuZGlmCisKKyAgICAvLyBUaGlzIGlzIGEgZHVtbXkgbWVzc2Fn
ZSB0byBhdm9pZCBicmVha2luZyB0aGUgYnVpbGQgZm9yIHBsYXRmb3JtcyB0aGF0IGRvbid0IHJl
cXVpcmUgCisgICAgLy8gc3luY2hyb25vdXMgbWVzc2FnZXMuCisgICAgRHVtbXkoKSAtPiAoYm9v
bCBkdW1teVJldHVybikKIH0KSW5kZXg6IFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCShyZXZpc2lvbiA3NDAwMCkKKysr
IFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01NzEsNiArNTcx
LDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XFNoYXJlZFxXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJ
PEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxXZWJPcGVuUGFuZWxQYXJhbWV0ZXJz
LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNo
YXJlZFxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBA
IC0xMzM4LDYgKzEzNDYsMTQgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcV2ViUGFnZVxXZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lci5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxXZWJQcm9jZXNzXFdlYlBhZ2VcV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIu
aCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XFdlYlByb2Nlc3NcV2ViUGFnZVxXZWJQYWdlLmNwcCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KQEAg
LTIwNDcsNiArMjA2MywxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5j
cHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJ
UHJvY2Vzc1xXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgiCisJCQkJPgorCQkJPC9G
aWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xXZWJQYWdlQ29u
dGV4dE1lbnVDbGllbnQuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAgLTIyNTcsNiArMjI4MSwy
MiBAQAogCQkJCQkJPgogCQkJCQk8L0ZpbGU+CiAJCQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXFVJUHJvY2Vzc1xBUElcQ1xXS09wZW5QYW5lbFBhcmFtZXRlcnMuY3BwIgorCQkJCQkJ
PgorCQkJCQk8L0ZpbGU+CisJCQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJv
Y2Vzc1xBUElcQ1xXS09wZW5QYW5lbFBhcmFtZXRlcnMuaCIKKwkJCQkJCT4KKwkJCQkJPC9GaWxl
PgorCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcQVBJXENcV0tP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAiCisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJ
PEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXEFQSVxDXFdLT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXIuaCIKKwkJCQkJCT4KKwkJCQkJPC9GaWxlPgorCQkJCQk8RmlsZQogCQkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcQVBJXENcV0tQYWdlLmNwcCIKIAkJCQkJCT4K
IAkJCQkJPC9GaWxlPgpJbmRleDogV2ViS2l0Mi93aW4vV2ViS2l0MkdlbmVyYXRlZC5tYWtlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvd2luL1dlYktpdDJHZW5lcmF0ZWQubWFrZQkocmV2aXNpb24g
NzM5ODUpCisrKyBXZWJLaXQyL3dpbi9XZWJLaXQyR2VuZXJhdGVkLm1ha2UJKHdvcmtpbmcgY29w
eSkKQEAgLTQ5LDYgKzQ5LDggQEAgYWxsOgogICAgIHhjb3B5IC95IC9kICIuLlxVSVByb2Nlc3Nc
QVBJXGNcV0tJbnNwZWN0b3IuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIi
CiAgICAgeGNvcHkgL3kgL2QgIi4uXFVJUHJvY2Vzc1xBUElcQ1xXS05hdGl2ZUV2ZW50LmgiICIk
KFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxXZWJLaXQyIgogICAgIHhjb3B5IC95IC9kICIuLlxV
SVByb2Nlc3NcQVBJXENcV0tOYXZpZ2F0aW9uRGF0YS5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGlu
Y2x1ZGVcV2ViS2l0MiIKKyAgICB4Y29weSAveSAvZCAiLi5cVUlQcm9jZXNzXEFQSVxDXFdLT3Bl
blBhbmVsUGFyYW1ldGVycy5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIK
KyAgICB4Y29weSAveSAvZCAiLi5cVUlQcm9jZXNzXEFQSVxDXFdLT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXIuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAgICAgeGNvcHkg
L3kgL2QgIi4uXFVJUHJvY2Vzc1xBUElcQ1xXS1BhZ2UuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxp
bmNsdWRlXFdlYktpdDIiCiAgICAgeGNvcHkgL3kgL2QgIi4uXFVJUHJvY2Vzc1xBUElcQ1xXS1Bh
Z2VHcm91cC5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKICAgICB4Y29w
eSAveSAvZCAiLi5cVUlQcm9jZXNzXEFQSVxDXFdLUHJlZmVyZW5jZXMuaCIgIiQoV0VCS0lUT1VU
UFVURElSKVxpbmNsdWRlXFdlYktpdDIiCkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NDA5NCkKKysrIFdl
YktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEw
LTEyLTE0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViS2l0MjogQ2FuJ3QgYWRkIGZpbGVzIHRv
IGFuIDxpbnB1dCB0eXBlPWZpbGU+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MTA4NworCisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJX
aW5kb3dDb250cm9sbGVyLm06CisgICAgICAgIChydW5PcGVuUGFuZWwpOgorICAgICAgICAoLVtC
cm93c2VyV2luZG93Q29udHJvbGxlciBhd2FrZUZyb21OaWJdKToKKyAgICAgICAgKiBNaW5pQnJv
d3Nlci93aW4vQnJvd3NlclZpZXcuY3BwOgorICAgICAgICAoQnJvd3NlclZpZXc6OmNyZWF0ZSk6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChXVFI6OmNyZWF0ZU90aGVyUGFnZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpp
bml0aWFsaXplKToKKwogMjAxMC0xMi0xNCAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmlhbiBMaS4KSW5kZXg6IFdlYktpdFRvb2xzL01p
bmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdFRvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tCShyZXZp
c2lvbiA3Mzk3NSkKKysrIFdlYktpdFRvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93
Q29udHJvbGxlci5tCSh3b3JraW5nIGNvcHkpCkBAIC01MzUsNiArNTM1LDM2IEBAIHN0YXRpYyBi
b29sIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgKICAgICByZXR1cm4gYnV0dG9uID09IE5T
QWxlcnRGaXJzdEJ1dHRvblJldHVybjsKIH0KIAorc3RhdGljIHZvaWQgcnVuT3BlblBhbmVsKFdL
UGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYg
cGFyYW1ldGVycywgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBwcmludGYoInJ1bk9wZW5QYW5lbCBjYWxsYmFja1xu
Iik7CisKKyAgICBOU09wZW5QYW5lbCAqb3BlblBhbmVsID0gW1tOU09wZW5QYW5lbCBhbGxvY10g
aW5pdF07CisgICAgW29wZW5QYW5lbCBzZXRBbGxvd3NNdWx0aXBsZVNlbGVjdGlvbjpXS09wZW5Q
YW5lbFBhcmFtZXRlcnNHZXRBbGxvd3NNdWx0aXBsZUZpbGVzKHBhcmFtZXRlcnMpXTsKKworICAg
IFdLUmV0YWluKGxpc3RlbmVyKTsKKworICAgIFtvcGVuUGFuZWwgYmVnaW5TaGVldE1vZGFsRm9y
V2luZG93OlsoQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgKiljbGllbnRJbmZvIHdpbmRvd10gY29t
cGxldGlvbkhhbmRsZXI6XihOU0ludGVnZXIgcmVzdWx0KSB7CisgICAgICAgIGlmIChyZXN1bHQg
PT0gTlNGaWxlSGFuZGxpbmdQYW5lbE9LQnV0dG9uKSB7CisgICAgICAgICAgICBXS011dGFibGVB
cnJheVJlZiBmaWxlVVJMcyA9IFdLTXV0YWJsZUFycmF5Q3JlYXRlKCk7CisKKyAgICAgICAgICAg
IE5TVVJMICpuc1VSTDsKKyAgICAgICAgICAgIGZvciAobnNVUkwgaW4gW29wZW5QYW5lbCBVUkxz
XSkgeworICAgICAgICAgICAgICAgIFdLVVJMUmVmIHdrVVJMID0gV0tVUkxDcmVhdGVXaXRoQ0ZV
UkwoKENGVVJMUmVmKW5zVVJMKTsKKyAgICAgICAgICAgICAgICBXS0FycmF5QXBwZW5kSXRlbShm
aWxlVVJMcywgd2tVUkwpOworICAgICAgICAgICAgICAgIFdLUmVsZWFzZSh3a1VSTCk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDaG9vc2VG
aWxlcyhsaXN0ZW5lciwgZmlsZVVSTHMpOworCisgICAgICAgICAgICBXS1JlbGVhc2UoZmlsZVVS
THMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXJDYW5jZWwobGlzdGVuZXIpOworICAgICAgICAKKyAgICAgICAgV0tSZWxlYXNlKGxpc3RlbmVy
KTsKKyAgICB9XTsKK30KKwogLSAodm9pZClhd2FrZUZyb21OaWIKIHsKICAgICBfd2ViVmlldyA9
IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOltjb250YWluZXJWaWV3IGZyYW1lXSBjb250
ZXh0UmVmOl9jb250ZXh0XTsKQEAgLTYwNyw3ICs2MzcsOCBAQCAtICh2b2lkKWF3YWtlRnJvbU5p
YgogICAgICAgICBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwsCiAgICAgICAgIDAsICAgICAg
ICAgIC8qIGRpZERyYXcgKi8KICAgICAgICAgMCwgICAgICAgICAgLyogcGFnZURpZFNjcm9sbCAq
LwotICAgICAgICAwICAgICAgICAgICAvKiBleGNlZWRlZERhdGFiYXNlUXVvdGEgKi8KKyAgICAg
ICAgMCwgICAgICAgICAgLyogZXhjZWVkZWREYXRhYmFzZVF1b3RhICovCisgICAgICAgIHJ1bk9w
ZW5QYW5lbAogICAgIH07CiAgICAgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KF93ZWJWaWV3LnBhZ2VS
ZWYsICZ1aUNsaWVudCk7CiB9CkluZGV4OiBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci93aW4vQnJv
d3NlclZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL01pbmlCcm93c2VyL3dpbi9C
cm93c2VyVmlldy5jcHAJKHJldmlzaW9uIDczOTc1KQorKysgV2ViS2l0VG9vbHMvTWluaUJyb3dz
ZXIvd2luL0Jyb3dzZXJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDcgKzExNyw4IEBA
IHZvaWQgQnJvd3NlclZpZXc6OmNyZWF0ZShSRUNUIHdlYlZpZXdSZWMKICAgICAgICAgMCwgICAg
ICAgICAgLyogcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsICovCiAgICAgICAgIDAsICAgICAg
ICAgIC8qIGRpZERyYXcgKi8KICAgICAgICAgMCwgICAgICAgICAgLyogcGFnZURpZFNjcm9sbCAq
LwotICAgICAgICAwICAgICAgICAgICAvKiBleGNlZWRlZERhdGFiYXNlUXVvdGEgKi8KKyAgICAg
ICAgMCwgICAgICAgICAgLyogZXhjZWVkZWREYXRhYmFzZVF1b3RhICovCisgICAgICAgIDAgICAg
ICAgICAgIC8qIHJ1bk9wZW5QYW5lbCAqLwogICAgIH07CiAKICAgICBXS1BhZ2VTZXRQYWdlVUlD
bGllbnQoV0tWaWV3R2V0UGFnZShtX3dlYlZpZXcpLCAmdWlDbGllbnQpOwpJbmRleDogV2ViS2l0
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDczOTc2KQorKysgV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw3ICsxMzYsOCBAQCBzdGF0aWMgV0tQYWdlUmVmIGNy
ZWF0ZU90aGVyUGFnZShXS1BhZ2VSCiAgICAgICAgIDAsIC8vIHJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbAogICAgICAgICAwLCAvLyBkaWREcmF3CiAgICAgICAgIDAsIC8vIHBhZ2VEaWRTY3Jv
bGwKLSAgICAgICAgMCAgLy8gZXhjZWVkZWREYXRhYmFzZVF1b3RhCisgICAgICAgIDAsIC8vIGV4
Y2VlZGVkRGF0YWJhc2VRdW90YQorICAgICAgICAwICAvLyBydW5PcGVuUGFuZWwKICAgICB9Owog
ICAgIFdLUGFnZVNldFBhZ2VVSUNsaWVudChuZXdQYWdlLCAmb3RoZXJQYWdlVUlDbGllbnQpOwog
CkBAIC0yMzgsNyArMjM5LDggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZShpbnQg
YXJnYwogICAgICAgICAwLCAvLyBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwKICAgICAgICAg
MCwgLy8gZGlkRHJhdwogICAgICAgICAwLCAvLyBwYWdlRGlkU2Nyb2xsCi0gICAgICAgIDAgIC8v
IGV4Y2VlZGVkRGF0YWJhc2VRdW90YQorICAgICAgICAwLCAvLyBleGNlZWRlZERhdGFiYXNlUXVv
dGEKKyAgICAgICAgMCAgLy8gcnVuT3BlblBhbmVsCiAgICAgfTsKICAgICBXS1BhZ2VTZXRQYWdl
VUlDbGllbnQobV9tYWluV2ViVmlldy0+cGFnZSgpLCAmcGFnZVVJQ2xpZW50KTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76683</attachid>
            <date>2010-12-15 13:06:14 -0800</date>
            <delta_ts>2010-12-15 13:26:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>open.diff</filename>
            <type>text/plain</type>
            <size>72008</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NDEzNikKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsOTkgQEAKKzIwMTAtMTItMTUgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJLaXQy
OiBDYW4ndCBhZGQgZmlsZXMgdG8gYW4gPGlucHV0IHR5cGU9ZmlsZT4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMDg3CisKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdDIvbWVzc2FnZXMucHk6CisgICAgICAgIEFkZHMgbmV3IHR5cGVzLgorCisgICAg
ICAgICogU2hhcmVkL0FQSS9jL1dLQmFzZS5oOgorICAgICAgICBBZGRzIFdLT3BlblBhbmVsUGFy
YW1ldGVyc1JlZiBhbmQgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZi4KKworICAgICAgICAq
IFNoYXJlZC9BUElPYmplY3QuaDoKKyAgICAgICAgQWRkcyBUeXBlT3BlblBhbmVsUGFyYW1ldGVy
cyBhbmQgVHlwZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLgorCisgICAgICAgICogU2hhcmVkL1dl
Yk9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViT3Bl
blBhbmVsUGFyYW1ldGVyczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViT3BlblBhbmVs
UGFyYW1ldGVyczo6V2ViT3BlblBhbmVsUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk9wZW5QYW5lbFBhcmFtZXRlcnM6On5XZWJPcGVuUGFuZWxQYXJhbWV0ZXJzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViT3BlblBhbmVsUGFyYW1ldGVyczo6RGF0YTo6ZW5jb2RlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViT3BlblBhbmVsUGFyYW1ldGVyczo6RGF0YTo6ZGVjb2RlKToKKyAgICAgICAg
KiBTaGFyZWQvV2ViT3BlblBhbmVsUGFyYW1ldGVycy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViT3BlblBhbmVsUGFyYW1ldGVyczo6YWxsb3dNdWx0aXBsZUZpbGVzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViT3BlblBhbmVsUGFyYW1ldGVyczo6dHlwZSk6CisgICAgICAgIENsYXNzIHJl
cHJlc2VudGluZyBvcHRpb25zIG9uZSBjYW4gcGFzcyB0byBvcGVuIHBhbmVsLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorICAgICAgICBBZGQgY2FzdHMgZm9yIFdl
Yk9wZW5QYW5lbFBhcmFtZXRlcnMgYW5kIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHku
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcDog
QWRkZWQuCisgICAgICAgIChXS09wZW5QYW5lbFBhcmFtZXRlcnNHZXRUeXBlSUQpOgorICAgICAg
ICAoV0tPcGVuUGFuZWxQYXJhbWV0ZXJzR2V0QWxsb3dzTXVsdGlwbGVGaWxlcyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUGFyYW1ldGVycy5oOiBBZGRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHA6IEFkZGVk
LgorICAgICAgICAoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckdldFR5cGVJRCk6CisgICAgICAg
IChXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlRmlsZXMpOgorICAgICAgICAoV0tPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lckNhbmNlbCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaDogQWRkZWQuCisgICAgICAgIEFkZCBBUEkgd3JhcHBl
cnMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmg6CisgICAgICAgIEFkZCBu
ZXcgVUkgY2FsbGJhY2ssIFdLUGFnZVJ1bk9wZW5QYW5lbENhbGxiYWNrLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dlYktpdDIuaDoKKyAgICAgICAgQWRkIGluY2x1ZGVzIGZvciBuZXcg
QVBJIGhlYWRlcnMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwOgor
ICAgICAgICAoUVdLUGFnZTo6UVdLUGFnZSk6CisgICAgICAgIFN0dWIgb3V0IHRoZSBydW5PcGVu
UGFuZWwgY2FsbGJhY2suCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lclByb3h5OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6fldlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lclByb3h5OjpjaG9vc2VGaWxlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmNhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmludmFsaWRhdGUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5Lmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5Ojp0eXBlKToKKyAg
ICAgICAgQWRkcyB0aGUgbGlzdGVuZXIgdXNlZCB0byBjaG9vc2UgZmlsZXMgZm9yIDxpbnB1dCB0
eXBlPWZpbGU+CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5PcGVuUGFuZWwpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpkaWRDYW5jZWxGb3JPcGVuUGFuZWwpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVSUNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlVJQ2xpZW50OjpydW5PcGVuUGFuZWwpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJVSUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojpy
dW5PcGVuUGFuZWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXI6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXI6On5XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
cik6CisgICAgICAgIChXZWJLaXQ6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyOjpkaWRDaG9v
c2VGaWxlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lcjo6ZGlzY29ubmVjdEZyb21QYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNsb3NlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0QWN0aXZlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZENhbmNlbEZvck9wZW5QYW5lbCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6YWN0aXZlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICBQaXBlIHRocm91Z2ggZmlsZSBj
aG9vc2luZy4KKworICAgICAgICAqIFdlYktpdDIucHJvOgorICAgICAgICAqIFdlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi52Y3Byb2o6Cisg
ICAgICAgICogd2luL1dlYktpdDJHZW5lcmF0ZWQubWFrZToKKyAgICAgICAgQWRkIG5ldyBmaWxl
cy4KKwogMjAxMC0xMi0xNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgpJbmRleDogV2ViS2l0Mi9X
ZWJLaXQyLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYktpdDIucHJvCShyZXZpc2lvbiA3
NDEzNikKKysrIFdlYktpdDIvV2ViS2l0Mi5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTI2MSw2ICsy
NjEsNyBAQCBIRUFERVJTICs9IFwKICAgICBTaGFyZWQvV2ViRmluZE9wdGlvbnMuaCBcCiAgICAg
U2hhcmVkL1dlYk5hdmlnYXRpb25EYXRhU3RvcmUuaCBcCiAgICAgU2hhcmVkL1dlYk51bWJlci5o
IFwKKyAgICBTaGFyZWQvV2ViT3BlblBhbmVsUGFyYW1ldGVycy5oIFwKICAgICBTaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIFwKICAgICBTaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5o
IFwKICAgICBTaGFyZWQvV2ViUG9wdXBJdGVtLmggXApAQCAtMjg4LDYgKzI4OSw4IEBAIEhFQURF
UlMgKz0gXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmggXAogICAgIFVJUHJvY2Vzcy9B
UEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVuZXIuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLSW5z
cGVjdG9yLmggXAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFBhcmFtZXRlcnMuaCBc
CisgICAgVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCBcCiAgICAg
VUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkRhdGEuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuaCBcCkBAIC0zNDUs
NiArMzQ4LDcgQEAgSEVBREVSUyArPSBcCiAgICAgVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5o
IFwKICAgICBVSVByb2Nlc3MvV2ViTmF2aWdhdGlvbkRhdGEuaCBcCiAgICAgVUlQcm9jZXNzL1dl
YlBhZ2VDb250ZXh0TWVudUNsaWVudC5oIFwKKyAgICBVSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXJQcm94eS5oIFwKICAgICBVSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmggXAogICAg
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBcCiAgICAgVUlQcm9jZXNzL1dlYlBvbGljeUNsaWVu
dC5oIFwKQEAgLTQwNyw2ICs0MTEsNyBAQCBIRUFERVJTICs9IFwKICAgICBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRWRpdENvbW1hbmQuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmggXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaCBcCisgICAgV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggXAogICAgIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmggXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3Jv
dXBQcm94eS5oIFwKICAgICBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBcCkBAIC00NTgsNiArNDYz
LDcgQEAgU09VUkNFUyArPSBcCiAgICAgU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAgXAog
ICAgIFNoYXJlZC9XZWJLZXlib2FyZEV2ZW50LmNwcCBcCiAgICAgU2hhcmVkL1dlYk1vdXNlRXZl
bnQuY3BwIFwKKyAgICBTaGFyZWQvV2ViT3BlblBhbmVsUGFyYW1ldGVycy5jcHAgXAogICAgIFNo
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBcCiAgICAgU2hhcmVkL1dlYlBhZ2VH
cm91cERhdGEuY3BwIFwKICAgICBTaGFyZWQvV2ViUGxhdGZvcm1Ub3VjaFBvaW50LmNwcCBcCkBA
IC00ODcsNiArNDkzLDggQEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLRnJh
bWUuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmNwcCBc
CiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcCBcCisgICAgVUlQcm9jZXNzL0FQ
SS9DL1dLT3BlblBhbmVsUGFyYW1ldGVycy5jcHAgXAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS09w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdh
dGlvbkRhdGEuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBcCiAgICAgVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcCBcCkBAIC01MzYsNiArNTQ0LDcgQEAgU09VUkNF
UyArPSBcCiAgICAgVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHAgXAogICAgIFVJUHJvY2Vz
cy9XZWJOYXZpZ2F0aW9uRGF0YS5jcHAgXAogICAgIFVJUHJvY2Vzcy9XZWJQYWdlQ29udGV4dE1l
bnVDbGllbnQuY3BwIFwKKyAgICBVSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQ
cm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuY3BwIFwKICAgICBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL1dlYlBvbGljeUNsaWVudC5jcHAg
XApAQCAtNjE3LDkgKzYyNiwxMCBAQCBTT1VSQ0VTICs9IFwKICAgICBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRWRpdENvbW1hbmQuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcCBcCi0gICAgV2Vi
UHJvY2Vzcy9XZWJQYWdlL3F0L1dlYkluc3BlY3RvclF0LmNwcCBcCisgICAgV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3Vw
UHJveHkuY3BwIFwKKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvcXQvV2ViSW5zcGVjdG9yUXQuY3Bw
IFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvcXQvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUXQu
Y3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvcXQvVGlsZWREcmF3aW5nQXJlYVF0LmNwcCBc
CiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dlYlBhZ2VRdC5jcHAgXApJbmRleDogV2ViS2l0
Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TY3Jp
cHRzL3dlYmtpdDIvbWVzc2FnZXMucHkJKHJldmlzaW9uIDc0MTM2KQorKysgV2ViS2l0Mi9TY3Jp
cHRzL3dlYmtpdDIvbWVzc2FnZXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTI0OSw4ICsyNDksOCBA
QCBkZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24obWVzc2FnCiAKIGRlZiBzdHJ1Y3Rf
b3JfY2xhc3MobmFtZXNwYWNlLCB0eXBlKToKICAgICBzdHJ1Y3RzID0gZnJvemVuc2V0KFsKLSAg
ICAgICAgJ1dlYkNvcmU6OktleXByZXNzQ29tbWFuZCcsCiAgICAgICAgICdXZWJDb3JlOjpDb21w
b3NpdGlvblVuZGVybGluZScsCisgICAgICAgICdXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQnLAog
ICAgICAgICAnV2ViQ29yZTo6UGx1Z2luSW5mbycsCiAgICAgICAgICdXZWJDb3JlOjpWaWV3cG9y
dEFyZ3VtZW50cycsCiAgICAgICAgICdXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcycsCkBAIC0yNTgs
NiArMjU4LDcgQEAgZGVmIHN0cnVjdF9vcl9jbGFzcyhuYW1lc3BhY2UsIHR5cGUpOgogICAgICAg
ICAnV2ViS2l0OjpQbGF0Zm9ybVBvcHVwTWVudURhdGEnLAogICAgICAgICAnV2ViS2l0OjpQbHVn
aW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJywKICAgICAgICAgJ1dlYktpdDo6V2ViTmF2aWdh
dGlvbkRhdGFTdG9yZScsCisgICAgICAgICdXZWJLaXQ6OldlYk9wZW5QYW5lbFBhcmFtZXRlcnM6
OkRhdGEnLAogICAgICAgICAnV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJywKICAg
ICAgICAgJ1dlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZScsCiAgICAgICAgICdXZWJLaXQ6Oldl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMnLApAQCAtNDExLDEzICs0MTIsMTQgQEAgZGVmIGhl
YWRlcnNfZm9yX3R5cGUodHlwZSk6CiAKICAgICBzcGVjaWFsX2Nhc2VzID0gewogICAgICAgICAn
V1RGOjpTdHJpbmcnOiAnPHd0Zi90ZXh0L1dURlN0cmluZy5oPicsCisgICAgICAgICdXZWJDb3Jl
OjpDb21wb3NpdGlvblVuZGVybGluZSc6ICc8V2ViQ29yZS9FZGl0b3IuaD4nLAogICAgICAgICAn
V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kJzogJzxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4nLAog
ICAgICAgICAnV2ViQ29yZTo6UGx1Z2luSW5mbyc6ICc8V2ViQ29yZS9QbHVnaW5EYXRhLmg+JywK
LSAgICAgICAgJ1dlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lJzogJzxXZWJDb3JlL0VkaXRv
ci5oPicsCiAgICAgICAgICdXZWJLaXQ6OldlYktleWJvYXJkRXZlbnQnOiAnIldlYkV2ZW50Lmgi
JywKICAgICAgICAgJ1dlYktpdDo6V2ViTW91c2VFdmVudCc6ICciV2ViRXZlbnQuaCInLAotICAg
ICAgICAnV2ViS2l0OjpXZWJXaGVlbEV2ZW50JzogJyJXZWJFdmVudC5oIicsCisgICAgICAgICdX
ZWJLaXQ6OldlYk9wZW5QYW5lbFBhcmFtZXRlcnM6OkRhdGEnOiAnIldlYk9wZW5QYW5lbFBhcmFt
ZXRlcnMuaCInLAogICAgICAgICAnV2ViS2l0OjpXZWJUb3VjaEV2ZW50JzogJyJXZWJFdmVudC5o
IicsCisgICAgICAgICdXZWJLaXQ6OldlYldoZWVsRXZlbnQnOiAnIldlYkV2ZW50LmgiJywKICAg
ICB9CiAgICAgaWYgdHlwZSBpbiBzcGVjaWFsX2Nhc2VzOgogICAgICAgICByZXR1cm4gW3NwZWNp
YWxfY2FzZXNbdHlwZV1dCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAkocmV2aXNpb24gNzQxMzYpCisrKyBX
ZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksOCBA
QCBwdWJsaWM6CiAgICAgICAgIFR5cGVGcmFtZVBvbGljeUxpc3RlbmVyLAogICAgICAgICBUeXBl
SW5zcGVjdG9yLAogICAgICAgICBUeXBlTmF2aWdhdGlvbkRhdGEsCisgICAgICAgIFR5cGVPcGVu
UGFuZWxQYXJhbWV0ZXJzLAorICAgICAgICBUeXBlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIsCiAg
ICAgICAgIFR5cGVQYWdlLAogICAgICAgICBUeXBlUGFnZUdyb3VwLAogICAgICAgICBUeXBlUHJl
ZmVyZW5jZXMsCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmNw
cAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvU2hhcmVkL1dlYk9wZW5QYW5lbFBhcmFtZXRlcnMu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
IldlYk9wZW5QYW5lbFBhcmFtZXRlcnMuaCIKKworI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENv
ZGVycy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxXZWJPcGVuUGFuZWxQ
YXJhbWV0ZXJzPiBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzOjpjcmVhdGUoY29uc3QgRGF0YSYgZGF0
YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMoZGF0
YSkpOworfQorCitXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzOjpXZWJPcGVuUGFuZWxQYXJhbWV0ZXJz
KGNvbnN0IERhdGEmIGRhdGEpCisgICAgOiBtX2RhdGEoZGF0YSkKK3sKK30KKworV2ViT3BlblBh
bmVsUGFyYW1ldGVyczo6fldlYk9wZW5QYW5lbFBhcmFtZXRlcnMoKQoreworfQorCit2b2lkIFdl
Yk9wZW5QYW5lbFBhcmFtZXRlcnM6OkRhdGE6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29k
ZXIqIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2Rlci0+ZW5jb2RlKENvcmVJUEM6OkluKGFs
bG93TXVsdGlwbGVGaWxlcywgYWxsb3dzRGlyZWN0b3J5VXBsb2FkLCBhY2NlcHRUeXBlcywgZmls
ZW5hbWVzKSk7Cit9CisKK2Jvb2wgV2ViT3BlblBhbmVsUGFyYW1ldGVyczo6RGF0YTo6ZGVjb2Rl
KENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgRGF0YSYgcGFyYW1ldGVycykKK3sK
KyAgICByZXR1cm4gZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91dChwYXJhbWV0ZXJzLmFsbG93
TXVsdGlwbGVGaWxlcywgcGFyYW1ldGVycy5hbGxvd3NEaXJlY3RvcnlVcGxvYWQsIHBhcmFtZXRl
cnMuYWNjZXB0VHlwZXMsIHBhcmFtZXRlcnMuZmlsZW5hbWVzKSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFdlYktpdDIvU2hhcmVkL1dlYk9wZW5QYW5lbFBhcmFtZXRlcnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmgJ
KHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1NoYXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYk9w
ZW5QYW5lbFBhcmFtZXRlcnNfaAorI2RlZmluZSBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzX2gKKwor
I2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIENvcmVJUEMgeworICAgIGNsYXNz
IEFyZ3VtZW50RGVjb2RlcjsKKyAgICBjbGFzcyBBcmd1bWVudEVuY29kZXI7Cit9CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzIDogcHVibGljIEFQ
SU9iamVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVP
cGVuUGFuZWxQYXJhbWV0ZXJzOworCisgICAgc3RydWN0IERhdGEgeworICAgICAgICB2b2lkIGVu
Y29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqKSBjb25zdDsKKyAgICAgICAgc3RhdGljIGJv
b2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIERhdGEmKTsKKworICAgICAgICBi
b29sIGFsbG93TXVsdGlwbGVGaWxlczsKKyAgICAgICAgYm9vbCBhbGxvd3NEaXJlY3RvcnlVcGxv
YWQ7CisgICAgICAgIFN0cmluZyBhY2NlcHRUeXBlczsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4g
ZmlsZW5hbWVzOworICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJPcGVuUGFuZWxQ
YXJhbWV0ZXJzPiBjcmVhdGUoY29uc3QgRGF0YSYpOworICAgIH5XZWJPcGVuUGFuZWxQYXJhbWV0
ZXJzKCk7CisKKyAgICBib29sIGFsbG93TXVsdGlwbGVGaWxlcygpIGNvbnN0IHsgcmV0dXJuIG1f
ZGF0YS5hbGxvd011bHRpcGxlRmlsZXM7IH0gCisKK3ByaXZhdGU6CisgICAgV2ViT3BlblBhbmVs
UGFyYW1ldGVycyhjb25zdCBEYXRhJik7CisKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIEFQSVR5cGU7IH0KKworICAgIERhdGEgbV9kYXRhOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzX2gKSW5kZXg6
IFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hh
cmVkL0FQSS9jL1dLQmFzZS5oCShyZXZpc2lvbiA3NDEzNikKKysrIFdlYktpdDIvU2hhcmVkL0FQ
SS9jL1dLQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3Myw4IEBAIHR5cGVkZWYgY29u
c3Qgc3RydWN0IE9wYXF1ZVdLRnJhbWUqIFdLRnIKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLRnJhbWVQb2xpY3lMaXN0ZW5lciogV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmOwogdHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tJbnNwZWN0b3IqIFdLSW5zcGVjdG9yUmVmOwogdHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tOYXZpZ2F0aW9uRGF0YSogV0tOYXZpZ2F0aW9uRGF0YVJl
ZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLT3BlblBhbmVsUGFyYW1ldGVycyogV0tP
cGVuUGFuZWxQYXJhbWV0ZXJzUmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lciogV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZjsKIHR5cGVk
ZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUGFnZSogV0tQYWdlUmVmOwogdHlwZWRlZiBjb25zdCBz
dHJ1Y3QgT3BhcXVlV0tQYWdlR3JvdXAqIFdLUGFnZUdyb3VwUmVmOwogdHlwZWRlZiBjb25zdCBz
dHJ1Y3QgT3BhcXVlV0tQcmVmZXJlbmNlcyogV0tQcmVmZXJlbmNlc1JlZjsKSW5kZXg6IFdlYktp
dDIvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHku
Y3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJQcm94eS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oIgorCisjaW5j
bHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXJQcm94eTo6V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eShXZWJQYWdl
UHJveHkqIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKK3sKK30KKworV2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXJQcm94eTo6fldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkoKQorewor
fQorCit2b2lkIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmNob29zZUZpbGVzKElt
bXV0YWJsZUFycmF5KiBmaWxlVVJMc0FycmF5KQoreworICAgIGlmICghbV9wYWdlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBzaXplX3Qgc2l6ZSA9IGZpbGVVUkxzQXJyYXktPnNpemUoKTsKKwor
ICAgIFZlY3RvcjxTdHJpbmc+IGZpbGVQYXRoczsKKyAgICBmaWxlUGF0aHMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShzaXplKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytp
KSB7CisgICAgICAgIFdlYlVSTCogd2ViVVJMID0gZmlsZVVSTHNBcnJheS0+YXQ8V2ViVVJMPihp
KTsKKyAgICAgICAgaWYgKHdlYlVSTCkgeworICAgICAgICAgICAgS1VSTCB1cmwoS1VSTCgpLCB3
ZWJVUkwtPnN0cmluZygpKTsgCisgICAgICAgICAgICBmaWxlUGF0aHMudW5jaGVja2VkQXBwZW5k
KHVybC5maWxlU3lzdGVtUGF0aCgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1fcGFnZS0+
ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoZmlsZVBhdGhzKTsKK30KKwordm9pZCBXZWJPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpjYW5jZWwoKQoreworICAgIGlmICghbV9wYWdlKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX3BhZ2UtPmRpZENhbmNlbEZvck9wZW5QYW5lbCgpOwor
fQorCit2b2lkIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmludmFsaWRhdGUoKQor
eworICAgIG1fcGFnZSA9IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHku
aAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExp
c3RlbmVyUHJveHkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eV9oCisjZGVmaW5lIFdlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHlfaAorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBJbW11dGFibGVBcnJheTsKK2NsYXNzIFdlYlBhZ2VQ
cm94eTsKKworY2xhc3MgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSA6IHB1YmxpYyBB
UElPYmplY3QgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBl
RnJhbWVQb2xpY3lMaXN0ZW5lcjsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyUHJveHk+IGNyZWF0ZShXZWJQYWdlUHJveHkqIHBhZ2UpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJv
eHkocGFnZSkpOworICAgIH0KKworICAgIHZpcnR1YWwgfldlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyUHJveHkoKTsKKworICAgIHZvaWQgY2hvb3NlRmlsZXMoSW1tdXRhYmxlQXJyYXkqKTsKKyAg
ICB2b2lkIGNhbmNlbCgpOworCisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisKK3ByaXZhdGU6Cisg
ICAgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eShXZWJQYWdlUHJveHkqKTsKKworICAg
IHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQorCisgICAgUmVm
UHRyPFdlYlBhZ2VQcm94eT4gbV9wYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5X2gKSW5kZXg6IFdlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gNzQxMzYpCisrKyBXZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBACiAj
aW5jbHVkZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRlICJXZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVy
UHJveHkuaCIKICNpbmNsdWRlICJXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaCIKKyNpbmNs
dWRlICJXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1
ZGUgIldlYlBhZ2VHcm91cERhdGEuaCIKQEAgLTIzMSw2ICsyMzIsMTEgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmNsb3NlKCkKICAgICB9CiAjZW5kaWYKIAorICAgIGlmIChtX29wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyKSB7CisgICAgICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXItPmludmFsaWRh
dGUoKTsKKyAgICAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA9IDA7CisgICAgfQorCiAg
ICAgbV9wYWdlVGl0bGUgPSBTdHJpbmcoKTsKICAgICBtX3Rvb2xUaXAgPSBTdHJpbmcoKTsKIApA
QCAtMTI1MSw2ICsxMjU3LDE5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwYWdlRGlkU2Nyb2xsKCkK
ICAgICBtX3VpQ2xpZW50LnBhZ2VEaWRTY3JvbGwodGhpcyk7CiB9CiAKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpydW5PcGVuUGFuZWwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViT3BlblBhbmVsUGFy
YW1ldGVyczo6RGF0YSYgZGF0YSkKK3sKKyAgICBpZiAobV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
cikgeworICAgICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5pbnZhbGlkYXRlKCk7Cisg
ICAgICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgPSAwOworICAgIH0KKworICAgIG1fb3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXIgPSBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5Ojpj
cmVhdGUodGhpcyk7CisKKyAgICBpZiAoIW1fdWlDbGllbnQucnVuT3BlblBhbmVsKHRoaXMsIHBy
b2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCksIGRhdGEsIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXIuZ2V0KCkpKQorICAgICAgICBkaWRDYW5jZWxGb3JPcGVuUGFuZWwoKTsKK30KKwogI2lmIFBM
QVRGT1JNKFFUKQogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQogewpAQCAtMTQzMyw2ICsxNDUyLDI5IEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3QKICAgICBwcm9jZXNzKCktPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkRpZFNlbGVjdEl0ZW1Gcm9tQWN0aXZlQ29udGV4dE1lbnUoaXRl
bSksIG1fcGFnZUlEKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9y
T3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlVVJMcykKK3sKKyAgICBpZiAoIWlz
VmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IFRoaXMgYWxzbyBuZWVk
cyB0byBzZW5kIGEgc2FuZGJveCBleHRlbnNpb24gZm9yIHRoZXNlIHBhdGhzLgorICAgIHByb2Nl
c3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwo
ZmlsZVVSTHMpLCBtX3BhZ2VJRCk7CisKKyAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5p
bnZhbGlkYXRlKCk7CisgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA9IDA7Cit9CisKK3Zv
aWQgV2ViUGFnZVByb3h5OjpkaWRDYW5jZWxGb3JPcGVuUGFuZWwoKQoreworICAgIGlmICghaXNW
YWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRpZENhbmNlbEZvck9wZW5QYW5lbCgpLCBtX3BhZ2VJRCk7CisgICAgCisgICAg
bV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0ZSgpOworICAgIG1fb3BlblBhbmVs
UmVzdWx0TGlzdGVuZXIgPSAwOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJFZGl0
Q29tbWFuZChQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+IGNvbW1hbmRQcm94eSwgVW5k
b09yUmVkbyB1bmRvT3JSZWRvKQogewogICAgIG1fcGFnZUNsaWVudC0+cmVnaXN0ZXJFZGl0Q29t
bWFuZChjb21tYW5kUHJveHksIHVuZG9PclJlZG8pOwpAQCAtMTYxNyw2ICsxNjU5LDExIEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQ3Jhc2goKQogICAgIH0KICNlbmRpZgogCisgICAg
aWYgKG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIpIHsKKyAgICAgICAgbV9vcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lci0+aW52YWxpZGF0ZSgpOworICAgICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyID0gMDsKKyAgICB9CisKICAgICBtX3BhZ2VUaXRsZSA9IFN0cmluZygpOwogICAgIG1fdG9v
bFRpcCA9IFN0cmluZygpOwogCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNp
b24gNzQxMzYpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBj
b3B5KQpAQCAtNzgsNiArNzgsNyBAQCBjbGFzcyBOYXRpdmVXZWJLZXlib2FyZEV2ZW50OwogY2xh
c3MgUGFnZUNsaWVudDsKIGNsYXNzIFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgU3Ry
aW5nUGFpclZlY3RvcjsKK2NsYXNzIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk7CiBj
bGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOwog
Y2xhc3MgV2ViQ29udGV4dE1lbnVQcm94eTsKQEAgLTI3MCw4ICsyNzEsMTMgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0UmVzaXplc1RvQ29udGVudHNVc2luZ0xheW91dFNpemUoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYpOwogI2VuZGlmCiAKKyAgICAvLyBDYWxsZWQgYnkgdGhlIFdlYkNvbnRleHRN
ZW51UHJveHkuCiAgICAgdm9pZCBjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChjb25zdCBXZWJDb250
ZXh0TWVudUl0ZW1EYXRhJik7CiAKKyAgICAvLyBDYWxsZWQgYnkgdGhlIFdlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyUHJveHkuCisgICAgdm9pZCBkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChj
b25zdCBWZWN0b3I8U3RyaW5nPiYpOworICAgIHZvaWQgZGlkQ2FuY2VsRm9yT3BlblBhbmVsKCk7
CisKICAgICBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIGNyZWF0aW9uUGFyYW1ldGVycyhjb25z
dCBXZWJDb3JlOjpJbnRTaXplJikgY29uc3Q7CiAKICNpZiBQTEFURk9STShRVCkKQEAgLTMzOCw2
ICszNDQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdWludDY0X3QgZnJhbWVJRCwgYm9vbCYgc2hvdWxkQ2xv
c2UpOwogICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnREYXRhKGNvbnN0IFdlYkNvcmU6OlZpZXdw
b3J0QXJndW1lbnRzJik7CiAgICAgdm9pZCBwYWdlRGlkU2Nyb2xsKCk7CisgICAgdm9pZCBydW5P
cGVuUGFuZWwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViT3BlblBhbmVsUGFyYW1ldGVyczo6
RGF0YSYpOworCiAjaWYgRU5BQkxFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgdm9pZCBwYWdl
RGlkUmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAjZW5kaWYKQEAgLTQz
OCw2ICs0NDYsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBt
X2FjdGl2ZVBvcHVwTWVudTsKICAgICBSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gbV9hY3Rp
dmVDb250ZXh0TWVudTsKKyAgICBSZWZQdHI8V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94
eT4gbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcjsKIAogICAgIGRvdWJsZSBtX2VzdGltYXRlZFBy
b2dyZXNzOwogCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCShyZXZpc2lvbiA3NDEzNikKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsOCBAQCBtZXNzYWdlcyAtPiBX
ZWJQYWdlUHJveHkgewogICAgIENhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpIC0+IChi
b29sIGNhblJ1bikKICAgICBSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV1RGOjpTdHJpbmcg
bWVzc2FnZSwgdWludDY0X3QgZnJhbWVJRCkgLT4gKGJvb2wgc2hvdWxkQ2xvc2UpCiAgICAgUGFn
ZURpZFNjcm9sbCgpCisgICAgUnVuT3BlblBhbmVsKHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6
V2ViT3BlblBhbmVsUGFyYW1ldGVyczo6RGF0YSBwYXJhbWV0ZXJzKQorCiAjaWYgRU5BQkxFKFRJ
TEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgUGFnZURpZFJlcXVlc3RTY3JvbGwoV2ViQ29yZTo6SW50
U2l6ZSBkZWx0YSkKICNlbmRpZgpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmNwcAkocmV2
aXNpb24gNzQxMzYpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJOYXRpdmVXZWJLZXlib2FyZEV2
ZW50LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViTnVtYmVyLmgiCisj
aW5jbHVkZSAiV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oIgogI2luY2x1ZGUgIldl
YlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9JbnRTaXplLmg+CkBAIC0yNDUsNCArMjQ2LDE0IEBAIHVuc2lnbmVkIGxvbmcgbG9u
ZyBXZWJVSUNsaWVudDo6ZXhjZWVkZWQKICAgICByZXR1cm4gbV9jbGllbnQuZXhjZWVkZWREYXRh
YmFzZVF1b3RhKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKG9yaWdpbiksIHRvQVBJ
KGRhdGFiYXNlTmFtZS5pbXBsKCkpLCB0b0FQSShkYXRhYmFzZURpc3BsYXlOYW1lLmltcGwoKSks
IGN1cnJlbnRRdW90YSwgY3VycmVudFVzYWdlLCBleHBlY3RlZFVzYWdlLCBtX2NsaWVudC5jbGll
bnRJbmZvKTsKIH0KIAorYm9vbCBXZWJVSUNsaWVudDo6cnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94
eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFdlYk9wZW5QYW5lbFBhcmFtZXRl
cnM6OkRhdGEmIHBhcmFtZXRlckRhdGEsIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkq
IGxpc3RlbmVyKQoreworICAgIGlmICghbV9jbGllbnQucnVuT3BlblBhbmVsKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBSZWZQdHI8V2ViT3BlblBhbmVsUGFyYW1ldGVycz4gcGFyYW1l
dGVycyA9IFdlYk9wZW5QYW5lbFBhcmFtZXRlcnM6OmNyZWF0ZShwYXJhbWV0ZXJEYXRhKTsKKyAg
ICBtX2NsaWVudC5ydW5PcGVuUGFuZWwodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEko
cGFyYW1ldGVycy5nZXQoKSksIHRvQVBJKGxpc3RlbmVyKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJVSUNsaWVudC5oCShyZXZpc2lvbiA3NDEzNikKKysrIFdlYktpdDIvVUlQcm9jZXNz
L1dlYlVJQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJBUElDbGllbnQuaCIKICNpbmNsdWRlICJXS1BhZ2UuaCIKICNpbmNsdWRlICJXZWJFdmVudC5o
IgorI2luY2x1ZGUgIldlYk9wZW5QYW5lbFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKQEAgLTQ1LDYgKzQ2LDcgQEAg
Y2xhc3MgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CiBjbGFz
cyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKK2NsYXNzIFdlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHk7CiAKIGNsYXNzIFdlYlVJQ2xpZW50IDogcHVibGljIEFQ
SUNsaWVudDxXS1BhZ2VVSUNsaWVudD4gewogcHVibGljOgpAQCAtODAsNiArODIsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBwYWdlRGlkU2Nyb2xsKFdlYlBhZ2VQcm94eSopOwogCiAgICAgdW5zaWdu
ZWQgbG9uZyBsb25nIGV4Y2VlZGVkRGF0YWJhc2VRdW90YShXZWJQYWdlUHJveHkqLCBXZWJGcmFt
ZVByb3h5KiwgV2ViU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwg
Y29uc3QgU3RyaW5nJiBkYXRhYmFzZURpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGxvbmcgY3Vy
cmVudFF1b3RhLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFVzYWdlLCB1bnNpZ25lZCBsb25n
IGxvbmcgZXhwZWN0ZWRVc2FnZSk7CisKKyAgICBib29sIHJ1bk9wZW5QYW5lbChXZWJQYWdlUHJv
eHkqLCBXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViT3BlblBhbmVsUGFyYW1ldGVyczo6RGF0YSYs
IFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHJldmlzaW9uIDc0
MTM2KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUzLDYgKzUzLDggQEAgY2xhc3MgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5Owog
Y2xhc3MgV2ViRnJhbWVQcm94eTsKIGNsYXNzIFdlYkluc3BlY3RvclByb3h5OwogY2xhc3MgV2Vi
TmF2aWdhdGlvbkRhdGE7CitjbGFzcyBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzOworY2xhc3MgV2Vi
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdlYlBhZ2VHcm91cDsKIGNsYXNz
IFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByZWZlcmVuY2VzOwpAQCAtNzAsNiArNzIsOCBAQCBX
S19BRERfQVBJX01BUFBJTkcoV0tGb3JtU3VibWlzc2lvbkxpc3RlCiBXS19BRERfQVBJX01BUFBJ
TkcoV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmLCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkp
CiBXS19BRERfQVBJX01BUFBJTkcoV0tGcmFtZVJlZiwgV2ViRnJhbWVQcm94eSkKIFdLX0FERF9B
UElfTUFQUElORyhXS05hdmlnYXRpb25EYXRhUmVmLCBXZWJOYXZpZ2F0aW9uRGF0YSkKK1dLX0FE
RF9BUElfTUFQUElORyhXS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYsIFdlYk9wZW5QYW5lbFBhcmFt
ZXRlcnMpCitXS19BRERfQVBJX01BUFBJTkcoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiwg
V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSkKIFdLX0FERF9BUElfTUFQUElORyhXS1Bh
Z2VHcm91cFJlZiwgV2ViUGFnZUdyb3VwKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUGFnZVJlZiwg
V2ViUGFnZVByb3h5KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUHJlZmVyZW5jZXNSZWYsIFdlYlBy
ZWZlcmVuY2VzKQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxQYXJh
bWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5Q
YW5lbFBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJXS09wZW5QYW5lbFBhcmFtZXRlcnMuaCIKKworI2lu
Y2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYk9wZW5QYW5lbFBhcmFtZXRlcnMuaCIK
KwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tUeXBlSUQgV0tPcGVuUGFuZWxQYXJhbWV0
ZXJzR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9BUEkoV2ViT3BlblBhbmVsUGFyYW1ldGVy
czo6QVBJVHlwZSk7Cit9CisKK2Jvb2wgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzR2V0QWxsb3dzTXVs
dGlwbGVGaWxlcyhXS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYgcGFyYW1ldGVyc1JlZikKK3sKKyAg
ICByZXR1cm4gdG9JbXBsKHBhcmFtZXRlcnNSZWYpLT5hbGxvd011bHRpcGxlRmlsZXMoKTsKK30K
SW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUGFyYW1ldGVycy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUGFyYW1ldGVy
cy5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxQ
YXJhbWV0ZXJzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFdLT3BlblBhbmVsUGFyYW1ldGVyc19oCisjZGVmaW5lIFdLT3BlblBhbmVsUGFyYW1l
dGVyc19oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCisjaWZuZGVmIF9fY3BsdXNw
bHVzCisjaW5jbHVkZSA8c3RkYm9vbC5oPgorI2VuZGlmCisKKyNpZmRlZiBfX2NwbHVzcGx1cwor
ZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVHlwZUlEIFdLT3BlblBhbmVsUGFy
YW1ldGVyc0dldFR5cGVJRCgpOworCitXS19FWFBPUlQgYm9vbCBXS09wZW5QYW5lbFBhcmFtZXRl
cnNHZXRBbGxvd3NNdWx0aXBsZUZpbGVzKFdLT3BlblBhbmVsUGFyYW1ldGVyc1JlZiBwYXJhbWV0
ZXJzKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIFdLT3Bl
blBhbmVsUGFyYW1ldGVyc19oICovCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS09w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcAkocmV2aXNpb24gMCkKKysrIFdl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldLT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXIuaCIKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUg
IldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKKworV0tUeXBlSUQgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckdldFR5cGVJRCgpCit7
CisgICAgcmV0dXJuIHRvQVBJKFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OkFQSVR5
cGUpOworfQorCit2b2lkIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDaG9vc2VGaWxlcyhXS09w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyUmVmLCBXS0FycmF5UmVmIGZpbGVVUkxz
UmVmKQoreworICAgIHRvSW1wbChsaXN0ZW5lclJlZiktPmNob29zZUZpbGVzKHRvSW1wbChmaWxl
VVJMc1JlZikpOworfQorCit2b2lkIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDYW5jZWwoV0tP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lclJlZikKK3sKKyAgICB0b0ltcGwobGlz
dGVuZXJSZWYpLT5jYW5jZWwoKTsKK30KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmgJKHJldmlzaW9uIDApCisrKyBXZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXJfaAorI2RlZmluZSBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyX2gKKworI2lu
Y2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJD
IiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVHlwZUlEIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXJHZXRUeXBlSUQoKTsKKworV0tfRVhQT1JUIHZvaWQgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
ckNob29zZUZpbGVzKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLQXJy
YXlSZWYgZmlsZVVSTHMpOworV0tfRVhQT1JUIHZvaWQgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
ckNhbmNlbChXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyKTsKKworI2lmZGVm
IF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIFdLT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXJfaCAqLwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHJldmlzaW9uIDc0MTM2
KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEzNyw2ICsxMzcsNyBAQCB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VDbG9zZUNhbGxiYWNrKShXS1Bh
CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRDYWxsYmFjaykoV0tQYWdl
UmVmIHBhZ2UsIFdLU3RyaW5nUmVmIGFsZXJ0VGV4dCwgV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qg
dm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIGJvb2wgKCpXS1BhZ2VSdW5KYXZhU2NyaXB0Q29u
ZmlybUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tGcmFt
ZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIFdLU3RyaW5nUmVm
ICgqV0tQYWdlUnVuSmF2YVNjcmlwdFByb21wdENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tT
dHJpbmdSZWYgbWVzc2FnZSwgV0tTdHJpbmdSZWYgZGVmYXVsdFZhbHVlLCBXS0ZyYW1lUmVmIGZy
YW1lLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLUGFnZVJ1bk9w
ZW5QYW5lbCkoV0tQYWdlUmVmIHBhZ2UsIFdLT3BlblBhbmVsT3B0aW9ucyBvcHRpb25zLCBXS09w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyLCBjb25zdCB2b2lkICpjbGllbnRJbmZv
KTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZVNldFN0YXR1c1RleHRDYWxsYmFjaykoV0tQYWdlUmVm
IHBhZ2UsIFdLU3RyaW5nUmVmIHRleHQsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRl
ZiB2b2lkICgqV0tQYWdlTW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRDYWxsYmFjaykoV0tQYWdlUmVm
IHBhZ2UsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNv
bnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkTm90SGFuZGxl
S2V5RXZlbnRDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLTmF0aXZlRXZlbnRQdHIgZXZlbnQs
IGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwpAQCAtMTU0LDcgKzE1NSw3IEBAIHR5cGVkZWYgYm9v
bCAoKldLUGFnZVJ1bkJlZm9yZVVubG9hZENvbmYKIHR5cGVkZWYgdm9pZCAoKldLUGFnZURpZERy
YXdDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlw
ZWRlZiB2b2lkICgqV0tQYWdlRGlkU2Nyb2xsQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBjb25z
dCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nICgqV0tQYWdl
RXhjZWVkZWREYXRhYmFzZVF1b3RhQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVm
IGZyYW1lLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgV0tTdHJpbmdSZWYgZGF0YWJhc2VO
YW1lLCBXS1N0cmluZ1JlZiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRR
dW90YSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRVc2FnZSwgdW5zaWduZWQgbG9uZyBsb25n
IGV4cGVjdGVkVXNhZ2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotCit0eXBlZGVmIHZvaWQg
KCpXS1BhZ2VSdW5PcGVuUGFuZWxDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYg
ZnJhbWUsIFdLT3BlblBhbmVsUGFyYW1ldGVyc1JlZiBwYXJhbWV0ZXJzLCBXS09wZW5QYW5lbFJl
c3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIAogc3Ry
dWN0IFdLUGFnZVVJQ2xpZW50IHsKICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb247CkBAIC0xODIsNiAr
MTgzLDcgQEAgc3RydWN0IFdLUGFnZVVJQ2xpZW50IHsKICAgICBXS1BhZ2VEaWREcmF3Q2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZERyYXc7
CiAgICAgV0tQYWdlRGlkU2Nyb2xsQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYWdlRGlkU2Nyb2xsOwogICAgIFdLUGFnZUV4Y2VlZGVkRGF0YWJh
c2VRdW90YUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZWVkZWRE
YXRhYmFzZVF1b3RhOworICAgIFdLUGFnZVJ1bk9wZW5QYW5lbENhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuT3BlblBhbmVsOwogfTsKIHR5cGVkZWYg
c3RydWN0IFdLUGFnZVVJQ2xpZW50IFdLUGFnZVVJQ2xpZW50OwogCkluZGV4OiBXZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XZWJLaXQyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV2ViS2l0Mi5oCShyZXZpc2lvbiA3NDEzNikKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dlYktpdDIuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsOCBAQAogI2luY2x1ZGUg
PFdlYktpdDIvV0tNdXRhYmxlRGljdGlvbmFyeS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tOYXZp
Z2F0aW9uRGF0YS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tOdW1iZXIuaD4KKyNpbmNsdWRlIDxX
ZWJLaXQyL1dLT3BlblBhbmVsUGFyYW1ldGVycy5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lci5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlLmg+CiAjaW5j
bHVkZSA8V2ViS2l0Mi9XS1BhZ2VHcm91cC5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tQcmVmZXJl
bmNlcy5oPgpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcAkocmV2aXNpb24g
NzQxMzYpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM2MCw3ICszNjAsOCBAQCBRV0tQYWdlOjpRV0tQYWdlKFFXS0NvbnRleHQqIGNv
bnRleHQpCiAgICAgICAgIDAsICAvKiBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwgKi8KICAg
ICAgICAgMCwgIC8qIGRpZERyYXcgKi8KICAgICAgICAgMCwgIC8qIHBhZ2VEaWRTY3JvbGwgKi8K
LSAgICAgICAgMCAgIC8qIGV4Y2VlZGVkRGF0YWJhc2VRdW90YSAqLworICAgICAgICAwLCAgLyog
ZXhjZWVkZWREYXRhYmFzZVF1b3RhICovCisgICAgICAgIDAgICAvKiBydW5PcGVuUGFuZWwgKi8K
ICAgICB9OwogICAgIFdLUGFnZVNldFBhZ2VVSUNsaWVudChwYWdlUmVmKCksICZ1aUNsaWVudCk7
CiB9CkluZGV4OiBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gNzQxMzYpCisrKyBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMzI0LDYgKzMyNCw4IEBACiAJCUJDMUE3QzU4MTEzNkUxOUMw
MEZCNzE2NyAvKiBQcm9jZXNzTGF1bmNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDMUE3QzU3MTEzNkUxOUMwMEZCNzE2NyAvKiBQcm9jZXNzTGF1
bmNoZXIuaCAqLzsgfTsKIAkJQkMxQjQxOTgxMUQ0MUQ1NzAwMTFFOEREIC8qIFdLQnVuZGxlUGFn
ZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMUI0MTk3MTFENDFENTcwMDExRThERCAvKiBXS0J1bmRsZVBhZ2VQcml2YXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMxREQ3QjIxMTRE
QzM5NjAwNUFEQUYzIC8qIFdlYkNvcmVBcmd1bWVudENvZGVycy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxREQ3QjExMTREQzM5NjAwNUFEQUYzIC8q
IFdlYkNvcmVBcmd1bWVudENvZGVycy5oICovOyB9OworCQlCQzFERkU4RjEyQjMxQ0E4MDA1REY3
MzAgLyogV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxREZFOEQxMkIzMUNBODAwNURGNzMwIC8qIFdLT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJs
aWMsICk7IH07IH07CisJCUJDMURGRUE0MTJCMzFGODcwMDVERjczMCAvKiBXZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzFERkVBMjEyQjMxRjg3MDA1REY3MzAgLyogV2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJQcm94eS5oICovOyB9OwogCQlCQzIwNEVFMjExQzgzRTk4MDA4RjMzNzUgLyogSW5q
ZWN0ZWRCdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkMyMDRFRTAxMUM4M0U5ODAwOEYzMzc1IC8qIEluamVjdGVkQnVuZGxlLmNwcCAqLzsg
fTsKIAkJQkMyMDRFRTMxMUM4M0U5ODAwOEYzMzc1IC8qIEluamVjdGVkQnVuZGxlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzIwNEVFMTExQzgzRTk4
MDA4RjMzNzUgLyogSW5qZWN0ZWRCdW5kbGUuaCAqLzsgfTsKIAkJQkMyMDRFRTYxMUM4M0VBOTAw
OEYzMzc1IC8qIEluamVjdGVkQnVuZGxlTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjA0RUU1MTFDODNFQTkwMDhGMzM3NSAvKiBJbmplY3Rl
ZEJ1bmRsZU1hYy5jcHAgKi87IH07CkBAIC00NDQsNiArNDQ2LDE0IEBACiAJCUJDODQ1MkE4MTE2
MkM4MDkwMENBQjlCNSAvKiBEcmF3aW5nQXJlYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4NDUyQTYxMTYyQzgwOTAwQ0FCOUI1IC8qIERyYXdpbmdB
cmVhLmggKi87IH07CiAJCUJDODRFQjE4MTJBNzEwMEMwMDgzRjJEQSAvKiBXZWJQcmVmZXJlbmNl
c01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
ODRFQjE3MTJBNzEwMEMwMDgzRjJEQSAvKiBXZWJQcmVmZXJlbmNlc01hYy5tbSAqLzsgfTsKIAkJ
QkM4NTdFODcxMkI3MUVCQjAwRURFQjJFIC8qIFdlYlBhZ2VQcm94eU1hYy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODU3RTg1MTJCNzFFQkIwMEVE
RUIyRSAvKiBXZWJQYWdlUHJveHlNYWMubW0gKi87IH07CisJCUJDODU3RjdFMTJCODJDRUUwMEVE
RUIyRSAvKiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMURGRUEzMTJCMzFGODcwMDVERjcz
MCAvKiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcCAqLzsgfTsKKwkJQkM4NTdG
ODUxMkI4MkQwQjAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzg1N0Y4MzEyQjgyRDBC
MDBFREVCMkUgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCAqLzsgfTsKKwkJQkM4NTdG
ODYxMkI4MkQwQjAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODU3Rjg0MTJCODJE
MEIwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAgKi87IH07CisJCUJD
ODU3RkI1MTJCODMwRTYwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzg1N0ZCMzEyQjgzMEU2
MDBFREVCMkUgLyogV2ViT3BlblBhbmVsUGFyYW1ldGVycy5oICovOyB9OworCQlCQzg1N0ZCNjEy
QjgzMEU2MDBFREVCMkUgLyogV2ViT3BlblBhbmVsUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzg1N0ZCNDEyQjgzMEU2MDBFREVC
MkUgLyogV2ViT3BlblBhbmVsUGFyYW1ldGVycy5jcHAgKi87IH07CisJCUJDODU3RkU2MTJCODQz
RDgwMEVERUIyRSAvKiBXS09wZW5QYW5lbFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODU3RkU0MTJCODQzRDgwMEVERUIyRSAvKiBX
S09wZW5QYW5lbFBhcmFtZXRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJs
aWMsICk7IH07IH07CisJCUJDODU4MDYyMTJCODUwNTcwMEVERUIyRSAvKiBXS09wZW5QYW5lbFJl
c3VsdExpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDMURGRThFMTJCMzFDQTgwMDVERjczMCAvKiBXS09wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyLmNwcCAqLzsgfTsKKwkJQkM4NTgwNjMxMkI4NTA1NzAwRURFQjJFIC8qIFdLT3BlblBhbmVs
UGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzg1N0ZFNTEyQjg0M0Q4MDBFREVCMkUgLyogV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmNw
cCAqLzsgfTsKIAkJQkM4Njk5QjUxMTZBQURBQTAwMkE5MjVCIC8qIFdLVmlldy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4Njk5QjIxMTZBQURBQTAw
MkE5MjVCIC8qIFdLVmlldy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywg
KTsgfTsgfTsKIAkJQkM4Njk5QjYxMTZBQURBQTAwMkE5MjVCIC8qIFdLVmlldy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODY5OUIzMTE2QUFEQUEw
MDJBOTI1QiAvKiBXS1ZpZXcubW0gKi87IH07CiAJCUJDODY5OUI3MTE2QUFEQUEwMDJBOTI1QiAv
KiBXS1ZpZXdJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkM4Njk5QjQxMTZBQURBQTAwMkE5MjVCIC8qIFdLVmlld0ludGVybmFsLmggKi87
IH07CkBAIC05NzUsNiArOTg1LDEwIEBACiAJCUJDMUE3QzU3MTEzNkUxOUMwMEZCNzE2NyAvKiBQ
cm9jZXNzTGF1bmNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvY2Vz
c0xhdW5jaGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMUI0MTk3MTFENDFE
NTcwMDExRThERCAvKiBXS0J1bmRsZVBhZ2VQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLQnVuZGxlUGFnZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkMxREQ3QjExMTREQzM5NjAwNUFEQUYzIC8qIFdlYkNvcmVBcmd1bWVudENvZGVy
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMxREZFOEQxMkIzMUNBODAwNURG
NzMwIC8qIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCQzFERkU4RTEyQjMxQ0E4MDA1REY3MzAgLyogV0tPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS09w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QkMxREZFQTIxMkIzMUY4NzAwNURGNzMwIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJv
eHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzFERkVBMzEy
QjMxRjg3MDA1REY3MzAgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyMDRFRTAxMUM4
M0U5ODAwOEYzMzc1IC8qIEluamVjdGVkQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEluamVjdGVkQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkMyMDRFRTExMUM4M0U5ODAwOEYzMzc1IC8qIEluamVjdGVkQnVuZGxlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkQnVuZGxlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMjA0RUU1MTFDODNFQTkwMDhGMzM3NSAvKiBJbmplY3Rl
ZEJ1bmRsZU1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmpl
Y3RlZEJ1bmRsZU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDk1LDYg
KzExMDksMTIgQEAKIAkJQkM4NDUyQTYxMTYyQzgwOTAwQ0FCOUI1IC8qIERyYXdpbmdBcmVhLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERyYXdpbmdBcmVhLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDODRFQjE3MTJBNzEwMEMwMDgzRjJEQSAvKiBXZWJQcmVm
ZXJlbmNlc01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdl
YlByZWZlcmVuY2VzTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzg1N0U4
NTEyQjcxRUJCMDBFREVCMkUgLyogV2ViUGFnZVByb3h5TWFjLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUGFnZVByb3h5TWFjLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCQzg1N0Y4MzEyQjgyRDBCMDBFREVCMkUgLyogV2ViT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM4
NTdGODQxMkI4MkQwQjAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYk9wZW5QYW5lbFJlc3VsdExp
c3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM4NTdGQjMxMkI4MzBF
NjAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViT3BlblBhbmVsUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCQzg1N0ZCNDEyQjgzMEU2MDBFREVCMkUgLyogV2ViT3BlblBhbmVsUGFy
YW1ldGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJPcGVu
UGFuZWxQYXJhbWV0ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM4NTdG
RTQxMkI4NDNEODAwRURFQjJFIC8qIFdLT3BlblBhbmVsUGFyYW1ldGVycy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS09wZW5QYW5lbFBhcmFtZXRlcnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM4NTdGRTUxMkI4NDNEODAwRURFQjJFIC8qIFdLT3BlblBh
bmVsUGFyYW1ldGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
S09wZW5QYW5lbFBhcmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
Qzg2OTlCMjExNkFBREFBMDAyQTkyNUIgLyogV0tWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzg2
OTlCMzExNkFBREFBMDAyQTkyNUIgLyogV0tWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV0tWaWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQzg2OTlCNDExNkFBREFBMDAyQTkyNUIgLyogV0tWaWV3SW50ZXJuYWwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tWaWV3SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE1OTksNiArMTYxOSw4IEBACiAJCQkJQkMzM0RENjcxMjM4NDY0NjAw
MzYwRjNGIC8qIFdlYk51bWJlci5oICovLAogCQkJCUJDNTc0NEVEMTI2MzhGQjMwMDZGMEYxMiAv
KiBXZWJQb3B1cEl0ZW0uY3BwICovLAogCQkJCUJDNTc0NEVFMTI2MzhGQjMwMDZGMEYxMiAvKiBX
ZWJQb3B1cEl0ZW0uaCAqLywKKwkJCQlCQzg1N0ZCNDEyQjgzMEU2MDBFREVCMkUgLyogV2ViT3Bl
blBhbmVsUGFyYW1ldGVycy5jcHAgKi8sCisJCQkJQkM4NTdGQjMxMkI4MzBFNjAwRURFQjJFIC8q
IFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMuaCAqLywKIAkJCQlDMDZDNjA5MzEyNEMxNDQzMDAwMTY4
MkYgLyogV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAgKi8sCiAJCQkJQzA2QzYwOTQxMjRD
MTQ0MzAwMDE2ODJGIC8qIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCAqLywKIAkJCQlCQzdC
NjI1MTEyQTQzQzk2MDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwRGF0YS5jcHAgKi8sCkBAIC0xODQx
LDYgKzE4NjMsOCBAQAogCQkJCTFDOEUyODFGMTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0
b3IuY3BwICovLAogCQkJCTFDOEUyODFFMTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3Iu
aCAqLywKIAkJCQkxQzhFMkExQzEyNzc4MzNGMDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLm1lc3Nh
Z2VzLmluICovLAorCQkJCUJDODU3Rjg0MTJCODJEMEIwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lci5jcHAgKi8sCisJCQkJQkM4NTdGODMxMkI4MkQwQjAwRURFQjJFIC8qIFdl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggKi8sCiAJCQkJQkM5NjNENkExMTNERDE5MjAwNTc0
QkUyIC8qIFdlYlBhZ2UuY3BwICovLAogCQkJCUJDMDMyRDhCMTBGNDM3QTAwMDU4QzE1QSAvKiBX
ZWJQYWdlLmggKi8sCiAJCQkJQzBDRTcyNTgxMjQ3RTREQTAwQkMwRUM0IC8qIFdlYlBhZ2UubWVz
c2FnZXMuaW4gKi8sCkBAIC0xOTE1LDYgKzE5MzksOCBAQAogCQkJCUJDNTk1MzQwMTBGQzA0NTIw
MDk4RjgyRCAvKiBXZWJMb2FkZXJDbGllbnQuaCAqLywKIAkJCQlCQ0Y2OUZBMTExNzZEMDE0MDA0
NzFBNTIgLyogV2ViTmF2aWdhdGlvbkRhdGEuY3BwICovLAogCQkJCUJDRjY5RkEwMTE3NkQwMTQw
MDQ3MUE1MiAvKiBXZWJOYXZpZ2F0aW9uRGF0YS5oICovLAorCQkJCUJDMURGRUEzMTJCMzFGODcw
MDVERjczMCAvKiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcCAqLywKKwkJCQlC
QzFERkVBMjEyQjMxRjg3MDA1REY3MzAgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94
eS5oICovLAogCQkJCTUxNTM1NjlBMTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1l
bnVDbGllbnQuY3BwICovLAogCQkJCTUxNTM1NjlCMTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQYWdl
Q29udGV4dE1lbnVDbGllbnQuaCAqLywKIAkJCQlCQzdCNjIwNTEyOUEwQTY3MDBEMTc0QTQgLyog
V2ViUGFnZUdyb3VwLmNwcCAqLywKQEAgLTE5NzUsNiArMjAwMSwxMCBAQAogCQkJCTFBQjdENzhC
MTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkLmggKi8sCiAJCQkJQkNFNDY5NTcxMjE0RURG
NDAwMEI5OEVCIC8qIFdLRm9ybVN1Ym1pc3Npb25MaXN0ZW5lci5jcHAgKi8sCiAJCQkJQkNFNDY5
NTgxMjE0RURGNDAwMEI5OEVCIC8qIFdLRm9ybVN1Ym1pc3Npb25MaXN0ZW5lci5oICovLAorCQkJ
CUJDMURGRThFMTJCMzFDQTgwMDVERjczMCAvKiBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNw
cCAqLywKKwkJCQlCQzFERkU4RDEyQjMxQ0E4MDA1REY3MzAgLyogV0tPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lci5oICovLAorCQkJCUJDODU3RkU1MTJCODQzRDgwMEVERUIyRSAvKiBXS09wZW5QYW5l
bFBhcmFtZXRlcnMuY3BwICovLAorCQkJCUJDODU3RkU0MTJCODQzRDgwMEVERUIyRSAvKiBXS09w
ZW5QYW5lbFBhcmFtZXRlcnMuaCAqLywKIAkJCQlCQ0QwMTM5ODExMEZBNDIwMDAzQjhBNjcgLyog
V0tGcmFtZS5jcHAgKi8sCiAJCQkJQkNEMDEzOTcxMTBGQTQyMDAwM0I4QTY3IC8qIFdLRnJhbWUu
aCAqLywKIAkJCQlCQ0I5RjZBNDExMjNERDBEMDBBMTM3RTAgLyogV0tGcmFtZVBvbGljeUxpc3Rl
bmVyLmNwcCAqLywKQEAgLTI3MTgsNiArMjc0OCwxMSBAQAogCQkJCUY2MkE3NjYyMTJCMUFCRUQw
MDA1RjFCNiAvKiBXS0RhdGFiYXNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjYyQTc2
QjcxMkIxQjI1RjAwMDVGMUI2IC8qIFdlYkRhdGFiYXNlTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGNjJBNzZCOTEyQjFCMjVGMDAwNUYxQjYgLyogV2ViRGF0YWJhc2VNYW5h
Z2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxREZFOEYxMkIzMUNBODAw
NURGNzMwIC8qIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUJDMURGRUE0MTJCMzFGODcwMDVERjczMCAvKiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclBy
b3h5LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzg1N0Y4NTEyQjgyRDBCMDBFREVCMkUgLyogV2Vi
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDODU3RkI1MTJC
ODMwRTYwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywK
KwkJCQlCQzg1N0ZFNjEyQjg0M0Q4MDBFREVCMkUgLyogV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTRBOUFBODEyQjdFNzk2MDA4RkU5ODQgLyogV0tUZXh0SW5w
dXRXaW5kb3dDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTRBOUM1NjEyQjgxNkNG
MDA4RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
NEE5RjMzMTJCODQ0RTIwMDhGRTk4NCAvKiBQbHVnaW5RdWlya3MuaCBpbiBIZWFkZXJzICovLApA
QCAtMzEzNSw2ICszMTcwLDExIEBACiAJCQkJRjYyQTc2QjYxMkIxQjI1RjAwMDVGMUI2IC8qIFdl
YkRhdGFiYXNlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlG
NjJBNzZCODEyQjFCMjVGMDAwNUYxQjYgLyogV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4NTdFODcxMkI3MUVCQjAwRURFQjJF
IC8qIFdlYlBhZ2VQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUJDODU3RjdFMTJCODJD
RUUwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUJDODU3Rjg2MTJCODJEMEIwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQzg1N0ZCNjEyQjgzMEU2MDBFREVC
MkUgLyogV2ViT3BlblBhbmVsUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQzg1
ODA2MjEyQjg1MDU3MDBFREVCMkUgLyogV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlCQzg1ODA2MzEyQjg1MDU3MDBFREVCMkUgLyogV0tPcGVuUGFuZWxQ
YXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNEE5QUE5MTJCN0U3OTYwMDhGRTk4
NCAvKiBXS1RleHRJbnB1dFdpbmRvd0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkx
QTRBOUM1NTEyQjgxNkNGMDA4RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUE0QTlDOUExMkI4MjFDRDAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2lu
TW9kdWxlTWFjLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24gNzQx
MzYpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsOCBAQAogI2luY2x1ZGUgIldlYkNvcmVB
cmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViRnJh
bWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmgiCisj
aW5jbHVkZSAiV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJXZWJQYWdl
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldl
YlBhZ2VQcm94eU1lc3NhZ2VzLmgiCkBAIC01MDgsOSArNTEwLDI2IEBAIHZvaWQgV2ViQ2hyb21l
Q2xpZW50OjpjYW5jZWxHZW9sb2NhdGlvblAKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12
b2lkIFdlYkNocm9tZUNsaWVudDo6cnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxl
Q2hvb3Nlcj4pCit2b2lkIFdlYkNocm9tZUNsaWVudDo6cnVuT3BlblBhbmVsKEZyYW1lKiBmcmFt
ZSwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4gcHJwRmlsZUNob29zZXIpCiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICBpZiAobV9wYWdlLT5hY3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
cigpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8RmlsZUNob29zZXI+IGZpbGVDaG9v
c2VyID0gcHJwRmlsZUNob29zZXI7CisKKyAgICBtX3BhZ2UtPnNldEFjdGl2ZU9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyKFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyOjpjcmVhdGUobV9wYWdlLCBm
aWxlQ2hvb3Nlci5nZXQoKSkpOworICAgIAorICAgIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnM6OkRh
dGEgcGFyYW1ldGVyczsKKyAgICBwYXJhbWV0ZXJzLmFsbG93TXVsdGlwbGVGaWxlcyA9IGZpbGVD
aG9vc2VyLT5hbGxvd3NNdWx0aXBsZUZpbGVzKCk7CisjaWYgRU5BQkxFKERJUkVDVE9SWV9VUExP
QUQpCisgICAgcGFyYW1ldGVycy5hbGxvd3NEaXJlY3RvcnlVcGxvYWQgPSBmaWxlQ2hvb3Nlci0+
YWxsb3dzRGlyZWN0b3J5VXBsb2FkKCk7CisjZWxzZQorICAgIHBhcmFtZXRlcnMuYWxsb3dzRGly
ZWN0b3J5VXBsb2FkID0gZmFsc2U7CisjZW5kaWYKKyAgICBwYXJhbWV0ZXJzLmFjY2VwdFR5cGVz
ID0gZmlsZUNob29zZXItPmFjY2VwdFR5cGVzKCk7CisgICAgcGFyYW1ldGVycy5maWxlbmFtZXMg
PSBmaWxlQ2hvb3Nlci0+ZmlsZW5hbWVzKCk7CisKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6UnVuT3BlblBhbmVsKHN0YXRpY19jYXN0PFdlYkZyYW1lTG9hZGVyQ2xp
ZW50Kj4oZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKSktPndlYkZyYW1lKCktPmZyYW1lSUQoKSwg
cGFyYW1ldGVycykpOwogfQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6Y2hvb3NlSWNvbkZvckZp
bGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgRmlsZUNob29zZXIqKQpJbmRleDogV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
cj4gV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXI6OmNyZWF0ZShXZWJQYWdlKiBwYWdlLCBQYXNz
UmVmUHRyPFdlYkNvcmU6OkZpbGVDaG9vc2VyPiBmaWxlQ2hvb3NlcikKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyKHBhZ2UsIGZpbGVDaG9vc2Vy
KSk7Cit9CisKK1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyOjpXZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lcihXZWJQYWdlKiBwYWdlLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZpbGVDaG9vc2VyPiBm
aWxlQ2hvb3NlcikKKyAgICA6IG1fcGFnZShwYWdlKQorICAgICwgbV9maWxlQ2hvb3NlcihmaWxl
Q2hvb3NlcikKK3sKK30KKworV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXI6On5XZWJPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lcigpCit7Cit9CisKK3ZvaWQgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXI6OmRpZENob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlcykKK3sKKyAgICBt
X2ZpbGVDaG9vc2VyLT5jaG9vc2VGaWxlcyhmaWxlcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXJfaAorI2RlZmluZSBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcl9oCisKKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRmlsZUNob29zZXIuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFdlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lcj4gY3JlYXRlKFdlYlBhZ2UqLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZpbGVDaG9v
c2VyPik7CisgICAgfldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyKCk7CisKKyAgICB2b2lkIGRp
c2Nvbm5lY3RGcm9tUGFnZSgpIHsgbV9wYWdlID0gMDsgfQorICAgIHZvaWQgZGlkQ2hvb3NlRmls
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKKworcHJpdmF0ZToKKyAgICBXZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lcihXZWJQYWdlKiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGaWxlQ2hvb3Nlcj4p
OworCisgICAgV2ViUGFnZSogbV9wYWdlOworICAgIFJlZlB0cjxXZWJDb3JlOjpGaWxlQ2hvb3Nl
cj4gbV9maWxlQ2hvb3NlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisKKyNlbmRp
ZiAvLyBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcl9oCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gNzQxMzYpCisrKyBXZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAog
I2luY2x1ZGUgIldlYkNvbnRleHRNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAi
V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJXZWJEcmFnQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiV2ViRWRpdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKQEAg
LTMyOCw2ICszMjksMTEgQEAgdm9pZCBXZWJQYWdlOjpjbG9zZSgpCiAgICAgICAgIG1fYWN0aXZl
UG9wdXBNZW51ID0gMDsKICAgICB9CiAKKyAgICBpZiAobV9hY3RpdmVPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lcikgeworICAgICAgICBtX2FjdGl2ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5kaXNj
b25uZWN0RnJvbVBhZ2UoKTsKKyAgICAgICAgbV9hY3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
ciA9IDA7CisgICAgfQorCiAgICAgbV9zYW5kYm94RXh0ZW5zaW9uVHJhY2tlci5pbnZhbGlkYXRl
KCk7CiAKICAgICBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLT5kZXRhY2hGcm9t
UGFyZW50KCk7CkBAIC0xMDY1LDYgKzEwNzEsMTEgQEAgdm9pZCBXZWJQYWdlOjpzZXRBY3RpdmVQ
b3B1cE1lbnUoV2ViUG9wdQogICAgIG1fYWN0aXZlUG9wdXBNZW51ID0gbWVudTsKIH0KIAordm9p
ZCBXZWJQYWdlOjpzZXRBY3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcihQYXNzUmVmUHRyPFdl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyPiBvcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcikKK3sKKyAg
ICBtX2FjdGl2ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyID0gb3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXI7Cit9CisKIGJvb2wgV2ViUGFnZTo6ZmluZFN0cmluZ0Zyb21JbmplY3RlZEJ1bmRsZShjb25z
dCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlvbnMgb3B0aW9ucykKIHsKICAgICByZXR1cm4gbV9w
YWdlLT5maW5kU3RyaW5nKHRhcmdldCwgb3B0aW9ucyk7CkBAIC0xMDk0LDYgKzExMDUsMjAgQEAg
dm9pZCBXZWJQYWdlOjpkaWRDaGFuZ2VTZWxlY3RlZEluZGV4Rm9yQQogICAgIG1fYWN0aXZlUG9w
dXBNZW51ID0gMDsKIH0KIAordm9pZCBXZWJQYWdlOjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5l
bChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZXMpCit7CisgICAgaWYgKCFtX2FjdGl2ZU9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2FjdGl2ZU9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyLT5kaWRDaG9vc2VGaWxlcyhmaWxlcyk7CisgICAgbV9hY3RpdmVP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA9IDA7Cit9CisKK3ZvaWQgV2ViUGFnZTo6ZGlkQ2FuY2Vs
Rm9yT3BlblBhbmVsKCkKK3sKKyAgICBtX2FjdGl2ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyID0g
MDsKK30KKwogdm9pZCBXZWJQYWdlOjpkaWRTZWxlY3RJdGVtRnJvbUFjdGl2ZUNvbnRleHRNZW51
KGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmIGl0ZW0pCiB7CiAgICAgQVNTRVJUKG1fY29u
dGV4dE1lbnUpOwpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNp
b24gNzQxMzYpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTc3LDYgKzc3LDcgQEAgY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJJbnNw
ZWN0b3I7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OwogY2xhc3MgV2ViTW91c2VFdmVudDsKK2Ns
YXNzIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyOwogY2xhc3MgV2ViUGFnZUdyb3VwUHJveHk7
CiBjbGFzcyBXZWJQb3B1cE1lbnU7CiBjbGFzcyBXZWJXaGVlbEV2ZW50OwpAQCAtMTM2LDYgKzEz
Nyw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzSW5SZWRvKCkgY29uc3QgeyByZXR1cm4gbV9pc0lu
UmVkbzsgfQogCiAgICAgdm9pZCBzZXRBY3RpdmVQb3B1cE1lbnUoV2ViUG9wdXBNZW51Kik7Cisg
ICAgCisgICAgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIqIGFjdGl2ZU9wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
ci5nZXQoKTsgfQorICAgIHZvaWQgc2V0QWN0aXZlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIoUGFz
c1JlZlB0cjxXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcj4pOwogCiAgICAgLy8gLS0gQ2FsbGVk
IGZyb20gV2ViUHJvY2Vzcy4KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNv
bm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlciop
OwpAQCAtMzI3LDYgKzMzMSw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZENoYW5nZVNlbGVj
dGVkSW5kZXhGb3JBY3RpdmVQb3B1cE1lbnUoaW50MzJfdCBuZXdJbmRleCk7CiAKKyAgICB2b2lk
IGRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CisgICAg
dm9pZCBkaWRDYW5jZWxGb3JPcGVuUGFuZWwoKTsKKwogI2lmIEVOQUJMRShDT05URVhUX01FTlVT
KQogICAgIHZvaWQgZGlkU2VsZWN0SXRlbUZyb21BY3RpdmVDb250ZXh0TWVudShjb25zdCBXZWJD
b250ZXh0TWVudUl0ZW1EYXRhJik7CiAjZW5kaWYKQEAgLTM4OSw2ICszOTYsNyBAQCBwcml2YXRl
OgogI2VuZGlmCiAgICAgUmVmUHRyPFdlYlBvcHVwTWVudT4gbV9hY3RpdmVQb3B1cE1lbnU7CiAg
ICAgUmVmUHRyPFdlYkNvbnRleHRNZW51PiBtX2NvbnRleHRNZW51OworICAgIFJlZlB0cjxXZWJP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lcj4gbV9hY3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcjsK
IAogICAgIFNhbmRib3hFeHRlbnNpb25UcmFja2VyIG1fc2FuZGJveEV4dGVuc2lvblRyYWNrZXI7
CiAgICAgdWludDY0X3QgbV9wYWdlSUQ7CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDc0MTM2KQorKysgV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAt
NTQsNyArNTQsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIHsKICAgICBHZXRTb3VyY2VGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIFJ1bkphdmFTY3Jp
cHRJbk1haW5GcmFtZShXVEY6OlN0cmluZyBzY3JpcHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAK
LQogICAgIFByZWZlcmVuY2VzRGlkQ2hhbmdlKFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBz
dG9yZSkKIAogICAgIFNldFVzZXJBZ2VudChXVEY6OlN0cmluZyB1c2VyQWdlbnQpCkBAIC05MSw2
ICs5MCwxMCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIHsKICAgICAjIENvbnRleHQgbWVudS4KICAg
ICBEaWRTZWxlY3RJdGVtRnJvbUFjdGl2ZUNvbnRleHRNZW51KFdlYktpdDo6V2ViQ29udGV4dE1l
bnVJdGVtRGF0YSBtZW51SXRlbSk7CiAKKyAgICAjIE9wZW4gcGFuZWwuCisgICAgRGlkQ2hvb3Nl
RmlsZXNGb3JPcGVuUGFuZWwoVmVjdG9yPFdURjo6U3RyaW5nPiBmaWxlVVJMcykKKyAgICBEaWRD
YW5jZWxGb3JPcGVuUGFuZWwoKQorCiAgICAgU2V0V2luZG93UmVzaXplclNpemUoV2ViQ29yZTo6
SW50U2l6ZSBpbnRlcnNlY3RzVmlldykKIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTEwMywxMCAr
MTA2LDEyIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgewogICAgIENoYXJhY3RlckluZGV4Rm9yUG9p
bnQoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQpIC0+ICh1aW50NjRfdCByZXN1bHQpCiAgICAgRmly
c3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UodWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0
aCkgLT4gKFdlYkNvcmU6OkludFJlY3QgcmVzdWx0UmVjdCkKICNlbmRpZgotCS8vIFRoaXMgaXMg
YSBkdW1teSBtZXNzYWdlIHRvIGF2b2lkIGJyZWFraW5nIHRoZSBidWlsZCBmb3IgcGxhdGZvcm1z
IHRoYXQgZG9uJ3QgcmVxdWlyZSAKLQkvLyBzeW5jaHJvbm91cyBtZXNzYWdlcy4KLQlEdW1teSgp
IC0+IChib29sIGR1bW15UmV0dXJuKQorCiAjaWYgUExBVEZPUk0oUVQpCiAgICAgRmluZFpvb21h
YmxlQXJlYUZvclBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50KQogI2VuZGlmCisKKyAgICAv
LyBUaGlzIGlzIGEgZHVtbXkgbWVzc2FnZSB0byBhdm9pZCBicmVha2luZyB0aGUgYnVpbGQgZm9y
IHBsYXRmb3JtcyB0aGF0IGRvbid0IHJlcXVpcmUgCisgICAgLy8gc3luY2hyb25vdXMgbWVzc2Fn
ZXMuCisgICAgRHVtbXkoKSAtPiAoYm9vbCBkdW1teVJldHVybikKIH0KSW5kZXg6IFdlYktpdDIv
d2luL1dlYktpdDIudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvd2luL1dlYktpdDIudmNw
cm9qCShyZXZpc2lvbiA3NDEzNikKKysrIFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NzEsNiArNTcxLDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZp
bGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmgi
CisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJl
ZFxXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUK
IAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC0xMzYyLDYgKzEzNzAsMTQgQEAKIAkJCQkJPgogCQkJ
CTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcV2Vi
UGFnZVxXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+
CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXFdlYlBhZ2VcV2Vi
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8Rmls
ZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcV2ViUGFnZVxXZWJQYWdlLmNwcCIK
IAkJCQkJPgogCQkJCTwvRmlsZT4KQEAgLTIwNjMsNiArMjA3OSwxNCBAQAogCQkJCT4KIAkJCTwv
RmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUK
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
clByb3h5LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXFVJUHJvY2Vzc1xXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwIgogCQkJCT4KIAkJCTwv
RmlsZT4KQEAgLTIyNzMsNiArMjI5NywyMiBAQAogCQkJCQkJPgogCQkJCQk8L0ZpbGU+CiAJCQkJ
CTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xBUElcQ1xXS09wZW5QYW5l
bFBhcmFtZXRlcnMuY3BwIgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJCTxGaWxlCisJCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xBUElcQ1xXS09wZW5QYW5lbFBhcmFtZXRlcnMu
aCIKKwkJCQkJCT4KKwkJCQkJPC9GaWxlPgorCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxVSVByb2Nlc3NcQVBJXENcV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAiCisJCQkJ
CQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQ
cm9jZXNzXEFQSVxDXFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCIKKwkJCQkJCT4KKwkJCQkJ
PC9GaWxlPgorCQkJCQk8RmlsZQogCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcQVBJ
XENcV0tQYWdlLmNwcCIKIAkJCQkJCT4KIAkJCQkJPC9GaWxlPgpJbmRleDogV2ViS2l0Mi93aW4v
V2ViS2l0MkdlbmVyYXRlZC5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvd2luL1dlYktpdDJH
ZW5lcmF0ZWQubWFrZQkocmV2aXNpb24gNzQxMzYpCisrKyBXZWJLaXQyL3dpbi9XZWJLaXQyR2Vu
ZXJhdGVkLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDggQEAgYWxsOgogICAgIHhj
b3B5IC95IC9kICIuLlxVSVByb2Nlc3NcQVBJXGNcV0tJbnNwZWN0b3IuaCIgIiQoV0VCS0lUT1VU
UFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAgICAgeGNvcHkgL3kgL2QgIi4uXFVJUHJvY2Vzc1xB
UElcQ1xXS05hdGl2ZUV2ZW50LmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxXZWJLaXQy
IgogICAgIHhjb3B5IC95IC9kICIuLlxVSVByb2Nlc3NcQVBJXENcV0tOYXZpZ2F0aW9uRGF0YS5o
IiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKKyAgICB4Y29weSAveSAvZCAi
Li5cVUlQcm9jZXNzXEFQSVxDXFdLT3BlblBhbmVsUGFyYW1ldGVycy5oIiAiJChXRUJLSVRPVVRQ
VVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKKyAgICB4Y29weSAveSAvZCAiLi5cVUlQcm9jZXNzXEFQ
SVxDXFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNs
dWRlXFdlYktpdDIiCiAgICAgeGNvcHkgL3kgL2QgIi4uXFVJUHJvY2Vzc1xBUElcQ1xXS1BhZ2Uu
aCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAgICAgeGNvcHkgL3kgL2Qg
Ii4uXFVJUHJvY2Vzc1xBUElcQ1xXS1BhZ2VHcm91cC5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGlu
Y2x1ZGVcV2ViS2l0MiIKICAgICB4Y29weSAveSAvZCAiLi5cVUlQcm9jZXNzXEFQSVxDXFdLUHJl
ZmVyZW5jZXMuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCkluZGV4OiBX
ZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NDEzNykKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDIyIEBACisyMDEwLTEyLTE1ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Vi
S2l0MjogQ2FuJ3QgYWRkIGZpbGVzIHRvIGFuIDxpbnB1dCB0eXBlPWZpbGU+CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTA4NworCisgICAgICAgICog
TWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm06CisgICAgICAgIChydW5P
cGVuUGFuZWwpOgorICAgICAgICAoLVtCcm93c2VyV2luZG93Q29udHJvbGxlciBhd2FrZUZyb21O
aWJdKToKKyAgICAgICAgQWRkIHNpbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBydW5PcGVuUGFuZWwg
Y2FsbGJhY2suCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci93aW4vQnJvd3NlclZpZXcuY3BwOgor
ICAgICAgICAoQnJvd3NlclZpZXc6OmNyZWF0ZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OmNyZWF0ZU90aGVyUGFnZSk6Cisg
ICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjppbml0aWFsaXplKToKKyAgICAgICAgU3R1YiBv
dXQgcnVuT3BlblBhbmVsIGNhbGxiYWNrLiAKKwogMjAxMC0xMi0xNSAgQ29zbWluIFRydXRhICA8
Y3RydXRhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBKYW1lcyBSb2JpbnNv
bi4KSW5kZXg6IFdlYktpdFRvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJv
bGxlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2Vy
V2luZG93Q29udHJvbGxlci5tCShyZXZpc2lvbiA3NDEzNykKKysrIFdlYktpdFRvb2xzL01pbmlC
cm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tCSh3b3JraW5nIGNvcHkpCkBAIC01
MzUsNiArNTM1LDM2IEBAIHN0YXRpYyBib29sIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgK
ICAgICByZXR1cm4gYnV0dG9uID09IE5TQWxlcnRGaXJzdEJ1dHRvblJldHVybjsKIH0KIAorc3Rh
dGljIHZvaWQgcnVuT3BlblBhbmVsKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBX
S09wZW5QYW5lbFBhcmFtZXRlcnNSZWYgcGFyYW1ldGVycywgV0tPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBwcmludGYo
InJ1bk9wZW5QYW5lbCBjYWxsYmFja1xuIik7CisKKyAgICBOU09wZW5QYW5lbCAqb3BlblBhbmVs
ID0gW1tOU09wZW5QYW5lbCBhbGxvY10gaW5pdF07CisgICAgW29wZW5QYW5lbCBzZXRBbGxvd3NN
dWx0aXBsZVNlbGVjdGlvbjpXS09wZW5QYW5lbFBhcmFtZXRlcnNHZXRBbGxvd3NNdWx0aXBsZUZp
bGVzKHBhcmFtZXRlcnMpXTsKKworICAgIFdLUmV0YWluKGxpc3RlbmVyKTsKKworICAgIFtvcGVu
UGFuZWwgYmVnaW5TaGVldE1vZGFsRm9yV2luZG93OlsoQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIg
KiljbGllbnRJbmZvIHdpbmRvd10gY29tcGxldGlvbkhhbmRsZXI6XihOU0ludGVnZXIgcmVzdWx0
KSB7CisgICAgICAgIGlmIChyZXN1bHQgPT0gTlNGaWxlSGFuZGxpbmdQYW5lbE9LQnV0dG9uKSB7
CisgICAgICAgICAgICBXS011dGFibGVBcnJheVJlZiBmaWxlVVJMcyA9IFdLTXV0YWJsZUFycmF5
Q3JlYXRlKCk7CisKKyAgICAgICAgICAgIE5TVVJMICpuc1VSTDsKKyAgICAgICAgICAgIGZvciAo
bnNVUkwgaW4gW29wZW5QYW5lbCBVUkxzXSkgeworICAgICAgICAgICAgICAgIFdLVVJMUmVmIHdr
VVJMID0gV0tVUkxDcmVhdGVXaXRoQ0ZVUkwoKENGVVJMUmVmKW5zVVJMKTsKKyAgICAgICAgICAg
ICAgICBXS0FycmF5QXBwZW5kSXRlbShmaWxlVVJMcywgd2tVUkwpOworICAgICAgICAgICAgICAg
IFdLUmVsZWFzZSh3a1VSTCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFdLT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXJDaG9vc2VGaWxlcyhsaXN0ZW5lciwgZmlsZVVSTHMpOworCisgICAg
ICAgICAgICBXS1JlbGVhc2UoZmlsZVVSTHMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDYW5jZWwobGlzdGVuZXIpOworICAgICAgICAKKyAg
ICAgICAgV0tSZWxlYXNlKGxpc3RlbmVyKTsKKyAgICB9XTsKK30KKwogLSAodm9pZClhd2FrZUZy
b21OaWIKIHsKICAgICBfd2ViVmlldyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOltj
b250YWluZXJWaWV3IGZyYW1lXSBjb250ZXh0UmVmOl9jb250ZXh0XTsKQEAgLTYwNyw3ICs2Mzcs
OCBAQCAtICh2b2lkKWF3YWtlRnJvbU5pYgogICAgICAgICBydW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWwsCiAgICAgICAgIDAsICAgICAgICAgIC8qIGRpZERyYXcgKi8KICAgICAgICAgMCwgICAg
ICAgICAgLyogcGFnZURpZFNjcm9sbCAqLwotICAgICAgICAwICAgICAgICAgICAvKiBleGNlZWRl
ZERhdGFiYXNlUXVvdGEgKi8KKyAgICAgICAgMCwgICAgICAgICAgLyogZXhjZWVkZWREYXRhYmFz
ZVF1b3RhICovCisgICAgICAgIHJ1bk9wZW5QYW5lbAogICAgIH07CiAgICAgV0tQYWdlU2V0UGFn
ZVVJQ2xpZW50KF93ZWJWaWV3LnBhZ2VSZWYsICZ1aUNsaWVudCk7CiB9CkluZGV4OiBXZWJLaXRU
b29scy9NaW5pQnJvd3Nlci93aW4vQnJvd3NlclZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dFRvb2xzL01pbmlCcm93c2VyL3dpbi9Ccm93c2VyVmlldy5jcHAJKHJldmlzaW9uIDc0MTM3KQor
KysgV2ViS2l0VG9vbHMvTWluaUJyb3dzZXIvd2luL0Jyb3dzZXJWaWV3LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTE3LDcgKzExNyw4IEBAIHZvaWQgQnJvd3NlclZpZXc6OmNyZWF0ZShSRUNUIHdl
YlZpZXdSZWMKICAgICAgICAgMCwgICAgICAgICAgLyogcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsICovCiAgICAgICAgIDAsICAgICAgICAgIC8qIGRpZERyYXcgKi8KICAgICAgICAgMCwgICAg
ICAgICAgLyogcGFnZURpZFNjcm9sbCAqLwotICAgICAgICAwICAgICAgICAgICAvKiBleGNlZWRl
ZERhdGFiYXNlUXVvdGEgKi8KKyAgICAgICAgMCwgICAgICAgICAgLyogZXhjZWVkZWREYXRhYmFz
ZVF1b3RhICovCisgICAgICAgIDAgICAgICAgICAgIC8qIHJ1bk9wZW5QYW5lbCAqLwogICAgIH07
CiAKICAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tWaWV3R2V0UGFnZShtX3dlYlZpZXcpLCAm
dWlDbGllbnQpOwpJbmRleDogV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDc0MTM3KQorKysgV2ViS2l0VG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw3ICsxMzYs
OCBAQCBzdGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU90aGVyUGFnZShXS1BhZ2VSCiAgICAgICAgIDAs
IC8vIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbAogICAgICAgICAwLCAvLyBkaWREcmF3CiAg
ICAgICAgIDAsIC8vIHBhZ2VEaWRTY3JvbGwKLSAgICAgICAgMCAgLy8gZXhjZWVkZWREYXRhYmFz
ZVF1b3RhCisgICAgICAgIDAsIC8vIGV4Y2VlZGVkRGF0YWJhc2VRdW90YQorICAgICAgICAwICAv
LyBydW5PcGVuUGFuZWwKICAgICB9OwogICAgIFdLUGFnZVNldFBhZ2VVSUNsaWVudChuZXdQYWdl
LCAmb3RoZXJQYWdlVUlDbGllbnQpOwogCkBAIC0yMzgsNyArMjM5LDggQEAgdm9pZCBUZXN0Q29u
dHJvbGxlcjo6aW5pdGlhbGl6ZShpbnQgYXJnYwogICAgICAgICAwLCAvLyBydW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWwKICAgICAgICAgMCwgLy8gZGlkRHJhdwogICAgICAgICAwLCAvLyBwYWdl
RGlkU2Nyb2xsCi0gICAgICAgIDAgIC8vIGV4Y2VlZGVkRGF0YWJhc2VRdW90YQorICAgICAgICAw
LCAvLyBleGNlZWRlZERhdGFiYXNlUXVvdGEKKyAgICAgICAgMCAgLy8gcnVuT3BlblBhbmVsCiAg
ICAgfTsKICAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQobV9tYWluV2ViVmlldy0+cGFnZSgpLCAm
cGFnZVVJQ2xpZW50KTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76684</attachid>
            <date>2010-12-15 13:26:34 -0800</date>
            <delta_ts>2010-12-21 18:30:46 -0800</delta_ts>
            <desc>Updated Patch</desc>
            <filename>open2.diff</filename>
            <type>text/plain</type>
            <size>74607</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NDEzNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTAtMTItMTUgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJLaXQy
OiBDYW4ndCBhZGQgZmlsZXMgdG8gYW4gPGlucHV0IHR5cGU9ZmlsZT4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMDg3CisKKyAgICAgICAgQWRkIGV4
cG9ydGVkIGZ1bmN0aW9uLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisKIDIwMTAtMTIt
MTUgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA3Mzk2NSkKKysr
IFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIyMywxMCArMjIzLDEw
IEBAIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVyMTVoYW5kbGVBY2Nlc3MKIF9fWk43V2ViQ29y
ZTEyRXZlbnRIYW5kbGVyMTVzZW5kU2Nyb2xsRXZlbnRFdgogX19aTjdXZWJDb3JlMTJFdmVudEhh
bmRsZXIxNmhhbmRsZVdoZWVsRXZlbnRFUk5TXzE4UGxhdGZvcm1XaGVlbEV2ZW50RQogX19aTjdX
ZWJDb3JlMTJFdmVudEhhbmRsZXIxN3Njcm9sbFJlY3Vyc2l2ZWx5RU5TXzE1U2Nyb2xsRGlyZWN0
aW9uRU5TXzE3U2Nyb2xsR3JhbnVsYXJpdHlFUE5TXzROb2RlRQotX19aTjdXZWJDb3JlMTJFdmVu
dEhhbmRsZXIyNGxvZ2ljYWxTY3JvbGxSZWN1cnNpdmVseUVOU18yMlNjcm9sbExvZ2ljYWxEaXJl
Y3Rpb25FTlNfMTdTY3JvbGxHcmFudWxhcml0eUVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUxMkV2
ZW50SGFuZGxlcjIwaGl0VGVzdFJlc3VsdEF0UG9pbnRFUktOU184SW50UG9pbnRFYmJOU18xN0hp
dFRlc3RTY3JvbGxiYXJzRWpSS05TXzdJbnRTaXplRQogX19aTjdXZWJDb3JlMTJFdmVudEhhbmRs
ZXIyMWhhbmRsZU1vdXNlUHJlc3NFdmVudEVSS05TXzE4UGxhdGZvcm1Nb3VzZUV2ZW50RQogX19a
TjdXZWJDb3JlMTJFdmVudEhhbmRsZXIyM2hhbmRsZU1vdXNlUmVsZWFzZUV2ZW50RVJLTlNfMThQ
bGF0Zm9ybU1vdXNlRXZlbnRFCitfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjI0bG9naWNhbFNj
cm9sbFJlY3Vyc2l2ZWx5RU5TXzIyU2Nyb2xsTG9naWNhbERpcmVjdGlvbkVOU18xN1Njcm9sbEdy
YW51bGFyaXR5RVBOU180Tm9kZUUKIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVyMjdjYXBzTG9j
a1N0YXRlTWF5SGF2ZUNoYW5nZWRFdgogX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXI3bW91c2VV
cEVQN05TRXZlbnQKIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVyOGtleUV2ZW50RVA3TlNFdmVu
dApAQCAtMjczLDYgKzI3Myw3IEBAIF9fWk43V2ViQ29yZTEyU2hhcmVkQnVmZmVyMTJjcmVhdGVO
U0RhdGEKIF9fWk43V2ViQ29yZTEyU2hhcmVkQnVmZmVyMjRjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZlckMxRVBLY2kKIF9f
Wk43V2ViQ29yZTEyU2hhcmVkQnVmZmVyRDFFdgorX19aTjdXZWJDb3JlMTJTcGVsbENoZWNrZXI4
ZGlkQ2hlY2tFaVJLTjNXVEY2VmVjdG9ySU5TXzE5U3BlbGxDaGVja2luZ1Jlc3VsdEVMbTBFRUUK
IF9fWk43V2ViQ29yZTEyVGV4dEVuY29kaW5nQzFFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNv
cmUxMlRleHRJdGVyYXRvcjExcmFuZ2VMZW5ndGhFUEtOU181UmFuZ2VFYgogX19aTjdXZWJDb3Jl
MTJUZXh0SXRlcmF0b3IyNnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoRVBOU183RWxlbWVudEVp
aWIKQEAgLTUxOSw5ICs1MjAsOSBAQCBfX1pON1dlYkNvcmUyM1JlcGxhY2VTZWxlY3Rpb25Db21t
YW5kQzFFCiBfX1pON1dlYkNvcmUyM2NyZWF0ZUZyYWdtZW50RnJvbU5vZGVzRVBOU184RG9jdW1l
bnRFUktOM1dURjZWZWN0b3JJUE5TXzROb2RlRUxtMEVFRQogX19aTjdXZWJDb3JlMjNvdmVycmlk
ZURlZmF1bHRMYW5ndWFnZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTI0QmluYXJ5UHJv
cGVydHlMaXN0V3JpdGVyMTd3cml0ZVByb3BlcnR5TGlzdEV2Ci1fX1pON1dlYkNvcmUyNERvY3Vt
ZW50TWFya2VyQ29udHJvbGxlcjE0bWFya2Vyc0Zvck5vZGVFUE5TXzROb2RlRQogX19aTjdXZWJD
b3JlMjREb2N1bWVudE1hcmtlckNvbnRyb2xsZXIxM3JlbW92ZU1hcmtlcnNFTlNfMTREb2N1bWVu
dE1hcmtlcjEwTWFya2VyVHlwZUUKIF9fWk43V2ViQ29yZTI0RG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyMTRtYXJrZXJzRm9yTm9kZUVQTlNfNE5vZGVFCitfX1pON1dlYkNvcmUyNERvY3VtZW50TWFy
a2VyQ29udHJvbGxlcjE0bWFya2Vyc0Zvck5vZGVFUE5TXzROb2RlRQogX19aTjdXZWJDb3JlMjRE
b2N1bWVudE1hcmtlckNvbnRyb2xsZXIyM3JlbmRlcmVkUmVjdHNGb3JNYXJrZXJzRU5TXzE0RG9j
dW1lbnRNYXJrZXIxME1hcmtlclR5cGVFCiBfX1pON1dlYkNvcmUyNGNvbnRleHRNZW51SXRlbVRh
Z0l0YWxpY0V2CiBfX1pON1dlYkNvcmUyNGNvbnRleHRNZW51SXRlbVRhZ1N0eWxlc0V2CkBAIC05
MjQsNyArOTI1LDYgQEAgX19aTjdXZWJDb3JlOW1ha2VSYW5nZUVSS05TXzE1VmlzaWJsZVBvcwog
X19aTjdXZWJDb3JlOXBhZ2VDYWNoZUV2CiBfX1pON1dlYkNvcmU5cGxhaW5UZXh0RVBLTlNfNVJh
bmdlRU5TXzIwVGV4dEl0ZXJhdG9yQmVoYXZpb3JFCiBfX1pON1dlYkNvcmU5dG9FbGVtZW50RU4z
SlNDN0pTVmFsdWVFCi1fX1pON1dlYkNvcmUxMlNwZWxsQ2hlY2tlcjhkaWRDaGVja0VpUktOM1dU
RjZWZWN0b3JJTlNfMTlTcGVsbENoZWNraW5nUmVzdWx0RUxtMEVFRQogX19aTkszSlNDOEJpbmRp
bmdzMTBSb290T2JqZWN0MTJnbG9iYWxPYmplY3RFdgogX19aTkszV1RGNlN0cmluZzE0Y3JlYXRl
Q0ZTdHJpbmdFdgogX19aTks3V2ViQ29yZTEwQ3JlZGVudGlhbDExcGVyc2lzdGVuY2VFdgpAQCAt
MTA5MCw2ICsxMDkwLDcgQEAgX19aTks3V2ViQ29yZTRGb250MTBmbG9hdFdpZHRoRVJLTlNfN1Rl
eAogX19aTks3V2ViQ29yZTRGb250OGRyYXdUZXh0RVBOU18xNUdyYXBoaWNzQ29udGV4dEVSS05T
XzdUZXh0UnVuRVJLTlNfMTBGbG9hdFBvaW50RWlpCiBfX1pOSzdXZWJDb3JlNEtVUkwxMWNyZWF0
ZUNGVVJMRXYKIF9fWk5LN1dlYkNvcmU0S1VSTDExaXNMb2NhbEZpbGVFdgorX19aTks3V2ViQ29y
ZTRLVVJMMTRmaWxlU3lzdGVtUGF0aEV2CiBfX1pOSzdXZWJDb3JlNEtVUkwxN2xhc3RQYXRoQ29t
cG9uZW50RXYKIF9fWk5LN1dlYkNvcmU0S1VSTDRob3N0RXYKIF9fWk5LN1dlYkNvcmU0S1VSTDRw
YXRoRXYKSW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hh
bmdlTG9nCShyZXZpc2lvbiA3NDEzNikKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsOTkgQEAKKzIwMTAtMTItMTUgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
ZWJLaXQyOiBDYW4ndCBhZGQgZmlsZXMgdG8gYW4gPGlucHV0IHR5cGU9ZmlsZT4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMDg3CisKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMucHk6CisgICAgICAgIEFkZHMgbmV3IHR5cGVzLgor
CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQmFzZS5oOgorICAgICAgICBBZGRzIFdLT3BlblBh
bmVsUGFyYW1ldGVyc1JlZiBhbmQgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZi4KKworICAg
ICAgICAqIFNoYXJlZC9BUElPYmplY3QuaDoKKyAgICAgICAgQWRkcyBUeXBlT3BlblBhbmVsUGFy
YW1ldGVycyBhbmQgVHlwZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLgorCisgICAgICAgICogU2hh
cmVkL1dlYk9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViT3BlblBhbmVsUGFyYW1ldGVyczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViT3Bl
blBhbmVsUGFyYW1ldGVyczo6V2ViT3BlblBhbmVsUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJL
aXQ6OldlYk9wZW5QYW5lbFBhcmFtZXRlcnM6On5XZWJPcGVuUGFuZWxQYXJhbWV0ZXJzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViT3BlblBhbmVsUGFyYW1ldGVyczo6RGF0YTo6ZW5jb2RlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViT3BlblBhbmVsUGFyYW1ldGVyczo6RGF0YTo6ZGVjb2RlKToKKyAg
ICAgICAgKiBTaGFyZWQvV2ViT3BlblBhbmVsUGFyYW1ldGVycy5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViT3BlblBhbmVsUGFyYW1ldGVyczo6YWxsb3dNdWx0aXBsZUZpbGVzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViT3BlblBhbmVsUGFyYW1ldGVyczo6dHlwZSk6CisgICAgICAgIENs
YXNzIHJlcHJlc2VudGluZyBvcHRpb25zIG9uZSBjYW4gcGFzcyB0byBvcGVuIHBhbmVsLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorICAgICAgICBBZGQgY2FzdHMg
Zm9yIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMgYW5kIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
UHJveHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxQYXJhbWV0ZXJz
LmNwcDogQWRkZWQuCisgICAgICAgIChXS09wZW5QYW5lbFBhcmFtZXRlcnNHZXRUeXBlSUQpOgor
ICAgICAgICAoV0tPcGVuUGFuZWxQYXJhbWV0ZXJzR2V0QWxsb3dzTXVsdGlwbGVGaWxlcyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUGFyYW1ldGVycy5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHA6
IEFkZGVkLgorICAgICAgICAoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckdldFR5cGVJRCk6Cisg
ICAgICAgIChXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3NlRmlsZXMpOgorICAgICAgICAo
V0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNhbmNlbCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaDogQWRkZWQuCisgICAgICAgIEFkZCBBUEkg
d3JhcHBlcnMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmg6CisgICAgICAg
IEFkZCBuZXcgVUkgY2FsbGJhY2ssIFdLUGFnZVJ1bk9wZW5QYW5lbENhbGxiYWNrLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dlYktpdDIuaDoKKyAgICAgICAgQWRkIGluY2x1ZGVzIGZv
ciBuZXcgQVBJIGhlYWRlcnMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2Uu
Y3BwOgorICAgICAgICAoUVdLUGFnZTo6UVdLUGFnZSk6CisgICAgICAgIFN0dWIgb3V0IHRoZSBy
dW5PcGVuUGFuZWwgY2FsbGJhY2suCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6fldl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpjaG9vc2VGaWxlcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmNhbmNlbCk6CisgICAgICAgIChXZWJL
aXQ6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmludmFsaWRhdGUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5Lmg6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5Ojp0eXBl
KToKKyAgICAgICAgQWRkcyB0aGUgbGlzdGVuZXIgdXNlZCB0byBjaG9vc2UgZmlsZXMgZm9yIDxp
bnB1dCB0eXBlPWZpbGU+CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5PcGVuUGFuZWwpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDYW5jZWxGb3JPcGVuUGFuZWwpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVSUNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlVJQ2xpZW50OjpydW5PcGVuUGFuZWwpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJVSUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xp
ZW50OjpydW5PcGVuUGFuZWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXI6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyKToKKyAgICAgICAg
KFdlYktpdDo6V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXI6On5XZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lcik6CisgICAgICAgIChXZWJLaXQ6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyOjpk
aWRDaG9vc2VGaWxlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lcjo6ZGlzY29ubmVjdEZyb21QYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNsb3NlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0QWN0aXZlT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5l
bCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZENhbmNlbEZvck9wZW5QYW5lbCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6YWN0aXZlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICBQaXBlIHRocm91Z2gg
ZmlsZSBjaG9vc2luZy4KKworICAgICAgICAqIFdlYktpdDIucHJvOgorICAgICAgICAqIFdlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi52Y3By
b2o6CisgICAgICAgICogd2luL1dlYktpdDJHZW5lcmF0ZWQubWFrZToKKyAgICAgICAgQWRkIG5l
dyBmaWxlcy4KKwogMjAxMC0xMi0xNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgpJbmRleDogV2Vi
S2l0Mi9XZWJLaXQyLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYktpdDIucHJvCShyZXZp
c2lvbiA3NDEzNikKKysrIFdlYktpdDIvV2ViS2l0Mi5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTI2
MSw2ICsyNjEsNyBAQCBIRUFERVJTICs9IFwKICAgICBTaGFyZWQvV2ViRmluZE9wdGlvbnMuaCBc
CiAgICAgU2hhcmVkL1dlYk5hdmlnYXRpb25EYXRhU3RvcmUuaCBcCiAgICAgU2hhcmVkL1dlYk51
bWJlci5oIFwKKyAgICBTaGFyZWQvV2ViT3BlblBhbmVsUGFyYW1ldGVycy5oIFwKICAgICBTaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIFwKICAgICBTaGFyZWQvV2ViUGFnZUdyb3Vw
RGF0YS5oIFwKICAgICBTaGFyZWQvV2ViUG9wdXBJdGVtLmggXApAQCAtMjg4LDYgKzI4OSw4IEBA
IEhFQURFUlMgKz0gXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmggXAogICAgIFVJUHJv
Y2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVuZXIuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9D
L1dLSW5zcGVjdG9yLmggXAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFBhcmFtZXRl
cnMuaCBcCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCBc
CiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkRhdGEuaCBcCiAgICAgVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuaCBcCkBA
IC0zNDUsNiArMzQ4LDcgQEAgSEVBREVSUyArPSBcCiAgICAgVUlQcm9jZXNzL1dlYkxvYWRlckNs
aWVudC5oIFwKICAgICBVSVByb2Nlc3MvV2ViTmF2aWdhdGlvbkRhdGEuaCBcCiAgICAgVUlQcm9j
ZXNzL1dlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5oIFwKKyAgICBVSVByb2Nlc3MvV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oIFwKICAgICBVSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmgg
XAogICAgIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBcCiAgICAgVUlQcm9jZXNzL1dlYlBvbGlj
eUNsaWVudC5oIFwKQEAgLTQwNyw2ICs0MTEsNyBAQCBIRUFERVJTICs9IFwKICAgICBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRWRpdENvbW1hbmQuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmggXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaCBcCisgICAg
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggXAogICAgIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggXAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlR3JvdXBQcm94eS5oIFwKICAgICBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBcCkBAIC00NTgs
NiArNDYzLDcgQEAgU09VUkNFUyArPSBcCiAgICAgU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5j
cHAgXAogICAgIFNoYXJlZC9XZWJLZXlib2FyZEV2ZW50LmNwcCBcCiAgICAgU2hhcmVkL1dlYk1v
dXNlRXZlbnQuY3BwIFwKKyAgICBTaGFyZWQvV2ViT3BlblBhbmVsUGFyYW1ldGVycy5jcHAgXAog
ICAgIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBcCiAgICAgU2hhcmVkL1dl
YlBhZ2VHcm91cERhdGEuY3BwIFwKICAgICBTaGFyZWQvV2ViUGxhdGZvcm1Ub3VjaFBvaW50LmNw
cCBcCkBAIC00ODcsNiArNDkzLDggQEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9jZXNzL0FQSS9D
L1dLRnJhbWUuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tGcmFtZVBvbGljeUxpc3RlbmVy
LmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcCBcCisgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLT3BlblBhbmVsUGFyYW1ldGVycy5jcHAgXAorICAgIFVJUHJvY2Vzcy9BUEkv
Qy9XS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dL
TmF2aWdhdGlvbkRhdGEuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBcCiAg
ICAgVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3VwLmNwcCBcCkBAIC01MzYsNiArNTQ0LDcgQEAg
U09VUkNFUyArPSBcCiAgICAgVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHAgXAogICAgIFVJ
UHJvY2Vzcy9XZWJOYXZpZ2F0aW9uRGF0YS5jcHAgXAogICAgIFVJUHJvY2Vzcy9XZWJQYWdlQ29u
dGV4dE1lbnVDbGllbnQuY3BwIFwKKyAgICBVSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlz
dGVuZXJQcm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuY3BwIFwKICAgICBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL1dlYlBvbGljeUNsaWVu
dC5jcHAgXApAQCAtNjE3LDkgKzYyNiwxMCBAQCBTT1VSQ0VTICs9IFwKICAgICBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRWRpdENvbW1hbmQuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcCBcCi0g
ICAgV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dlYkluc3BlY3RvclF0LmNwcCBcCisgICAgV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcCBcCiAgICAgV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZUdyb3VwUHJveHkuY3BwIFwKKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvcXQvV2ViSW5zcGVjdG9y
UXQuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvcXQvQ2h1bmtlZFVwZGF0ZURyYXdpbmdB
cmVhUXQuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvcXQvVGlsZWREcmF3aW5nQXJlYVF0
LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dlYlBhZ2VRdC5jcHAgXApJbmRleDog
V2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMucHkJKHJldmlzaW9uIDc0MTM2KQorKysgV2ViS2l0
Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTI0OSw4ICsy
NDksOCBAQCBkZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24obWVzc2FnCiAKIGRlZiBz
dHJ1Y3Rfb3JfY2xhc3MobmFtZXNwYWNlLCB0eXBlKToKICAgICBzdHJ1Y3RzID0gZnJvemVuc2V0
KFsKLSAgICAgICAgJ1dlYkNvcmU6OktleXByZXNzQ29tbWFuZCcsCiAgICAgICAgICdXZWJDb3Jl
OjpDb21wb3NpdGlvblVuZGVybGluZScsCisgICAgICAgICdXZWJDb3JlOjpLZXlwcmVzc0NvbW1h
bmQnLAogICAgICAgICAnV2ViQ29yZTo6UGx1Z2luSW5mbycsCiAgICAgICAgICdXZWJDb3JlOjpW
aWV3cG9ydEFyZ3VtZW50cycsCiAgICAgICAgICdXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcycsCkBA
IC0yNTgsNiArMjU4LDcgQEAgZGVmIHN0cnVjdF9vcl9jbGFzcyhuYW1lc3BhY2UsIHR5cGUpOgog
ICAgICAgICAnV2ViS2l0OjpQbGF0Zm9ybVBvcHVwTWVudURhdGEnLAogICAgICAgICAnV2ViS2l0
OjpQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJywKICAgICAgICAgJ1dlYktpdDo6V2Vi
TmF2aWdhdGlvbkRhdGFTdG9yZScsCisgICAgICAgICdXZWJLaXQ6OldlYk9wZW5QYW5lbFBhcmFt
ZXRlcnM6OkRhdGEnLAogICAgICAgICAnV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
JywKICAgICAgICAgJ1dlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZScsCiAgICAgICAgICdXZWJL
aXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMnLApAQCAtNDExLDEzICs0MTIsMTQgQEAg
ZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAKICAgICBzcGVjaWFsX2Nhc2VzID0gewogICAg
ICAgICAnV1RGOjpTdHJpbmcnOiAnPHd0Zi90ZXh0L1dURlN0cmluZy5oPicsCisgICAgICAgICdX
ZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZSc6ICc8V2ViQ29yZS9FZGl0b3IuaD4nLAogICAg
ICAgICAnV2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kJzogJzxXZWJDb3JlL0tleWJvYXJkRXZlbnQu
aD4nLAogICAgICAgICAnV2ViQ29yZTo6UGx1Z2luSW5mbyc6ICc8V2ViQ29yZS9QbHVnaW5EYXRh
Lmg+JywKLSAgICAgICAgJ1dlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lJzogJzxXZWJDb3Jl
L0VkaXRvci5oPicsCiAgICAgICAgICdXZWJLaXQ6OldlYktleWJvYXJkRXZlbnQnOiAnIldlYkV2
ZW50LmgiJywKICAgICAgICAgJ1dlYktpdDo6V2ViTW91c2VFdmVudCc6ICciV2ViRXZlbnQuaCIn
LAotICAgICAgICAnV2ViS2l0OjpXZWJXaGVlbEV2ZW50JzogJyJXZWJFdmVudC5oIicsCisgICAg
ICAgICdXZWJLaXQ6OldlYk9wZW5QYW5lbFBhcmFtZXRlcnM6OkRhdGEnOiAnIldlYk9wZW5QYW5l
bFBhcmFtZXRlcnMuaCInLAogICAgICAgICAnV2ViS2l0OjpXZWJUb3VjaEV2ZW50JzogJyJXZWJF
dmVudC5oIicsCisgICAgICAgICdXZWJLaXQ6OldlYldoZWVsRXZlbnQnOiAnIldlYkV2ZW50Lmgi
JywKICAgICB9CiAgICAgaWYgdHlwZSBpbiBzcGVjaWFsX2Nhc2VzOgogICAgICAgICByZXR1cm4g
W3NwZWNpYWxfY2FzZXNbdHlwZV1dCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAkocmV2aXNpb24gNzQxMzYp
CisrKyBXZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNiAr
NjksOCBAQCBwdWJsaWM6CiAgICAgICAgIFR5cGVGcmFtZVBvbGljeUxpc3RlbmVyLAogICAgICAg
ICBUeXBlSW5zcGVjdG9yLAogICAgICAgICBUeXBlTmF2aWdhdGlvbkRhdGEsCisgICAgICAgIFR5
cGVPcGVuUGFuZWxQYXJhbWV0ZXJzLAorICAgICAgICBUeXBlT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXIsCiAgICAgICAgIFR5cGVQYWdlLAogICAgICAgICBUeXBlUGFnZUdyb3VwLAogICAgICAgICBU
eXBlUHJlZmVyZW5jZXMsCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0
ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0
ZXJzLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvU2hhcmVkL1dlYk9wZW5QYW5lbFBhcmFt
ZXRlcnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgIldlYk9wZW5QYW5lbFBhcmFtZXRlcnMuaCIKKworI2luY2x1ZGUgIldlYkNvcmVBcmd1
bWVudENvZGVycy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxXZWJPcGVu
UGFuZWxQYXJhbWV0ZXJzPiBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzOjpjcmVhdGUoY29uc3QgRGF0
YSYgZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYk9wZW5QYW5lbFBhcmFtZXRl
cnMoZGF0YSkpOworfQorCitXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzOjpXZWJPcGVuUGFuZWxQYXJh
bWV0ZXJzKGNvbnN0IERhdGEmIGRhdGEpCisgICAgOiBtX2RhdGEoZGF0YSkKK3sKK30KKworV2Vi
T3BlblBhbmVsUGFyYW1ldGVyczo6fldlYk9wZW5QYW5lbFBhcmFtZXRlcnMoKQoreworfQorCit2
b2lkIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnM6OkRhdGE6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVu
dEVuY29kZXIqIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2Rlci0+ZW5jb2RlKENvcmVJUEM6
OkluKGFsbG93TXVsdGlwbGVGaWxlcywgYWxsb3dzRGlyZWN0b3J5VXBsb2FkLCBhY2NlcHRUeXBl
cywgZmlsZW5hbWVzKSk7Cit9CisKK2Jvb2wgV2ViT3BlblBhbmVsUGFyYW1ldGVyczo6RGF0YTo6
ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgRGF0YSYgcGFyYW1ldGVy
cykKK3sKKyAgICByZXR1cm4gZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91dChwYXJhbWV0ZXJz
LmFsbG93TXVsdGlwbGVGaWxlcywgcGFyYW1ldGVycy5hbGxvd3NEaXJlY3RvcnlVcGxvYWQsIHBh
cmFtZXRlcnMuYWNjZXB0VHlwZXMsIHBhcmFtZXRlcnMuZmlsZW5hbWVzKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYktpdDIvU2hhcmVkL1dlYk9wZW5QYW5lbFBhcmFt
ZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0
ZXJzLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1NoYXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0
ZXJzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYk9wZW5QYW5lbFBhcmFtZXRlcnNfaAorI2RlZmluZSBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJz
X2gKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIENvcmVJUEMgeworICAg
IGNsYXNzIEFyZ3VtZW50RGVjb2RlcjsKKyAgICBjbGFzcyBBcmd1bWVudEVuY29kZXI7Cit9CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzIDogcHVi
bGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9
IFR5cGVPcGVuUGFuZWxQYXJhbWV0ZXJzOworCisgICAgc3RydWN0IERhdGEgeworICAgICAgICB2
b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqKSBjb25zdDsKKyAgICAgICAgc3Rh
dGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIERhdGEmKTsKKworICAg
ICAgICBib29sIGFsbG93TXVsdGlwbGVGaWxlczsKKyAgICAgICAgYm9vbCBhbGxvd3NEaXJlY3Rv
cnlVcGxvYWQ7CisgICAgICAgIFN0cmluZyBhY2NlcHRUeXBlczsKKyAgICAgICAgVmVjdG9yPFN0
cmluZz4gZmlsZW5hbWVzOworICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJPcGVu
UGFuZWxQYXJhbWV0ZXJzPiBjcmVhdGUoY29uc3QgRGF0YSYpOworICAgIH5XZWJPcGVuUGFuZWxQ
YXJhbWV0ZXJzKCk7CisKKyAgICBib29sIGFsbG93TXVsdGlwbGVGaWxlcygpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YS5hbGxvd011bHRpcGxlRmlsZXM7IH0gCisKK3ByaXZhdGU6CisgICAgV2ViT3Bl
blBhbmVsUGFyYW1ldGVycyhjb25zdCBEYXRhJik7CisKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KKworICAgIERhdGEgbV9kYXRhOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzX2gK
SW5kZXg6IFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCShyZXZpc2lvbiA3NDEzNikKKysrIFdlYktpdDIvU2hh
cmVkL0FQSS9jL1dLQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3Myw4IEBAIHR5cGVk
ZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLRnJhbWUqIFdLRnIKIHR5cGVkZWYgY29uc3Qgc3RydWN0
IE9wYXF1ZVdLRnJhbWVQb2xpY3lMaXN0ZW5lciogV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmOwog
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tJbnNwZWN0b3IqIFdLSW5zcGVjdG9yUmVmOwog
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tOYXZpZ2F0aW9uRGF0YSogV0tOYXZpZ2F0aW9u
RGF0YVJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLT3BlblBhbmVsUGFyYW1ldGVy
cyogV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVl
V0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciogV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZjsK
IHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUGFnZSogV0tQYWdlUmVmOwogdHlwZWRlZiBj
b25zdCBzdHJ1Y3QgT3BhcXVlV0tQYWdlR3JvdXAqIFdLUGFnZUdyb3VwUmVmOwogdHlwZWRlZiBj
b25zdCBzdHJ1Y3QgT3BhcXVlV0tQcmVmZXJlbmNlcyogV0tQcmVmZXJlbmNlc1JlZjsKSW5kZXg6
IFdlYktpdDIvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
UHJveHkuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXJQcm94eS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oIgor
CisjaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eShX
ZWJQYWdlUHJveHkqIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKK3sKK30KKworV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6fldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHko
KQoreworfQorCit2b2lkIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmNob29zZUZp
bGVzKEltbXV0YWJsZUFycmF5KiBmaWxlVVJMc0FycmF5KQoreworICAgIGlmICghbV9wYWdlKQor
ICAgICAgICByZXR1cm47CisKKyAgICBzaXplX3Qgc2l6ZSA9IGZpbGVVUkxzQXJyYXktPnNpemUo
KTsKKworICAgIFZlY3RvcjxTdHJpbmc+IGZpbGVQYXRoczsKKyAgICBmaWxlUGF0aHMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6
ZTsgKytpKSB7CisgICAgICAgIFdlYlVSTCogd2ViVVJMID0gZmlsZVVSTHNBcnJheS0+YXQ8V2Vi
VVJMPihpKTsKKyAgICAgICAgaWYgKHdlYlVSTCkgeworICAgICAgICAgICAgS1VSTCB1cmwoS1VS
TCgpLCB3ZWJVUkwtPnN0cmluZygpKTsgCisgICAgICAgICAgICBmaWxlUGF0aHMudW5jaGVja2Vk
QXBwZW5kKHVybC5maWxlU3lzdGVtUGF0aCgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1f
cGFnZS0+ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoZmlsZVBhdGhzKTsKK30KKwordm9pZCBX
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpjYW5jZWwoKQoreworICAgIGlmICghbV9w
YWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BhZ2UtPmRpZENhbmNlbEZvck9wZW5QYW5l
bCgpOworfQorCit2b2lkIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6OmludmFsaWRh
dGUoKQoreworICAgIG1fcGFnZSA9IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
UHJveHkuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyUHJveHkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eV9oCisjZGVmaW5l
IFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHlfaAorCisjaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBJbW11dGFibGVBcnJheTsKK2NsYXNzIFdl
YlBhZ2VQcm94eTsKKworY2xhc3MgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSA6IHB1
YmxpYyBBUElPYmplY3QgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUg
PSBUeXBlRnJhbWVQb2xpY3lMaXN0ZW5lcjsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk+IGNyZWF0ZShXZWJQYWdlUHJveHkqIHBhZ2UpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyUHJveHkocGFnZSkpOworICAgIH0KKworICAgIHZpcnR1YWwgfldlYk9wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyUHJveHkoKTsKKworICAgIHZvaWQgY2hvb3NlRmlsZXMoSW1tdXRhYmxlQXJyYXkq
KTsKKyAgICB2b2lkIGNhbmNlbCgpOworCisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisKK3ByaXZh
dGU6CisgICAgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eShXZWJQYWdlUHJveHkqKTsK
KworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQorCisg
ICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gbV9wYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5X2gKSW5kZXg6
IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gNzQxMzYpCisrKyBXZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3
IEBACiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRlICJXZWJGb3JtU3VibWlzc2lvbkxp
c3RlbmVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaCIK
KyNpbmNsdWRlICJXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgiCiAjaW5jbHVkZSAi
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgog
I2luY2x1ZGUgIldlYlBhZ2VHcm91cERhdGEuaCIKQEAgLTIzMSw2ICsyMzIsMTEgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmNsb3NlKCkKICAgICB9CiAjZW5kaWYKIAorICAgIGlmIChtX29wZW5QYW5l
bFJlc3VsdExpc3RlbmVyKSB7CisgICAgICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXItPmlu
dmFsaWRhdGUoKTsKKyAgICAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA9IDA7CisgICAg
fQorCiAgICAgbV9wYWdlVGl0bGUgPSBTdHJpbmcoKTsKICAgICBtX3Rvb2xUaXAgPSBTdHJpbmco
KTsKIApAQCAtMTI1MSw2ICsxMjU3LDE5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwYWdlRGlkU2Ny
b2xsKCkKICAgICBtX3VpQ2xpZW50LnBhZ2VEaWRTY3JvbGwodGhpcyk7CiB9CiAKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpydW5PcGVuUGFuZWwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViT3BlblBh
bmVsUGFyYW1ldGVyczo6RGF0YSYgZGF0YSkKK3sKKyAgICBpZiAobV9vcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lcikgeworICAgICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5pbnZhbGlkYXRl
KCk7CisgICAgICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgPSAwOworICAgIH0KKworICAg
IG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgPSBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclBy
b3h5OjpjcmVhdGUodGhpcyk7CisKKyAgICBpZiAoIW1fdWlDbGllbnQucnVuT3BlblBhbmVsKHRo
aXMsIHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCksIGRhdGEsIG1fb3BlblBhbmVsUmVzdWx0
TGlzdGVuZXIuZ2V0KCkpKQorICAgICAgICBkaWRDYW5jZWxGb3JPcGVuUGFuZWwoKTsKK30KKwog
I2lmIFBMQVRGT1JNKFFUKQogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZUNvbnRlbnRzU2l6
ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQogewpAQCAtMTQzMyw2ICsxNDUyLDI5IEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3QKICAgICBwcm9jZXNzKCkt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFNlbGVjdEl0ZW1Gcm9tQWN0aXZlQ29udGV4dE1l
bnUoaXRlbSksIG1fcGFnZUlEKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmRpZENob29zZUZp
bGVzRm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlVVJMcykKK3sKKyAgICBp
ZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IFRoaXMgYWxz
byBuZWVkcyB0byBzZW5kIGEgc2FuZGJveCBleHRlbnNpb24gZm9yIHRoZXNlIHBhdGhzLgorICAg
IHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3NlRmlsZXNGb3JPcGVu
UGFuZWwoZmlsZVVSTHMpLCBtX3BhZ2VJRCk7CisKKyAgICBtX29wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyLT5pbnZhbGlkYXRlKCk7CisgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA9IDA7Cit9
CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRDYW5jZWxGb3JPcGVuUGFuZWwoKQoreworICAgIGlm
ICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkRpZENhbmNlbEZvck9wZW5QYW5lbCgpLCBtX3BhZ2VJRCk7CisgICAg
CisgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0ZSgpOworICAgIG1fb3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXIgPSAwOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0
ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+IGNvbW1hbmRQcm94
eSwgVW5kb09yUmVkbyB1bmRvT3JSZWRvKQogewogICAgIG1fcGFnZUNsaWVudC0+cmVnaXN0ZXJF
ZGl0Q29tbWFuZChjb21tYW5kUHJveHksIHVuZG9PclJlZG8pOwpAQCAtMTYxNyw2ICsxNjU5LDEx
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQ3Jhc2goKQogICAgIH0KICNlbmRpZgog
CisgICAgaWYgKG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIpIHsKKyAgICAgICAgbV9vcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0ZSgpOworICAgICAgICBtX29wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyID0gMDsKKyAgICB9CisKICAgICBtX3BhZ2VUaXRsZSA9IFN0cmluZygpOwogICAg
IG1fdG9vbFRpcCA9IFN0cmluZygpOwogCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAko
cmV2aXNpb24gNzQxMzYpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtNzgsNiArNzgsNyBAQCBjbGFzcyBOYXRpdmVXZWJLZXlib2FyZEV2ZW50
OwogY2xhc3MgUGFnZUNsaWVudDsKIGNsYXNzIFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvOwogY2xh
c3MgU3RyaW5nUGFpclZlY3RvcjsKK2NsYXNzIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJv
eHk7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtOwogY2xhc3MgV2ViQ29udGV4dE1lbnVQcm94eTsKQEAgLTI3MCw4ICsyNzEsMTMgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0UmVzaXplc1RvQ29udGVudHNVc2luZ0xheW91dFNpemUoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYpOwogI2VuZGlmCiAKKyAgICAvLyBDYWxsZWQgYnkgdGhlIFdlYkNv
bnRleHRNZW51UHJveHkuCiAgICAgdm9pZCBjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChjb25zdCBX
ZWJDb250ZXh0TWVudUl0ZW1EYXRhJik7CiAKKyAgICAvLyBDYWxsZWQgYnkgdGhlIFdlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHkuCisgICAgdm9pZCBkaWRDaG9vc2VGaWxlc0Zvck9wZW5Q
YW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYpOworICAgIHZvaWQgZGlkQ2FuY2VsRm9yT3BlblBh
bmVsKCk7CisKICAgICBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIGNyZWF0aW9uUGFyYW1ldGVy
cyhjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgY29uc3Q7CiAKICNpZiBQTEFURk9STShRVCkKQEAg
LTMzOCw2ICszNDQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmly
bVBhbmVsKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdWludDY0X3QgZnJhbWVJRCwgYm9vbCYgc2hv
dWxkQ2xvc2UpOwogICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnREYXRhKGNvbnN0IFdlYkNvcmU6
OlZpZXdwb3J0QXJndW1lbnRzJik7CiAgICAgdm9pZCBwYWdlRGlkU2Nyb2xsKCk7CisgICAgdm9p
ZCBydW5PcGVuUGFuZWwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViT3BlblBhbmVsUGFyYW1l
dGVyczo6RGF0YSYpOworCiAjaWYgRU5BQkxFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgdm9p
ZCBwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAjZW5kaWYK
QEAgLTQzOCw2ICs0NDYsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFdlYlBvcHVwTWVudVBy
b3h5PiBtX2FjdGl2ZVBvcHVwTWVudTsKICAgICBSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4g
bV9hY3RpdmVDb250ZXh0TWVudTsKKyAgICBSZWZQdHI8V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXJQcm94eT4gbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcjsKIAogICAgIGRvdWJsZSBtX2VzdGlt
YXRlZFByb2dyZXNzOwogCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCShyZXZpc2lvbiA3NDEzNikKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsOCBAQCBtZXNzYWdl
cyAtPiBXZWJQYWdlUHJveHkgewogICAgIENhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgp
IC0+IChib29sIGNhblJ1bikKICAgICBSdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV1RGOjpT
dHJpbmcgbWVzc2FnZSwgdWludDY0X3QgZnJhbWVJRCkgLT4gKGJvb2wgc2hvdWxkQ2xvc2UpCiAg
ICAgUGFnZURpZFNjcm9sbCgpCisgICAgUnVuT3BlblBhbmVsKHVpbnQ2NF90IGZyYW1lSUQsIFdl
YktpdDo6V2ViT3BlblBhbmVsUGFyYW1ldGVyczo6RGF0YSBwYXJhbWV0ZXJzKQorCiAjaWYgRU5B
QkxFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgUGFnZURpZFJlcXVlc3RTY3JvbGwoV2ViQ29y
ZTo6SW50U2l6ZSBkZWx0YSkKICNlbmRpZgpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVUlD
bGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmNw
cAkocmV2aXNpb24gNzQxMzYpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJVSUNsaWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJOYXRpdmVXZWJLZXli
b2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViTnVtYmVy
LmgiCisjaW5jbHVkZSAiV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oIgogI2luY2x1
ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CkBAIC0yNDUsNCArMjQ2LDE0IEBAIHVuc2lnbmVkIGxv
bmcgbG9uZyBXZWJVSUNsaWVudDo6ZXhjZWVkZWQKICAgICByZXR1cm4gbV9jbGllbnQuZXhjZWVk
ZWREYXRhYmFzZVF1b3RhKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKG9yaWdpbiks
IHRvQVBJKGRhdGFiYXNlTmFtZS5pbXBsKCkpLCB0b0FQSShkYXRhYmFzZURpc3BsYXlOYW1lLmlt
cGwoKSksIGN1cnJlbnRRdW90YSwgY3VycmVudFVzYWdlLCBleHBlY3RlZFVzYWdlLCBtX2NsaWVu
dC5jbGllbnRJbmZvKTsKIH0KIAorYm9vbCBXZWJVSUNsaWVudDo6cnVuT3BlblBhbmVsKFdlYlBh
Z2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFdlYk9wZW5QYW5lbFBh
cmFtZXRlcnM6OkRhdGEmIHBhcmFtZXRlckRhdGEsIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
UHJveHkqIGxpc3RlbmVyKQoreworICAgIGlmICghbV9jbGllbnQucnVuT3BlblBhbmVsKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSZWZQdHI8V2ViT3BlblBhbmVsUGFyYW1ldGVycz4g
cGFyYW1ldGVycyA9IFdlYk9wZW5QYW5lbFBhcmFtZXRlcnM6OmNyZWF0ZShwYXJhbWV0ZXJEYXRh
KTsKKyAgICBtX2NsaWVudC5ydW5PcGVuUGFuZWwodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwg
dG9BUEkocGFyYW1ldGVycy5nZXQoKSksIHRvQVBJKGxpc3RlbmVyKSwgbV9jbGllbnQuY2xpZW50
SW5mbyk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQy
L1VJUHJvY2Vzcy9XZWJVSUNsaWVudC5oCShyZXZpc2lvbiA3NDEzNikKKysrIFdlYktpdDIvVUlQ
cm9jZXNzL1dlYlVJQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlICJBUElDbGllbnQuaCIKICNpbmNsdWRlICJXS1BhZ2UuaCIKICNpbmNsdWRlICJXZWJF
dmVudC5oIgorI2luY2x1ZGUgIldlYk9wZW5QYW5lbFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKQEAgLTQ1LDYgKzQ2
LDcgQEAgY2xhc3MgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdlYkZyYW1lUHJveHk7
CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKK2NsYXNzIFdl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk7CiAKIGNsYXNzIFdlYlVJQ2xpZW50IDogcHVi
bGljIEFQSUNsaWVudDxXS1BhZ2VVSUNsaWVudD4gewogcHVibGljOgpAQCAtODAsNiArODIsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBwYWdlRGlkU2Nyb2xsKFdlYlBhZ2VQcm94eSopOwogCiAgICAg
dW5zaWduZWQgbG9uZyBsb25nIGV4Y2VlZGVkRGF0YWJhc2VRdW90YShXZWJQYWdlUHJveHkqLCBX
ZWJGcmFtZVByb3h5KiwgV2ViU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNl
TmFtZSwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGxv
bmcgY3VycmVudFF1b3RhLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFVzYWdlLCB1bnNpZ25l
ZCBsb25nIGxvbmcgZXhwZWN0ZWRVc2FnZSk7CisKKyAgICBib29sIHJ1bk9wZW5QYW5lbChXZWJQ
YWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViT3BlblBhbmVsUGFyYW1ldGVyczo6
RGF0YSYsIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHJldmlz
aW9uIDc0MTM2KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTUzLDYgKzUzLDggQEAgY2xhc3MgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5OwogY2xhc3MgV2ViRnJhbWVQcm94eTsKIGNsYXNzIFdlYkluc3BlY3RvclByb3h5OwogY2xh
c3MgV2ViTmF2aWdhdGlvbkRhdGE7CitjbGFzcyBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzOworY2xh
c3MgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdlYlBhZ2VHcm91cDsK
IGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByZWZlcmVuY2VzOwpAQCAtNzAsNiArNzIs
OCBAQCBXS19BRERfQVBJX01BUFBJTkcoV0tGb3JtU3VibWlzc2lvbkxpc3RlCiBXS19BRERfQVBJ
X01BUFBJTkcoV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmLCBXZWJGcmFtZVBvbGljeUxpc3RlbmVy
UHJveHkpCiBXS19BRERfQVBJX01BUFBJTkcoV0tGcmFtZVJlZiwgV2ViRnJhbWVQcm94eSkKIFdL
X0FERF9BUElfTUFQUElORyhXS05hdmlnYXRpb25EYXRhUmVmLCBXZWJOYXZpZ2F0aW9uRGF0YSkK
K1dLX0FERF9BUElfTUFQUElORyhXS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYsIFdlYk9wZW5QYW5l
bFBhcmFtZXRlcnMpCitXS19BRERfQVBJX01BUFBJTkcoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
clJlZiwgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSkKIFdLX0FERF9BUElfTUFQUElO
RyhXS1BhZ2VHcm91cFJlZiwgV2ViUGFnZUdyb3VwKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUGFn
ZVJlZiwgV2ViUGFnZVByb3h5KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUHJlZmVyZW5jZXNSZWYs
IFdlYlByZWZlcmVuY2VzKQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tPcGVuUGFu
ZWxQYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S09wZW5QYW5lbFBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJXS09wZW5QYW5lbFBhcmFtZXRlcnMuaCIK
KworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYk9wZW5QYW5lbFBhcmFtZXRl
cnMuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tUeXBlSUQgV0tPcGVuUGFuZWxQ
YXJhbWV0ZXJzR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9BUEkoV2ViT3BlblBhbmVsUGFy
YW1ldGVyczo6QVBJVHlwZSk7Cit9CisKK2Jvb2wgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzR2V0QWxs
b3dzTXVsdGlwbGVGaWxlcyhXS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYgcGFyYW1ldGVyc1JlZikK
K3sKKyAgICByZXR1cm4gdG9JbXBsKHBhcmFtZXRlcnNSZWYpLT5hbGxvd011bHRpcGxlRmlsZXMo
KTsKK30KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUGFyYW1ldGVy
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUGFy
YW1ldGVycy5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tPcGVu
UGFuZWxQYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdLT3BlblBhbmVsUGFyYW1ldGVyc19oCisjZGVmaW5lIFdLT3BlblBhbmVs
UGFyYW1ldGVyc19oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCisjaWZuZGVmIF9f
Y3BsdXNwbHVzCisjaW5jbHVkZSA8c3RkYm9vbC5oPgorI2VuZGlmCisKKyNpZmRlZiBfX2NwbHVz
cGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVHlwZUlEIFdLT3BlblBh
bmVsUGFyYW1ldGVyc0dldFR5cGVJRCgpOworCitXS19FWFBPUlQgYm9vbCBXS09wZW5QYW5lbFBh
cmFtZXRlcnNHZXRBbGxvd3NNdWx0aXBsZUZpbGVzKFdLT3BlblBhbmVsUGFyYW1ldGVyc1JlZiBw
YXJhbWV0ZXJzKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8q
IFdLT3BlblBhbmVsUGFyYW1ldGVyc19oICovCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcAkocmV2aXNpb24gMCkK
KysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldL
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCIKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2lu
Y2x1ZGUgIldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaCIKKwordXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKKworV0tUeXBlSUQgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckdldFR5cGVJ
RCgpCit7CisgICAgcmV0dXJuIHRvQVBJKFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk6
OkFQSVR5cGUpOworfQorCit2b2lkIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDaG9vc2VGaWxl
cyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyUmVmLCBXS0FycmF5UmVmIGZp
bGVVUkxzUmVmKQoreworICAgIHRvSW1wbChsaXN0ZW5lclJlZiktPmNob29zZUZpbGVzKHRvSW1w
bChmaWxlVVJMc1JlZikpOworfQorCit2b2lkIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDYW5j
ZWwoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lclJlZikKK3sKKyAgICB0b0lt
cGwobGlzdGVuZXJSZWYpLT5jYW5jZWwoKTsKK30KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmgJKHJldmlzaW9uIDApCisr
KyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXJfaAorI2RlZmluZSBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyX2gK
KworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0
ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVHlwZUlEIFdLT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJHZXRUeXBlSUQoKTsKKworV0tfRVhQT1JUIHZvaWQgV0tPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lckNob29zZUZpbGVzKFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIs
IFdLQXJyYXlSZWYgZmlsZVVSTHMpOworV0tfRVhQT1JUIHZvaWQgV0tPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lckNhbmNlbChXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyKTsKKwor
I2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIFdLT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXJfaCAqLwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHJldmlzaW9u
IDc0MTM2KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE1NCw3ICsxNTQsNyBAQCB0eXBlZGVmIGJvb2wgKCpXS1BhZ2VSdW5CZWZvcmVVbmxv
YWRDb25mCiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWREcmF3Q2FsbGJhY2spKFdLUGFnZVJlZiBw
YWdlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZURpZFNj
cm9sbENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0
eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyAoKldLUGFnZUV4Y2VlZGVkRGF0YWJhc2VRdW90YUNh
bGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tTZWN1cml0eU9yaWdp
blJlZiBvcmlnaW4sIFdLU3RyaW5nUmVmIGRhdGFiYXNlTmFtZSwgV0tTdHJpbmdSZWYgZGlzcGxh
eU5hbWUsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50UXVvdGEsIHVuc2lnbmVkIGxvbmcgbG9u
ZyBjdXJyZW50VXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBleHBlY3RlZFVzYWdlLCBjb25zdCB2
b2lkICpjbGllbnRJbmZvKTsKLQordHlwZWRlZiB2b2lkICgqV0tQYWdlUnVuT3BlblBhbmVsQ2Fs
bGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS09wZW5QYW5lbFBhcmFt
ZXRlcnNSZWYgcGFyYW1ldGVycywgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5l
ciwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiAKIHN0cnVjdCBXS1BhZ2VVSUNsaWVudCB7CiAg
ICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2ZXJzaW9uOwpAQCAtMTgyLDYgKzE4Miw3IEBAIHN0cnVjdCBXS1BhZ2VV
SUNsaWVudCB7CiAgICAgV0tQYWdlRGlkRHJhd0NhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkaWREcmF3OwogICAgIFdLUGFnZURpZFNjcm9sbENh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZURp
ZFNjcm9sbDsKICAgICBXS1BhZ2VFeGNlZWRlZERhdGFiYXNlUXVvdGFDYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VlZGVkRGF0YWJhc2VRdW90YTsKKyAgICBXS1Bh
Z2VSdW5PcGVuUGFuZWxDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJ1bk9wZW5QYW5lbDsKIH07CiB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VVSUNsaWVudCBX
S1BhZ2VVSUNsaWVudDsKIApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV2ViS2l0Mi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dlYktpdDIuaAkocmV2aXNp
b24gNzQxMzYpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XZWJLaXQyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDYgKzQzLDggQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLTXV0YWJsZURpY3Rp
b25hcnkuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLTmF2aWdhdGlvbkRhdGEuaD4KICNpbmNsdWRl
IDxXZWJLaXQyL1dLTnVtYmVyLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS09wZW5QYW5lbFBhcmFt
ZXRlcnMuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaD4K
ICNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlR3Jv
dXAuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUHJlZmVyZW5jZXMuaD4KSW5kZXg6IFdlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAJKHJldmlzaW9uIDc0MTM2KQorKysgV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjAsNyArMzYwLDgg
QEAgUVdLUGFnZTo6UVdLUGFnZShRV0tDb250ZXh0KiBjb250ZXh0KQogICAgICAgICAwLCAgLyog
cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsICovCiAgICAgICAgIDAsICAvKiBkaWREcmF3ICov
CiAgICAgICAgIDAsICAvKiBwYWdlRGlkU2Nyb2xsICovCi0gICAgICAgIDAgICAvKiBleGNlZWRl
ZERhdGFiYXNlUXVvdGEgKi8KKyAgICAgICAgMCwgIC8qIGV4Y2VlZGVkRGF0YWJhc2VRdW90YSAq
LworICAgICAgICAwICAgLyogcnVuT3BlblBhbmVsICovCiAgICAgfTsKICAgICBXS1BhZ2VTZXRQ
YWdlVUlDbGllbnQocGFnZVJlZigpLCAmdWlDbGllbnQpOwogfQpJbmRleDogV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDc0MTM2KQorKysgV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMy
NCw2ICszMjQsOCBAQAogCQlCQzFBN0M1ODExMzZFMTlDMDBGQjcxNjcgLyogUHJvY2Vzc0xhdW5j
aGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzFB
N0M1NzExMzZFMTlDMDBGQjcxNjcgLyogUHJvY2Vzc0xhdW5jaGVyLmggKi87IH07CiAJCUJDMUI0
MTk4MTFENDFENTcwMDExRThERCAvKiBXS0J1bmRsZVBhZ2VQcml2YXRlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzFCNDE5NzExRDQxRDU3MDAxMUU4
REQgLyogV0tCdW5kbGVQYWdlUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUJDMUREN0IyMTE0REMzOTYwMDVBREFGMyAvKiBXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDMUREN0IxMTE0REMzOTYwMDVBREFGMyAvKiBXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCAqLzsgfTsKKwkJQkMxREZFOEYxMkIzMUNBODAwNURGNzMwIC8qIFdLT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMURGRThEMTJCMzFDQTgwMDVERjczMCAvKiBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQlCQzFERkVB
NDEyQjMxRjg3MDA1REY3MzAgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxREZFQTIxMkIz
MUY4NzAwNURGNzMwIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaCAqLzsgfTsK
IAkJQkMyMDRFRTIxMUM4M0U5ODAwOEYzMzc1IC8qIEluamVjdGVkQnVuZGxlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjA0RUUwMTFDODNFOTgw
MDhGMzM3NSAvKiBJbmplY3RlZEJ1bmRsZS5jcHAgKi87IH07CiAJCUJDMjA0RUUzMTFDODNFOTgw
MDhGMzM3NSAvKiBJbmplY3RlZEJ1bmRsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkMyMDRFRTExMUM4M0U5ODAwOEYzMzc1IC8qIEluamVjdGVkQnVu
ZGxlLmggKi87IH07CiAJCUJDMjA0RUU2MTFDODNFQTkwMDhGMzM3NSAvKiBJbmplY3RlZEJ1bmRs
ZU1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzIwNEVFNTExQzgzRUE5MDA4RjMzNzUgLyogSW5qZWN0ZWRCdW5kbGVNYWMuY3BwICovOyB9OwpA
QCAtNDQ0LDYgKzQ0NiwxNCBAQAogCQlCQzg0NTJBODExNjJDODA5MDBDQUI5QjUgLyogRHJhd2lu
Z0FyZWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
ODQ1MkE2MTE2MkM4MDkwMENBQjlCNSAvKiBEcmF3aW5nQXJlYS5oICovOyB9OwogCQlCQzg0RUIx
ODEyQTcxMDBDMDA4M0YyREEgLyogV2ViUHJlZmVyZW5jZXNNYWMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzg0RUIxNzEyQTcxMDBDMDA4M0YyREEg
LyogV2ViUHJlZmVyZW5jZXNNYWMubW0gKi87IH07CiAJCUJDODU3RTg3MTJCNzFFQkIwMEVERUIy
RSAvKiBXZWJQYWdlUHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzg1N0U4NTEyQjcxRUJCMDBFREVCMkUgLyogV2ViUGFnZVByb3h5TWFj
Lm1tICovOyB9OworCQlCQzg1N0Y3RTEyQjgyQ0VFMDBFREVCMkUgLyogV2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzFERkVBMzEyQjMxRjg3MDA1REY3MzAgLyogV2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJQcm94eS5jcHAgKi87IH07CisJCUJDODU3Rjg1MTJCODJEMEIwMEVERUIyRSAvKiBX
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkM4NTdGODMxMkI4MkQwQjAwRURFQjJFIC8qIFdlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyLmggKi87IH07CisJCUJDODU3Rjg2MTJCODJEMEIwMEVERUIyRSAvKiBX
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzg1N0Y4NDEyQjgyRDBCMDBFREVCMkUgLyogV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXIuY3BwICovOyB9OworCQlCQzg1N0ZCNTEyQjgzMEU2MDBFREVCMkUg
LyogV2ViT3BlblBhbmVsUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkM4NTdGQjMxMkI4MzBFNjAwRURFQjJFIC8qIFdlYk9wZW5QYW5l
bFBhcmFtZXRlcnMuaCAqLzsgfTsKKwkJQkM4NTdGQjYxMkI4MzBFNjAwRURFQjJFIC8qIFdlYk9w
ZW5QYW5lbFBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM4NTdGQjQxMkI4MzBFNjAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFBhcmFt
ZXRlcnMuY3BwICovOyB9OworCQlCQzg1N0ZFNjEyQjg0M0Q4MDBFREVCMkUgLyogV0tPcGVuUGFu
ZWxQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzg1N0ZFNDEyQjg0M0Q4MDBFREVCMkUgLyogV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQlCQzg1ODA2
MjEyQjg1MDU3MDBFREVCMkUgLyogV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzFERkU4RTEyQjMxQ0E4
MDA1REY3MzAgLyogV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAgKi87IH07CisJCUJDODU4
MDYzMTJCODUwNTcwMEVERUIyRSAvKiBXS09wZW5QYW5lbFBhcmFtZXRlcnMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4NTdGRTUxMkI4NDNEODAw
RURFQjJFIC8qIFdLT3BlblBhbmVsUGFyYW1ldGVycy5jcHAgKi87IH07CiAJCUJDODY5OUI1MTE2
QUFEQUEwMDJBOTI1QiAvKiBXS1ZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDODY5OUIyMTE2QUFEQUEwMDJBOTI1QiAvKiBXS1ZpZXcuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCUJDODY5OUI2MTE2
QUFEQUEwMDJBOTI1QiAvKiBXS1ZpZXcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzg2OTlCMzExNkFBREFBMDAyQTkyNUIgLyogV0tWaWV3Lm1tICov
OyB9OwogCQlCQzg2OTlCNzExNkFBREFBMDAyQTkyNUIgLyogV0tWaWV3SW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODY5OUI0MTE2QUFE
QUEwMDJBOTI1QiAvKiBXS1ZpZXdJbnRlcm5hbC5oICovOyB9OwpAQCAtOTc1LDYgKzk4NSwxMCBA
QAogCQlCQzFBN0M1NzExMzZFMTlDMDBGQjcxNjcgLyogUHJvY2Vzc0xhdW5jaGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2Nlc3NMYXVuY2hlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQzFCNDE5NzExRDQxRDU3MDAxMUU4REQgLyogV0tCdW5kbGVQ
YWdlUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRsZVBh
Z2VQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMUREN0IxMTE0REMz
OTYwMDVBREFGMyAvKiBXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJDMURGRThEMTJCMzFDQTgwMDVERjczMCAvKiBXS09wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMxREZFOEUx
MkIzMUNBODAwNURGNzMwIC8qIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMURGRUEyMTJCMzFGODcwMDVERjcz
MCAvKiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMxREZFQTMxMkIzMUY4NzAwNURGNzMwIC8qIFdlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMjA0RUUwMTFDODNFOTgwMDhGMzM3NSAvKiBJbmplY3Rl
ZEJ1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3Rl
ZEJ1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMjA0RUUxMTFDODNF
OTgwMDhGMzM3NSAvKiBJbmplY3RlZEJ1bmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbmplY3RlZEJ1bmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
QzIwNEVFNTExQzgzRUE5MDA4RjMzNzUgLyogSW5qZWN0ZWRCdW5kbGVNYWMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVNYWMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA5NSw2ICsxMTA5LDEyIEBACiAJCUJDODQ1MkE2
MTE2MkM4MDkwMENBQjlCNSAvKiBEcmF3aW5nQXJlYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEcmF3aW5nQXJlYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
Qzg0RUIxNzEyQTcxMDBDMDA4M0YyREEgLyogV2ViUHJlZmVyZW5jZXNNYWMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQcmVmZXJlbmNlc01hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4NTdFODUxMkI3MUVCQjAwRURFQjJFIC8qIFdl
YlBhZ2VQcm94eU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYlBhZ2VQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM4NTdG
ODMxMkI4MkQwQjAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDODU3Rjg0MTJCODJEMEIwMEVERUIyRSAv
KiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUJDODU3RkIzMTJCODMwRTYwMEVERUIyRSAvKiBXZWJPcGVuUGFu
ZWxQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk9wZW5Q
YW5lbFBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM4NTdGQjQx
MkI4MzBFNjAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViT3BlblBhbmVsUGFyYW1ldGVycy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDODU3RkU0MTJCODQzRDgwMEVERUIyRSAvKiBX
S09wZW5QYW5lbFBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJD
ODU3RkU1MTJCODQzRDgwMEVERUIyRSAvKiBXS09wZW5QYW5lbFBhcmFtZXRlcnMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4Njk5QjIxMTZBQURBQTAwMkE5MjVC
IC8qIFdLVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1ZpZXcuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4Njk5QjMxMTZBQURBQTAwMkE5MjVCIC8q
IFdLVmlldy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLVmll
dy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4Njk5QjQxMTZBQURBQTAwMkE5
MjVCIC8qIFdLVmlld0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLVmlld0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTk5LDYg
KzE2MTksOCBAQAogCQkJCUJDMzNERDY3MTIzODQ2NDYwMDM2MEYzRiAvKiBXZWJOdW1iZXIuaCAq
LywKIAkJCQlCQzU3NDRFRDEyNjM4RkIzMDA2RjBGMTIgLyogV2ViUG9wdXBJdGVtLmNwcCAqLywK
IAkJCQlCQzU3NDRFRTEyNjM4RkIzMDA2RjBGMTIgLyogV2ViUG9wdXBJdGVtLmggKi8sCisJCQkJ
QkM4NTdGQjQxMkI4MzBFNjAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwICov
LAorCQkJCUJDODU3RkIzMTJCODMwRTYwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJz
LmggKi8sCiAJCQkJQzA2QzYwOTMxMjRDMTQ0MzAwMDE2ODJGIC8qIFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuY3BwICovLAogCQkJCUMwNkM2MDk0MTI0QzE0NDMwMDAxNjgyRiAvKiBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmggKi8sCiAJCQkJQkM3QjYyNTExMkE0M0M5NjAwRDE3NEE0IC8q
IFdlYlBhZ2VHcm91cERhdGEuY3BwICovLApAQCAtMTg0MSw2ICsxODYzLDggQEAKIAkJCQkxQzhF
MjgxRjEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmNwcCAqLywKIAkJCQkxQzhFMjgx
RTEyNzVEMTU0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yLmggKi8sCiAJCQkJMUM4RTJBMUMxMjc3
ODMzRjAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5tZXNzYWdlcy5pbiAqLywKKwkJCQlCQzg1N0Y4
NDEyQjgyRDBCMDBFREVCMkUgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwICovLAor
CQkJCUJDODU3RjgzMTJCODJEMEIwMEVERUIyRSAvKiBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
ci5oICovLAogCQkJCUJDOTYzRDZBMTEzREQxOTIwMDU3NEJFMiAvKiBXZWJQYWdlLmNwcCAqLywK
IAkJCQlCQzAzMkQ4QjEwRjQzN0EwMDA1OEMxNUEgLyogV2ViUGFnZS5oICovLAogCQkJCUMwQ0U3
MjU4MTI0N0U0REEwMEJDMEVDNCAvKiBXZWJQYWdlLm1lc3NhZ2VzLmluICovLApAQCAtMTkxNSw2
ICsxOTM5LDggQEAKIAkJCQlCQzU5NTM0MDEwRkMwNDUyMDA5OEY4MkQgLyogV2ViTG9hZGVyQ2xp
ZW50LmggKi8sCiAJCQkJQkNGNjlGQTExMTc2RDAxNDAwNDcxQTUyIC8qIFdlYk5hdmlnYXRpb25E
YXRhLmNwcCAqLywKIAkJCQlCQ0Y2OUZBMDExNzZEMDE0MDA0NzFBNTIgLyogV2ViTmF2aWdhdGlv
bkRhdGEuaCAqLywKKwkJCQlCQzFERkVBMzEyQjMxRjg3MDA1REY3MzAgLyogV2ViT3BlblBhbmVs
UmVzdWx0TGlzdGVuZXJQcm94eS5jcHAgKi8sCisJCQkJQkMxREZFQTIxMkIzMUY4NzAwNURGNzMw
IC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaCAqLywKIAkJCQk1MTUzNTY5QTEy
OTFCMUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCAqLywKIAkJCQk1
MTUzNTY5QjEyOTFCMUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmggKi8s
CiAJCQkJQkM3QjYyMDUxMjlBMEE2NzAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cC5jcHAgKi8sCkBA
IC0xOTc1LDYgKzIwMDEsMTAgQEAKIAkJCQkxQUI3RDc4QjEyODhDRDlBMDBDRkQwOEMgLyogV0tE
b3dubG9hZC5oICovLAogCQkJCUJDRTQ2OTU3MTIxNEVERjQwMDBCOThFQiAvKiBXS0Zvcm1TdWJt
aXNzaW9uTGlzdGVuZXIuY3BwICovLAogCQkJCUJDRTQ2OTU4MTIxNEVERjQwMDBCOThFQiAvKiBX
S0Zvcm1TdWJtaXNzaW9uTGlzdGVuZXIuaCAqLywKKwkJCQlCQzFERkU4RTEyQjMxQ0E4MDA1REY3
MzAgLyogV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAgKi8sCisJCQkJQkMxREZFOEQxMkIz
MUNBODAwNURGNzMwIC8qIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCAqLywKKwkJCQlCQzg1
N0ZFNTEyQjg0M0Q4MDBFREVCMkUgLyogV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcCAqLywKKwkJ
CQlCQzg1N0ZFNDEyQjg0M0Q4MDBFREVCMkUgLyogV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmggKi8s
CiAJCQkJQkNEMDEzOTgxMTBGQTQyMDAwM0I4QTY3IC8qIFdLRnJhbWUuY3BwICovLAogCQkJCUJD
RDAxMzk3MTEwRkE0MjAwMDNCOEE2NyAvKiBXS0ZyYW1lLmggKi8sCiAJCQkJQkNCOUY2QTQxMTIz
REQwRDAwQTEzN0UwIC8qIFdLRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAgKi8sCkBAIC0yNzE4LDYg
KzI3NDgsMTEgQEAKIAkJCQlGNjJBNzY2MjEyQjFBQkVEMDAwNUYxQjYgLyogV0tEYXRhYmFzZU1h
bmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUY2MkE3NkI3MTJCMUIyNUYwMDA1RjFCNiAvKiBX
ZWJEYXRhYmFzZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjYyQTc2Qjkx
MkIxQjI1RjAwMDVGMUI2IC8qIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUJDMURGRThGMTJCMzFDQTgwMDVERjczMCAvKiBXS09wZW5QYW5lbFJl
c3VsdExpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzFERkVBNDEyQjMxRjg3MDA1REY3
MzAgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQkM4NTdGODUxMkI4MkQwQjAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzg1N0ZCNTEyQjgzMEU2MDBFREVCMkUgLyogV2ViT3Bl
blBhbmVsUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkM4NTdGRTYxMkI4NDNEODAw
RURFQjJFIC8qIFdLT3BlblBhbmVsUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0
QTlBQTgxMkI3RTc5NjAwOEZFOTg0IC8qIFdLVGV4dElucHV0V2luZG93Q29udHJvbGxlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUE0QTlDNTYxMkI4MTZDRjAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1
Z2luTW9kdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTRBOUYzMzEyQjg0NEUyMDA4RkU5ODQg
LyogUGx1Z2luUXVpcmtzLmggaW4gSGVhZGVycyAqLywKQEAgLTMxMzUsNiArMzE3MCwxMSBAQAog
CQkJCUY2MkE3NkI2MTJCMUIyNUYwMDA1RjFCNiAvKiBXZWJEYXRhYmFzZU1hbmFnZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjYyQTc2QjgxMkIxQjI1RjAwMDVGMUI2
IC8qIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDODU3RTg3MTJCNzFFQkIwMEVERUIyRSAvKiBXZWJQYWdlUHJveHlNYWMubW0g
aW4gU291cmNlcyAqLywKKwkJCQlCQzg1N0Y3RTEyQjgyQ0VFMDBFREVCMkUgLyogV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQzg1N0Y4NjEy
QjgyRDBCMDBFREVCMkUgLyogV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQkM4NTdGQjYxMkI4MzBFNjAwRURFQjJFIC8qIFdlYk9wZW5QYW5lbFBhcmFt
ZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkM4NTgwNjIxMkI4NTA1NzAwRURFQjJFIC8q
IFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkM4NTgw
NjMxMkI4NTA1NzAwRURFQjJFIC8qIFdLT3BlblBhbmVsUGFyYW1ldGVycy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQTRBOUFBOTEyQjdFNzk2MDA4RkU5ODQgLyogV0tUZXh0SW5wdXRXaW5kb3dD
b250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0QTlDNTUxMkI4MTZDRjAwOEZFOTg0
IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNEE5QzlB
MTJCODIxQ0QwMDhGRTk4NCAvKiBOZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbSBpbiBTb3VyY2Vz
ICovLApJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAJKHJldmlzaW9uIDc0MTM2KQorKysgV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDYgKzM1LDggQEAKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNs
dWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkZyYW1lTG9hZGVyQ2xpZW50LmgiCisjaW5j
bHVkZSAiV2ViT3BlblBhbmVsUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgIldlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgpA
QCAtNTA4LDkgKzUxMCwyNiBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6Y2FuY2VsR2VvbG9jYXRp
b25QCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJ1
bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KQordm9pZCBXZWJDaHJv
bWVDbGllbnQ6OnJ1bk9wZW5QYW5lbChGcmFtZSogZnJhbWUsIFBhc3NSZWZQdHI8RmlsZUNob29z
ZXI+IHBycEZpbGVDaG9vc2VyKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKG1f
cGFnZS0+YWN0aXZlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgUmVmUHRyPEZpbGVDaG9vc2VyPiBmaWxlQ2hvb3NlciA9IHBycEZpbGVDaG9vc2VyOwor
CisgICAgbV9wYWdlLT5zZXRBY3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcihXZWJPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lcjo6Y3JlYXRlKG1fcGFnZSwgZmlsZUNob29zZXIuZ2V0KCkpKTsKKyAg
ICAKKyAgICBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzOjpEYXRhIHBhcmFtZXRlcnM7CisgICAgcGFy
YW1ldGVycy5hbGxvd011bHRpcGxlRmlsZXMgPSBmaWxlQ2hvb3Nlci0+YWxsb3dzTXVsdGlwbGVG
aWxlcygpOworI2lmIEVOQUJMRShESVJFQ1RPUllfVVBMT0FEKQorICAgIHBhcmFtZXRlcnMuYWxs
b3dzRGlyZWN0b3J5VXBsb2FkID0gZmlsZUNob29zZXItPmFsbG93c0RpcmVjdG9yeVVwbG9hZCgp
OworI2Vsc2UKKyAgICBwYXJhbWV0ZXJzLmFsbG93c0RpcmVjdG9yeVVwbG9hZCA9IGZhbHNlOwor
I2VuZGlmCisgICAgcGFyYW1ldGVycy5hY2NlcHRUeXBlcyA9IGZpbGVDaG9vc2VyLT5hY2NlcHRU
eXBlcygpOworICAgIHBhcmFtZXRlcnMuZmlsZW5hbWVzID0gZmlsZUNob29zZXItPmZpbGVuYW1l
cygpOworCisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bk9wZW5Q
YW5lbChzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVudCo+KGZyYW1lLT5sb2FkZXIoKS0+
Y2xpZW50KCkpLT53ZWJGcmFtZSgpLT5mcmFtZUlEKCksIHBhcmFtZXRlcnMpKTsKIH0KIAogdm9p
ZCBXZWJDaHJvbWVDbGllbnQ6OmNob29zZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYsIEZpbGVDaG9vc2VyKikKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAJKHJldmlzaW9uIDApCisr
KyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bh
c3NSZWZQdHI8V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXI+IFdlYk9wZW5QYW5lbFJlc3VsdExp
c3RlbmVyOjpjcmVhdGUoV2ViUGFnZSogcGFnZSwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGaWxlQ2hv
b3Nlcj4gZmlsZUNob29zZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lcihwYWdlLCBmaWxlQ2hvb3NlcikpOworfQorCitXZWJPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lcjo6V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIoV2ViUGFnZSogcGFnZSwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpGaWxlQ2hvb3Nlcj4gZmlsZUNob29zZXIpCisgICAgOiBtX3Bh
Z2UocGFnZSkKKyAgICAsIG1fZmlsZUNob29zZXIoZmlsZUNob29zZXIpCit7Cit9CisKK1dlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyOjp+V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIoKQorewor
fQorCit2b2lkIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyOjpkaWRDaG9vc2VGaWxlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZmlsZXMpCit7CisgICAgbV9maWxlQ2hvb3Nlci0+Y2hvb3NlRmls
ZXMoZmlsZXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIu
aAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyX2gKKyNkZWZpbmUgV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXJfaAorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0ZpbGVDaG9vc2VyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBXZWJQYWdlOworCitjbGFzcyBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA6IHB1Ymxp
YyBSZWZDb3VudGVkPFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyPiB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXI+IGNyZWF0ZShXZWJQ
YWdlKiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGaWxlQ2hvb3Nlcj4pOworICAgIH5XZWJPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lcigpOworCisgICAgdm9pZCBkaXNjb25uZWN0RnJvbVBhZ2UoKSB7IG1f
cGFnZSA9IDA7IH0KKyAgICB2b2lkIGRpZENob29zZUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
Jik7CisKK3ByaXZhdGU6CisgICAgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIoV2ViUGFnZSos
IFBhc3NSZWZQdHI8V2ViQ29yZTo6RmlsZUNob29zZXI+KTsKKworICAgIFdlYlBhZ2UqIG1fcGFn
ZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RmlsZUNob29zZXI+IG1fZmlsZUNob29zZXI7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworCisjZW5kaWYgLy8gV2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJfaApJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJl
dmlzaW9uIDc0MTM2KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJXZWJDb250ZXh0TWVu
dUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyLmgiCiAjaW5jbHVkZSAiV2ViRHJhZ0NsaWVudC5oIgogI2luY2x1ZGUgIldlYkVkaXRvckNs
aWVudC5oIgogI2luY2x1ZGUgIldlYkV2ZW50LmgiCkBAIC0zMjgsNiArMzI5LDExIEBAIHZvaWQg
V2ViUGFnZTo6Y2xvc2UoKQogICAgICAgICBtX2FjdGl2ZVBvcHVwTWVudSA9IDA7CiAgICAgfQog
CisgICAgaWYgKG1fYWN0aXZlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIpIHsKKyAgICAgICAgbV9h
Y3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+ZGlzY29ubmVjdEZyb21QYWdlKCk7CisgICAg
ICAgIG1fYWN0aXZlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgPSAwOworICAgIH0KKwogICAgIG1f
c2FuZGJveEV4dGVuc2lvblRyYWNrZXIuaW52YWxpZGF0ZSgpOwogCiAgICAgbV9tYWluRnJhbWUt
PmNvcmVGcmFtZSgpLT5sb2FkZXIoKS0+ZGV0YWNoRnJvbVBhcmVudCgpOwpAQCAtMTA2NSw2ICsx
MDcxLDExIEBAIHZvaWQgV2ViUGFnZTo6c2V0QWN0aXZlUG9wdXBNZW51KFdlYlBvcHUKICAgICBt
X2FjdGl2ZVBvcHVwTWVudSA9IG1lbnU7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c2V0QWN0aXZlT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXIoUGFzc1JlZlB0cjxXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
cj4gb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIpCit7CisgICAgbV9hY3RpdmVPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lciA9IG9wZW5QYW5lbFJlc3VsdExpc3RlbmVyOworfQorCiBib29sIFdlYlBhZ2U6
OmZpbmRTdHJpbmdGcm9tSW5qZWN0ZWRCdW5kbGUoY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRP
cHRpb25zIG9wdGlvbnMpCiB7CiAgICAgcmV0dXJuIG1fcGFnZS0+ZmluZFN0cmluZyh0YXJnZXQs
IG9wdGlvbnMpOwpAQCAtMTA5NCw2ICsxMTA1LDIwIEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ2hhbmdl
U2VsZWN0ZWRJbmRleEZvckEKICAgICBtX2FjdGl2ZVBvcHVwTWVudSA9IDA7CiB9CiAKK3ZvaWQg
V2ViUGFnZTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGZpbGVzKQoreworICAgIGlmICghbV9hY3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9hY3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+ZGlk
Q2hvb3NlRmlsZXMoZmlsZXMpOworICAgIG1fYWN0aXZlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIg
PSAwOworfQorCit2b2lkIFdlYlBhZ2U6OmRpZENhbmNlbEZvck9wZW5QYW5lbCgpCit7CisgICAg
bV9hY3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA9IDA7Cit9CisKIHZvaWQgV2ViUGFnZTo6
ZGlkU2VsZWN0SXRlbUZyb21BY3RpdmVDb250ZXh0TWVudShjb25zdCBXZWJDb250ZXh0TWVudUl0
ZW1EYXRhJiBpdGVtKQogewogICAgIEFTU0VSVChtX2NvbnRleHRNZW51KTsKSW5kZXg6IFdlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDc0MTM2KQorKysgV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw2ICs3Nyw3
IEBAIGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViSW5zcGVjdG9yOwogY2xhc3MgV2ViS2V5Ym9h
cmRFdmVudDsKIGNsYXNzIFdlYk1vdXNlRXZlbnQ7CitjbGFzcyBXZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lcjsKIGNsYXNzIFdlYlBhZ2VHcm91cFByb3h5OwogY2xhc3MgV2ViUG9wdXBNZW51Owog
Y2xhc3MgV2ViV2hlZWxFdmVudDsKQEAgLTEzNiw2ICsxMzcsOSBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc0luUmVkbygpIGNvbnN0IHsgcmV0dXJuIG1faXNJblJlZG87IH0KIAogICAgIHZvaWQgc2V0
QWN0aXZlUG9wdXBNZW51KFdlYlBvcHVwTWVudSopOworICAgIAorICAgIFdlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyKiBhY3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcigpIGNvbnN0IHsgcmV0
dXJuIG1fYWN0aXZlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuZ2V0KCk7IH0KKyAgICB2b2lkIHNl
dEFjdGl2ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyKFBhc3NSZWZQdHI8V2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXI+KTsKIAogICAgIC8vIC0tIENhbGxlZCBmcm9tIFdlYlByb2Nlc3MuCiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVz
c2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKQEAgLTMyNyw2ICszMzEsOSBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBkaWRDaGFuZ2VTZWxlY3RlZEluZGV4Rm9yQWN0aXZlUG9wdXBN
ZW51KGludDMyX3QgbmV3SW5kZXgpOwogCisgICAgdm9pZCBkaWRDaG9vc2VGaWxlc0Zvck9wZW5Q
YW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYpOworICAgIHZvaWQgZGlkQ2FuY2VsRm9yT3BlblBh
bmVsKCk7CisKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICB2b2lkIGRpZFNlbGVjdEl0
ZW1Gcm9tQWN0aXZlQ29udGV4dE1lbnUoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYpOwog
I2VuZGlmCkBAIC0zODksNiArMzk2LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIFJlZlB0cjxX
ZWJQb3B1cE1lbnU+IG1fYWN0aXZlUG9wdXBNZW51OwogICAgIFJlZlB0cjxXZWJDb250ZXh0TWVu
dT4gbV9jb250ZXh0TWVudTsKKyAgICBSZWZQdHI8V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXI+
IG1fYWN0aXZlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXI7CiAKICAgICBTYW5kYm94RXh0ZW5zaW9u
VHJhY2tlciBtX3NhbmRib3hFeHRlbnNpb25UcmFja2VyOwogICAgIHVpbnQ2NF90IG1fcGFnZUlE
OwpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCShyZXZpc2lvbiA3NDEzNikKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDYgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZSB7CiAgICAgR2V0U291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgY2FsbGJhY2tJRCkKICAgICBSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV1RGOjpTdHJp
bmcgc2NyaXB0LCB1aW50NjRfdCBjYWxsYmFja0lEKQogCi0KICAgICBQcmVmZXJlbmNlc0RpZENo
YW5nZShXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUpCiAKICAgICBTZXRVc2VyQWdl
bnQoV1RGOjpTdHJpbmcgdXNlckFnZW50KQpAQCAtOTEsNiArOTAsMTAgQEAgbWVzc2FnZXMgLT4g
V2ViUGFnZSB7CiAgICAgIyBDb250ZXh0IG1lbnUuCiAgICAgRGlkU2VsZWN0SXRlbUZyb21BY3Rp
dmVDb250ZXh0TWVudShXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbURhdGEgbWVudUl0ZW0pOwog
CisgICAgIyBPcGVuIHBhbmVsLgorICAgIERpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKFZlY3Rv
cjxXVEY6OlN0cmluZz4gZmlsZVVSTHMpCisgICAgRGlkQ2FuY2VsRm9yT3BlblBhbmVsKCkKKwog
ICAgIFNldFdpbmRvd1Jlc2l6ZXJTaXplKFdlYkNvcmU6OkludFNpemUgaW50ZXJzZWN0c1ZpZXcp
CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC0xMDMsMTAgKzEwNiwxMiBAQCBtZXNzYWdlcyAtPiBX
ZWJQYWdlIHsKICAgICBDaGFyYWN0ZXJJbmRleEZvclBvaW50KFdlYkNvcmU6OkludFBvaW50IHBv
aW50KSAtPiAodWludDY0X3QgcmVzdWx0KQogICAgIEZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdl
KHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgpIC0+IChXZWJDb3JlOjpJbnRSZWN0
IHJlc3VsdFJlY3QpCiAjZW5kaWYKLQkvLyBUaGlzIGlzIGEgZHVtbXkgbWVzc2FnZSB0byBhdm9p
ZCBicmVha2luZyB0aGUgYnVpbGQgZm9yIHBsYXRmb3JtcyB0aGF0IGRvbid0IHJlcXVpcmUgCi0J
Ly8gc3luY2hyb25vdXMgbWVzc2FnZXMuCi0JRHVtbXkoKSAtPiAoYm9vbCBkdW1teVJldHVybikK
KwogI2lmIFBMQVRGT1JNKFFUKQogICAgIEZpbmRab29tYWJsZUFyZWFGb3JQb2ludChXZWJDb3Jl
OjpJbnRQb2ludCBwb2ludCkKICNlbmRpZgorCisgICAgLy8gVGhpcyBpcyBhIGR1bW15IG1lc3Nh
Z2UgdG8gYXZvaWQgYnJlYWtpbmcgdGhlIGJ1aWxkIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24ndCBy
ZXF1aXJlIAorICAgIC8vIHN5bmNocm9ub3VzIG1lc3NhZ2VzLgorICAgIER1bW15KCkgLT4gKGJv
b2wgZHVtbXlSZXR1cm4pCiB9CkluZGV4OiBXZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagkocmV2aXNpb24gNzQxMzYpCisr
KyBXZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNTcxLDYgKzU3
MSwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIu
LlxTaGFyZWRcV2ViT3BlblBhbmVsUGFyYW1ldGVycy5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcV2ViT3BlblBhbmVsUGFyYW1ldGVy
cy5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxT
aGFyZWRcV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpA
QCAtMTM2Miw2ICsxMzcwLDE0IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXFdlYlBhZ2VcV2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXIuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0
aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xXZWJQYWdlXFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
LmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxXZWJQcm9jZXNzXFdlYlBhZ2VcV2ViUGFnZS5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkBA
IC0yMDYzLDYgKzIwNzksMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHku
Y3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxV
SVByb2Nlc3NcV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oIgorCQkJCT4KKwkJCTwv
RmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcV2ViUGFnZUNv
bnRleHRNZW51Q2xpZW50LmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC0yMjczLDYgKzIyOTcs
MjIgQEAKIAkJCQkJCT4KIAkJCQkJPC9GaWxlPgogCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxVSVByb2Nlc3NcQVBJXENcV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcCIKKwkJCQkJ
CT4KKwkJCQkJPC9GaWxlPgorCQkJCQk8RmlsZQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVBy
b2Nlc3NcQVBJXENcV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmgiCisJCQkJCQk+CisJCQkJCTwvRmls
ZT4KKwkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXEFQSVxDXFdL
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwIgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJ
CTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xBUElcQ1xXS09wZW5QYW5l
bFJlc3VsdExpc3RlbmVyLmgiCisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKIAkJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXEFQSVxDXFdLUGFnZS5jcHAiCiAJCQkJCQk+
CiAJCQkJCTwvRmlsZT4KSW5kZXg6IFdlYktpdDIvd2luL1dlYktpdDJHZW5lcmF0ZWQubWFrZQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL3dpbi9XZWJLaXQyR2VuZXJhdGVkLm1ha2UJKHJldmlzaW9u
IDc0MTM2KQorKysgV2ViS2l0Mi93aW4vV2ViS2l0MkdlbmVyYXRlZC5tYWtlCSh3b3JraW5nIGNv
cHkpCkBAIC00OSw2ICs0OSw4IEBAIGFsbDoKICAgICB4Y29weSAveSAvZCAiLi5cVUlQcm9jZXNz
XEFQSVxjXFdLSW5zcGVjdG9yLmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxXZWJLaXQy
IgogICAgIHhjb3B5IC95IC9kICIuLlxVSVByb2Nlc3NcQVBJXENcV0tOYXRpdmVFdmVudC5oIiAi
JChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKICAgICB4Y29weSAveSAvZCAiLi5c
VUlQcm9jZXNzXEFQSVxDXFdLTmF2aWdhdGlvbkRhdGEuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxp
bmNsdWRlXFdlYktpdDIiCisgICAgeGNvcHkgL3kgL2QgIi4uXFVJUHJvY2Vzc1xBUElcQ1xXS09w
ZW5QYW5lbFBhcmFtZXRlcnMuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIi
CisgICAgeGNvcHkgL3kgL2QgIi4uXFVJUHJvY2Vzc1xBUElcQ1xXS09wZW5QYW5lbFJlc3VsdExp
c3RlbmVyLmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxXZWJLaXQyIgogICAgIHhjb3B5
IC95IC9kICIuLlxVSVByb2Nlc3NcQVBJXENcV0tQYWdlLmgiICIkKFdFQktJVE9VVFBVVERJUilc
aW5jbHVkZVxXZWJLaXQyIgogICAgIHhjb3B5IC95IC9kICIuLlxVSVByb2Nlc3NcQVBJXENcV0tQ
YWdlR3JvdXAuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAgICAgeGNv
cHkgL3kgL2QgIi4uXFVJUHJvY2Vzc1xBUElcQ1xXS1ByZWZlcmVuY2VzLmgiICIkKFdFQktJVE9V
VFBVVERJUilcaW5jbHVkZVxXZWJLaXQyIgpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNzQxMzcpCisrKyBX
ZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAx
MC0xMi0xNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYktpdDI6IENhbid0IGFkZCBmaWxlcyB0
byBhbiA8aW5wdXQgdHlwZT1maWxlPgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTEwODcKKworICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9Ccm93c2Vy
V2luZG93Q29udHJvbGxlci5tOgorICAgICAgICAocnVuT3BlblBhbmVsKToKKyAgICAgICAgKC1b
QnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgYXdha2VGcm9tTmliXSk6CisgICAgICAgIEFkZCBzaW1w
bGUgaW1wbGVtZW50YXRpb24gb2YgcnVuT3BlblBhbmVsIGNhbGxiYWNrLgorCisgICAgICAgICog
TWluaUJyb3dzZXIvd2luL0Jyb3dzZXJWaWV3LmNwcDoKKyAgICAgICAgKEJyb3dzZXJWaWV3Ojpj
cmVhdGUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV1RSOjpjcmVhdGVPdGhlclBhZ2UpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIFN0dWIgb3V0IHJ1bk9wZW5QYW5lbCBjYWxsYmFj
ay4gCisKIDIwMTAtMTItMTUgIENvc21pbiBUcnV0YSAgPGN0cnV0YUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCkluZGV4OiBXZWJLaXRUb29scy9N
aW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXRUb29scy9NaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQkocmV2
aXNpb24gNzQxMzcpCisrKyBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRv
d0NvbnRyb2xsZXIubQkod29ya2luZyBjb3B5KQpAQCAtNTM1LDYgKzUzNSwzNiBAQCBzdGF0aWMg
Ym9vbCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoCiAgICAgcmV0dXJuIGJ1dHRvbiA9PSBO
U0FsZXJ0Rmlyc3RCdXR0b25SZXR1cm47CiB9CiAKK3N0YXRpYyB2b2lkIHJ1bk9wZW5QYW5lbChX
S1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVm
IHBhcmFtZXRlcnMsIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgcHJpbnRmKCJydW5PcGVuUGFuZWwgY2FsbGJhY2tc
biIpOworCisgICAgTlNPcGVuUGFuZWwgKm9wZW5QYW5lbCA9IFtbTlNPcGVuUGFuZWwgYWxsb2Nd
IGluaXRdOworICAgIFtvcGVuUGFuZWwgc2V0QWxsb3dzTXVsdGlwbGVTZWxlY3Rpb246V0tPcGVu
UGFuZWxQYXJhbWV0ZXJzR2V0QWxsb3dzTXVsdGlwbGVGaWxlcyhwYXJhbWV0ZXJzKV07CisKKyAg
ICBXS1JldGFpbihsaXN0ZW5lcik7CisKKyAgICBbb3BlblBhbmVsIGJlZ2luU2hlZXRNb2RhbEZv
cldpbmRvdzpbKEJyb3dzZXJXaW5kb3dDb250cm9sbGVyICopY2xpZW50SW5mbyB3aW5kb3ddIGNv
bXBsZXRpb25IYW5kbGVyOl4oTlNJbnRlZ2VyIHJlc3VsdCkgeworICAgICAgICBpZiAocmVzdWx0
ID09IE5TRmlsZUhhbmRsaW5nUGFuZWxPS0J1dHRvbikgeworICAgICAgICAgICAgV0tNdXRhYmxl
QXJyYXlSZWYgZmlsZVVSTHMgPSBXS011dGFibGVBcnJheUNyZWF0ZSgpOworCisgICAgICAgICAg
ICBOU1VSTCAqbnNVUkw7CisgICAgICAgICAgICBmb3IgKG5zVVJMIGluIFtvcGVuUGFuZWwgVVJM
c10pIHsKKyAgICAgICAgICAgICAgICBXS1VSTFJlZiB3a1VSTCA9IFdLVVJMQ3JlYXRlV2l0aENG
VVJMKChDRlVSTFJlZiluc1VSTCk7CisgICAgICAgICAgICAgICAgV0tBcnJheUFwcGVuZEl0ZW0o
ZmlsZVVSTHMsIHdrVVJMKTsKKyAgICAgICAgICAgICAgICBXS1JlbGVhc2Uod2tVUkwpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2hvb3Nl
RmlsZXMobGlzdGVuZXIsIGZpbGVVUkxzKTsKKworICAgICAgICAgICAgV0tSZWxlYXNlKGZpbGVV
UkxzKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBXS09wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyQ2FuY2VsKGxpc3RlbmVyKTsKKyAgICAgICAgCisgICAgICAgIFdLUmVsZWFzZShsaXN0ZW5l
cik7CisgICAgfV07Cit9CisKIC0gKHZvaWQpYXdha2VGcm9tTmliCiB7CiAgICAgX3dlYlZpZXcg
PSBbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpbY29udGFpbmVyVmlldyBmcmFtZV0gY29u
dGV4dFJlZjpfY29udGV4dF07CkBAIC02MDcsNyArNjM3LDggQEAgLSAodm9pZClhd2FrZUZyb21O
aWIKICAgICAgICAgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsLAogICAgICAgICAwLCAgICAg
ICAgICAvKiBkaWREcmF3ICovCiAgICAgICAgIDAsICAgICAgICAgIC8qIHBhZ2VEaWRTY3JvbGwg
Ki8KLSAgICAgICAgMCAgICAgICAgICAgLyogZXhjZWVkZWREYXRhYmFzZVF1b3RhICovCisgICAg
ICAgIDAsICAgICAgICAgIC8qIGV4Y2VlZGVkRGF0YWJhc2VRdW90YSAqLworICAgICAgICBydW5P
cGVuUGFuZWwKICAgICB9OwogICAgIFdLUGFnZVNldFBhZ2VVSUNsaWVudChfd2ViVmlldy5wYWdl
UmVmLCAmdWlDbGllbnQpOwogfQpJbmRleDogV2ViS2l0VG9vbHMvTWluaUJyb3dzZXIvd2luL0Jy
b3dzZXJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci93aW4v
QnJvd3NlclZpZXcuY3BwCShyZXZpc2lvbiA3NDEzNykKKysrIFdlYktpdFRvb2xzL01pbmlCcm93
c2VyL3dpbi9Ccm93c2VyVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNyw3ICsxMTcsOCBA
QCB2b2lkIEJyb3dzZXJWaWV3OjpjcmVhdGUoUkVDVCB3ZWJWaWV3UmVjCiAgICAgICAgIDAsICAg
ICAgICAgIC8qIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCAqLwogICAgICAgICAwLCAgICAg
ICAgICAvKiBkaWREcmF3ICovCiAgICAgICAgIDAsICAgICAgICAgIC8qIHBhZ2VEaWRTY3JvbGwg
Ki8KLSAgICAgICAgMCAgICAgICAgICAgLyogZXhjZWVkZWREYXRhYmFzZVF1b3RhICovCisgICAg
ICAgIDAsICAgICAgICAgIC8qIGV4Y2VlZGVkRGF0YWJhc2VRdW90YSAqLworICAgICAgICAwICAg
ICAgICAgICAvKiBydW5PcGVuUGFuZWwgKi8KICAgICB9OwogCiAgICAgV0tQYWdlU2V0UGFnZVVJ
Q2xpZW50KFdLVmlld0dldFBhZ2UobV93ZWJWaWV3KSwgJnVpQ2xpZW50KTsKSW5kZXg6IFdlYktp
dFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lv
biA3NDEzNykKKysrIFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNyArMTM2LDggQEAgc3RhdGljIFdLUGFnZVJlZiBj
cmVhdGVPdGhlclBhZ2UoV0tQYWdlUgogICAgICAgICAwLCAvLyBydW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWwKICAgICAgICAgMCwgLy8gZGlkRHJhdwogICAgICAgICAwLCAvLyBwYWdlRGlkU2Ny
b2xsCi0gICAgICAgIDAgIC8vIGV4Y2VlZGVkRGF0YWJhc2VRdW90YQorICAgICAgICAwLCAvLyBl
eGNlZWRlZERhdGFiYXNlUXVvdGEKKyAgICAgICAgMCAgLy8gcnVuT3BlblBhbmVsCiAgICAgfTsK
ICAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQobmV3UGFnZSwgJm90aGVyUGFnZVVJQ2xpZW50KTsK
IApAQCAtMjM4LDcgKzIzOSw4IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemUoaW50
IGFyZ2MKICAgICAgICAgMCwgLy8gcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsCiAgICAgICAg
IDAsIC8vIGRpZERyYXcKICAgICAgICAgMCwgLy8gcGFnZURpZFNjcm9sbAotICAgICAgICAwICAv
LyBleGNlZWRlZERhdGFiYXNlUXVvdGEKKyAgICAgICAgMCwgLy8gZXhjZWVkZWREYXRhYmFzZVF1
b3RhCisgICAgICAgIDAgIC8vIHJ1bk9wZW5QYW5lbAogICAgIH07CiAgICAgV0tQYWdlU2V0UGFn
ZVVJQ2xpZW50KG1fbWFpbldlYlZpZXctPnBhZ2UoKSwgJnBhZ2VVSUNsaWVudCk7CiAK
</data>
<flag name="review"
          id="67672"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>77177</attachid>
            <date>2010-12-21 18:30:46 -0800</date>
            <delta_ts>2010-12-21 18:30:46 -0800</delta_ts>
            <desc>Tester</desc>
            <filename>windosTest.txt</filename>
            <type>text/plain</type>
            <size>11</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">VG8gVXBsb2FkDQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>