<?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>109483</bug_id>
          
          <creation_ts>2013-02-11 13:36:28 -0800</creation_ts>
          <short_desc>Fold MarkupTokenBase into HTMLToken now that it has no other subclasses</short_desc>
          <delta_ts>2013-02-11 15:02:19 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>107522</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>dbates</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>tonyg</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>830063</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-11 13:36:28 -0800</bug_when>
    <thetext>Fold MarkupTokenBase into HTMLToken now that it has no other subclasses</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830065</commentid>
    <comment_count>1</comment_count>
      <attachid>187655</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-11 13:38:10 -0800</bug_when>
    <thetext>Created attachment 187655
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830071</commentid>
    <comment_count>2</comment_count>
      <attachid>187655</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-11 13:42:30 -0800</bug_when>
    <thetext>Comment on attachment 187655
Patch

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

&gt; Source/WebCore/html/parser/HTMLToken.h:108
&gt; +    /* Range and offset methods exposed for HTMLSourceTracker and HTMLViewSourceParser */

C++ style comments?

&gt; Source/WebCore/html/parser/HTMLToken.h:157
&gt; +    /* DOCTYPE Tokens */

C++ comments...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830076</commentid>
    <comment_count>3</comment_count>
      <attachid>187655</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-11 13:44:43 -0800</bug_when>
    <thetext>Comment on attachment 187655
Patch

I will take this under careful advisement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830078</commentid>
    <comment_count>4</comment_count>
      <attachid>187655</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-11 13:45:53 -0800</bug_when>
    <thetext>Comment on attachment 187655
Patch

Attachment 187655 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/16491400</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830082</commentid>
    <comment_count>5</comment_count>
      <attachid>187660</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-11 13:48:51 -0800</bug_when>
    <thetext>Created attachment 187660
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830092</commentid>
    <comment_count>6</comment_count>
      <attachid>187660</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-11 13:57:39 -0800</bug_when>
    <thetext>Comment on attachment 187660
Patch for landing

Rejecting attachment 187660 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=gce-cq-03&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 187660, &apos;--port=chromium-xvfb&apos;]&quot; exit_code: 2 cwd: /mnt/git/webkit-commit-queue

Last 500 characters of output:
/track/WebVTTTokenizer.h.rej
patching file Source/WebCore/xml/parser/MarkupTokenBase.h
rm &apos;Source/WebCore/xml/parser/MarkupTokenBase.h&apos;
patching file Source/WebCore/xml/parser/MarkupTokenizerBase.h
Hunk #1 FAILED at 28.
Hunk #2 FAILED at 55.
Hunk #3 FAILED at 206.
3 out of 3 hunks FAILED -- saving rejects to file Source/WebCore/xml/parser/MarkupTokenizerBase.h.rej

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/16487483</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830098</commentid>
    <comment_count>7</comment_count>
      <attachid>187663</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-11 14:05:24 -0800</bug_when>
    <thetext>Created attachment 187663
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830100</commentid>
    <comment_count>8</comment_count>
      <attachid>187664</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-11 14:05:42 -0800</bug_when>
    <thetext>Created attachment 187664
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830177</commentid>
    <comment_count>9</comment_count>
      <attachid>187664</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-11 15:02:15 -0800</bug_when>
    <thetext>Comment on attachment 187664
Patch for landing

Clearing flags on attachment: 187664

Committed r142522: &lt;http://trac.webkit.org/changeset/142522&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830178</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-11 15:02:19 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187655</attachid>
            <date>2013-02-11 13:38:10 -0800</date>
            <delta_ts>2013-02-11 13:48:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109483-20130211133441.patch</filename>
            <type>text/plain</type>
            <size>32299</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNDg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFiZTVjOTY4ZDFhZjVj
NzMxMDU2OTI5MTc1YmQ3MGY1MmU0ZjdiMi4uOWRkMTZkMzY5NjU1MDMzNWE5MDM2MGFjODU0YzNk
N2MzNDRjMTQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDcxIEBACiAyMDEzLTAyLTExICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAorICAgICAgICBGb2xkIE1hcmt1cFRva2VuQmFz
ZSBpbnRvIEhUTUxUb2tlbiBub3cgdGhhdCBpdCBoYXMgbm8gb3RoZXIgc3ViY2xhc3NlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NDgzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBkZWxldGVz
IGFuIGVwaWMgYW1vdW50IG9mIHRlbXBsYXRlIHl1Y2ssIGFzIHdlbGwgYXMgcmVtb3ZlcworICAg
ICAgICBhIHZ0YWJsZSAhPyEgZnJvbSBIVE1MVG9rZW4uCisKKyAgICAgICAgVGhpcyBwYXZlcyB0
aGUgd2F5IGZvciBmdXJ0aGVyIGNsZWFudXAgb2YgSFRNTFRva2VuIG5vdyB0aGF0IHdlCisgICAg
ICAgIGNhbiBzZWUgdGhlIHdob2xlIG9iamVjdCBhdCBvbmNlLgorICAgICAgICBXZSdsbCBhbHNv
IHByb2JhYmx5IHJlLWNyZWF0ZSBhbiBIVE1MVG9rZW4uY3BwIGFnYWluLCBub3cgdGhhdCB3ZSdy
ZQorICAgICAgICBmcmVlIGZyb20gdGhlIGNoYWlucyBvZiB0ZW1wbGF0ZSBub25zZW5zZS4KKwor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAg
ICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvcGFyc2Vy
L0hUTUxUb2tlbi5oOgorICAgICAgICAoV2ViQ29yZTo6ZmluZEF0dHJpYnV0ZUluVmVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSFRNTFRva2VuKToKKyAgICAgICAgKEF0dHJp
YnV0ZSk6CisgICAgICAgIChSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OkhU
TUxUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmNsZWFyKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUb2tlbjo6aXNVbmluaXRpYWxpemVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUb2tlbjo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46Om1ha2VFbmRP
ZkZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpzdGFydEluZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6ZW5kSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRva2VuOjpzZXRCYXNlT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6ZW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6ZGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVG9rZW46OmlzQWxsOEJpdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2Vu
OjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YXBwZW5kVG9OYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6bmFtZVN0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVG9rZW46OnNlbGZDbG9zaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6
c2V0U2VsZkNsb3NpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpiZWdpblN0YXJ0
VGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YmVnaW5FbmRUYWcpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRva2VuOjphZGROZXdBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRva2VuOjpiZWdpbkF0dHJpYnV0ZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRva2VuOjplbmRBdHRyaWJ1dGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6
YmVnaW5BdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmVuZEF0
dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YXBwZW5kVG9BdHRy
aWJ1dGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YXBwZW5kVG9BdHRyaWJ1
dGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmF0dHJpYnV0ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjplcmFzZVZhbHVlT2ZBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRva2VuOjplbnN1cmVJc0NoYXJhY3RlclRva2VuKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUb2tlbjo6Y2hhcmFjdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VG9rZW46OmFwcGVuZFRvQ2hhcmFjdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6
Y29tbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmJlZ2luQ29tbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmFwcGVuZFRvQ29tbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVG9rZW46OmVyYXNlQ2hhcmFjdGVycyk6CisgICAgICAgICogaHRtbC9wYXJz
ZXIvSFRNTFRva2VuVHlwZXMuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9yLmg6
CisgICAgICAgICogeG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2UuaDogUmVtb3ZlZC4KKworMjAx
My0wMi0xMSAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKICAgICAgICAgTWFrZSBX
ZWJWVFRUb2tlbml6ZXIgc3RvcCBpbmhlcml0aW5nIGZyb20gTWFya3VwVG9rZW5pemVyQmFzZQog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NDExCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGE3MGE1YmJmYmM4ZWUwYmNhNWM4NTgx
MTYyZDcxZGQyMzMxOWQ5NjMuLjk0NjlhMjFhYTkzYzJkYmQzMmQ5MGQ4NDU2MmY0MjhhOTc2YWM3
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDcwOSw3ICs0NzA5LDYgQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVh
ZC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5lcy5oIFwK
LQlTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01hcmt1cFRva2VuQmFzZS5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL01hcmt1cFRva2VuaXplckJhc2UuaCBcCiAJU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbml6ZXJJbmxpbmVzLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDUwMTYz
MDliODFhNDUwYTFiOTJjZTkxZTNiNDg0OTAzNmViMWYyMzguLjRlMDY4ZTJiYTM2ZDU0OTA2OGYw
NzZmNWUzYzViNDA2Mzg5NmQ3NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMjg1MCw3ICsyODUwLDYgQEAg
SEVBREVSUyArPSBcCiAgICAgd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaCBcCiAgICAgd29y
a2Vycy9Xb3JrZXJUaHJlYWQuaCBcCiAgICAgeG1sL3BhcnNlci9DaGFyYWN0ZXJSZWZlcmVuY2VQ
YXJzZXJJbmxpbmVzLmggXAotICAgIHhtbC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmggXAogICAg
IHhtbC9wYXJzZXIvTWFya3VwVG9rZW5pemVyQmFzZS5oIFwKICAgICB4bWwvcGFyc2VyL01hcmt1
cFRva2VuaXplcklubGluZXMuaCBcCiAgICAgeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5o
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQppbmRleCA1M2Q0MTg4MDA1YjFjMjZlYzMxYzMxOGY5MDlkMWQ5ODgx
OTlhMWY0Li41NWNjYWUxZTQ3ZDQ1MjU1ZGJkMjZjZDA4MmU4MjI3NjQ5ZjQyMDcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCkBAIC0yNjcwLDcgKzI2NzAsNiBAQAogICAgICAgICAgICAgJ3dvcmtlcnMvY2hy
b21pdW0vV29ya2VyQ29udGV4dFByb3h5Q2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICd3b3Jr
ZXJzL2Nocm9taXVtL1dvcmtlckNvbnRleHRQcm94eUNocm9taXVtLmgnLAogICAgICAgICAgICAg
J3htbC9wYXJzZXIvQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5lcy5oJywKLSAgICAgICAg
ICAgICd4bWwvcGFyc2VyL01hcmt1cFRva2VuQmFzZS5oJywKICAgICAgICAgICAgICd4bWwvcGFy
c2VyL01hcmt1cFRva2VuaXplckJhc2UuaCcsCiAgICAgICAgICAgICAneG1sL3BhcnNlci9NYXJr
dXBUb2tlbml6ZXJJbmxpbmVzLmgnLAogICAgICAgICAgICAgJ3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXIuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKaW5kZXggZmY1OTMyYjg2MjQ1OTEzODcyZTQ2ZWY4Yzg5MDYzYmU1ZGQwZGNmOC4uMzUz
YWViODNhMDhhZjJjM2Q3ZjI4N2NkOGVjM2Y1OGRiOTQ3ZmM0NiAxMDA3NTUKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTQ5MDkwLDEwICs0OTA5MCw2IEBA
CiAJCQkJTmFtZT0icGFyc2VyIgogCQkJCT4KIAkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHhtbFxwYXJzZXJcTWFya3VwVG9rZW5CYXNlLmgiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+Ci0J
CQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlx4bWxccGFyc2VyXE1hcmt1cFRva2VuaXpl
ckJhc2UuaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IGE2NDJhNWIzYjUxMGUxMGVmM2Y1YTM4MTk3
MWQyYTkxZDc1MTBhMWYuLjczZTE1MDMyOWM4ZmRkNzk3MDVkOGQ0NzlmZWNkN2I1ZGE1OTI1ZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpA
QCAtNzUxMyw3ICs3NTEzLDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHhtbFxYU0xU
RXh0ZW5zaW9ucy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ceG1sXFhTTFRQcm9j
ZXNzb3IuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHhtbFxYU0xUVW5pY29kZVNv
cnQuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHhtbFxwYXJzZXJcTWFya3VwVG9r
ZW5CYXNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx4bWxccGFyc2VyXE1hcmt1
cFRva2VuaXplckJhc2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHhtbFxwYXJz
ZXJcTWFya3VwVG9rZW5pemVySW5saW5lcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ceG1sXHBhcnNlclxYTUxEb2N1bWVudFBhcnNlci5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDhi
ZDk3YjNhY2RiMTRkZTA1ZTk2YTZkMTU3Nzc5NzVjZGVhNDc4MWMuLmM3OTJhZTAxNDA3ZjNkOWZi
NTY0NmI2NzdmZWE3MDYxNjIzMjQxZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTExMzEzLDkgKzExMzEz
LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHhtbFxYU0xUVW5pY29kZVNvcnQuaCI+
CiAgICAgICA8RmlsdGVyPnhtbDwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ceG1sXHBhcnNlclxNYXJrdXBUb2tlbkJhc2UuaCI+Ci0gICAgICA8
RmlsdGVyPnhtbFxwYXJzZXI8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHhtbFxwYXJzZXJcTWFya3VwVG9rZW5pemVyQmFzZS5oIj4KICAgICAg
IDxGaWx0ZXI+eG1sXHBhcnNlcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE0YzA2
OWFkNTkxMTgxM2I4MWE4MzUxNTM4YmY0Y2FlYmY0MjE5ZDMuLjA3ZWUxNmQwNmQ4NTgzN2VmNTgz
ODNmMzc4YmQ0ZDgxM2M5MGU3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ4LDcgKzQ4LDYgQEAKIAkJMDAxNDYyOEExMDND
RDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwMTQ2Mjg4MTAzQ0QxREUwMDBCMjBEQiAvKiBP
cmlnaW5BY2Nlc3NFbnRyeS5jcHAgKi87IH07CiAJCTAwMTQ2MjhCMTAzQ0QxREUwMDBCMjBEQiAv
KiBPcmlnaW5BY2Nlc3NFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDAxNDYyODkxMDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5
LmggKi87IH07CiAJCTAwM0YxRkVBMTFFNkFCNDMwMDgyNThEOSAvKiBVc2VyQ29udGVudFR5cGVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMDNGMUZF
OTExRTZBQjQzMDA4MjU4RDkgLyogVXNlckNvbnRlbnRUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTAwQTYyOUMxMTNEMEJFQzcwMDUwQUM1
MiAvKiBNYXJrdXBUb2tlbkJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDAwQTYyOUMwMTNEMEJFQzcwMDUwQUM1MiAvKiBNYXJrdXBUb2tlbkJhc2Uu
aCAqLzsgfTsKIAkJMDBCOTMxODcxM0JBOERCMzAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2Vy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwQjkz
MTgxMTNCQTg2N0YwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlci5jcHAgKi87IH07CiAJCTAw
QjkzMTg4MTNCQThEQkEwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDBCOTMxODIxM0JBODY3RjAwMzVB
OTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyLmggKi87IH07CiAJCTAwQjkzMTg5MTNCQThEQkMwMDM1
QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDBCOTMxODMxM0JBODY3RjAwMzVBOTQ4IC8qIFhN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgKi87IH07CkBAIC03Mjk0LDcgKzcyOTMsNiBAQAog
CQkwMDE0NjI4ODEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50cnkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT3JpZ2luQWNjZXNzRW50cnkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMDE0NjI4OTEwM0NEMURFMDAwQjIwREIgLyog
T3JpZ2luQWNjZXNzRW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3Jp
Z2luQWNjZXNzRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDAzRjFGRTkx
MUU2QUI0MzAwODI1OEQ5IC8qIFVzZXJDb250ZW50VHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVXNlckNvbnRlbnRUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkwMEE2MjlDMDEzRDBCRUM3MDA1MEFDNTIgLyogTWFya3VwVG9rZW5CYXNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmt1cFRva2VuQmFzZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwMEI5MzE4MTEzQkE4NjdGMDAzNUE5NDggLyogWE1MRG9j
dW1lbnRQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWE1M
RG9jdW1lbnRQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMEI5MzE4
MjEzQkE4NjdGMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gWE1MRG9jdW1lbnRQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDBCOTMxODMxM0JBODY3RjAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2Vy
TGlieG1sMi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYTUxEb2N1
bWVudFBhcnNlckxpYnhtbDIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ1
NzEsNyArMTQ1NjksNiBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJ
CQk5N0I4RkZDRjE2QUU3RjkyMDAzODM4OEQgLyogQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5s
aW5lcy5oICovLAotCQkJCTAwQTYyOUMwMTNEMEJFQzcwMDUwQUM1MiAvKiBNYXJrdXBUb2tlbkJh
c2UuaCAqLywKIAkJCQkwMEM2MEU0MTEzRDc5N0FFMDA5MkEyNzUgLyogTWFya3VwVG9rZW5pemVy
QmFzZS5oICovLAogCQkJCTAwQzYwRTNFMTNENzZEN0UwMDkyQTI3NSAvKiBNYXJrdXBUb2tlbml6
ZXJJbmxpbmVzLmggKi8sCiAJCQkJMDBCOTMxODExM0JBODY3RjAwMzVBOTQ4IC8qIFhNTERvY3Vt
ZW50UGFyc2VyLmNwcCAqLywKQEAgLTI1MzAyLDcgKzI1Mjk5LDYgQEAKIAkJCQkxQThGNkJDNjBE
QjU1Q0RDMDAxREI3OTQgLyogTWFuaWZlc3RQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkz
MzA5REY4MDk5RTY0OTIwMDU2RTU4MSAvKiBtYXJrdXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3
MjhDMzE0MTI2OEU0MzkwMDQxRTg5QiAvKiBNYXJrdXBBY2N1bXVsYXRvci5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJMDBBNjI5QzExM0QwQkVDNzAwNTBBQzUyIC8qIE1hcmt1cFRva2VuQmFzZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDBDNjBFNDIxM0Q3OTdBRTAwOTJBMjc1IC8qIE1hcmt1cFRva2Vu
aXplckJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTAwQzYwRTNGMTNENzZEN0UwMDkyQTI3NSAv
KiBNYXJrdXBUb2tlbml6ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQUJFNzJGNTEw
NTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCmluZGV4IDRhZmExNjAxN2Y5MzczMzM4NjJiOWI5
MjcxNTMzZjY3ZWQzNGQzMzMuLmE0MTJkNTVmN2M0NjdkOGM0NGMyZTUwMzJlMDExYmNmMGUxNDM0
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsOSArMjYsOSBAQAog
I2lmbmRlZiBIVE1MVG9rZW5faAogI2RlZmluZSBIVE1MVG9rZW5faAogCisjaW5jbHVkZSAiQXR0
cmlidXRlLmgiCiAjaW5jbHVkZSAiQ29tcGFjdEhUTUxUb2tlbi5oIgogI2luY2x1ZGUgIkhUTUxU
b2tlblR5cGVzLmgiCi0jaW5jbHVkZSAiTWFya3VwVG9rZW5CYXNlLmgiCiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTUyLDIwICs1Miwx
MTAgQEAgcHVibGljOgogICAgIGJvb2wgbV9mb3JjZVF1aXJrczsKIH07CiAKLWNsYXNzIEhUTUxU
b2tlbiA6IHB1YmxpYyBNYXJrdXBUb2tlbkJhc2U8SFRNTFRva2VuVHlwZXM+IHsKK3N0YXRpYyBp
bmxpbmUgQXR0cmlidXRlKiBmaW5kQXR0cmlidXRlSW5WZWN0b3IoVmVjdG9yPEF0dHJpYnV0ZT4m
IGF0dHJpYnV0ZXMsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCit7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGF0dHJpYnV0ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGF0
dHJpYnV0ZXMuYXQoaSkubmFtZSgpLm1hdGNoZXMobmFtZSkpCisgICAgICAgICAgICByZXR1cm4g
JmF0dHJpYnV0ZXMuYXQoaSk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitjbGFzcyBIVE1M
VG9rZW4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhUTUxUb2tlbik7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgdm9pZCBhcHBlbmRUb05hbWUoVUNoYXIg
Y2hhcmFjdGVyKQorICAgIHR5cGVkZWYgSFRNTFRva2VuVHlwZXMgVHlwZTsKKworICAgIGNsYXNz
IEF0dHJpYnV0ZSB7CisgICAgcHVibGljOgorICAgICAgICBjbGFzcyBSYW5nZSB7CisgICAgICAg
IHB1YmxpYzoKKyAgICAgICAgICAgIGludCBtX3N0YXJ0OworICAgICAgICAgICAgaW50IG1fZW5k
OworICAgICAgICB9OworCisgICAgICAgIFJhbmdlIG1fbmFtZVJhbmdlOworICAgICAgICBSYW5n
ZSBtX3ZhbHVlUmFuZ2U7CisgICAgICAgIFdURjo6VmVjdG9yPFVDaGFyLCAzMj4gbV9uYW1lOwor
ICAgICAgICBXVEY6OlZlY3RvcjxVQ2hhciwgMzI+IG1fdmFsdWU7CisgICAgfTsKKworICAgIHR5
cGVkZWYgV1RGOjpWZWN0b3I8QXR0cmlidXRlLCAxMD4gQXR0cmlidXRlTGlzdDsKKyAgICB0eXBl
ZGVmIFdURjo6VmVjdG9yPFVDaGFyLCAxMDI0PiBEYXRhVmVjdG9yOworCisgICAgSFRNTFRva2Vu
KCkgeyBjbGVhcigpOyB9CisKKyAgICB2b2lkIGNsZWFyKCkKICAgICB7Ci0gICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9r
ZW5UeXBlczo6RW5kVGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7Ci0g
ICAgICAgIE1hcmt1cFRva2VuQmFzZTxIVE1MVG9rZW5UeXBlcz46OmFwcGVuZFRvTmFtZShjaGFy
YWN0ZXIpOworICAgICAgICBtX3R5cGUgPSBUeXBlOjpVbmluaXRpYWxpemVkOworICAgICAgICBt
X3JhbmdlLm1fc3RhcnQgPSAwOworICAgICAgICBtX3JhbmdlLm1fZW5kID0gMDsKKyAgICAgICAg
bV9iYXNlT2Zmc2V0ID0gMDsKKyAgICAgICAgbV9kYXRhLmNsZWFyKCk7CisgICAgICAgIG1fb3JB
bGxEYXRhID0gMDsKKyAgICB9CisKKyAgICBib29sIGlzVW5pbml0aWFsaXplZCgpIHsgcmV0dXJu
IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZDsgfQorICAgIHR5cGVuYW1l
IEhUTUxUb2tlblR5cGVzOjpUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKwor
ICAgIHZvaWQgbWFrZUVuZE9mRmlsZSgpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09
IEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkKTsKKyAgICAgICAgbV90eXBlID0gSFRNTFRv
a2VuVHlwZXM6OkVuZE9mRmlsZTsKKyAgICB9CisKKyAgICAvKiBSYW5nZSBhbmQgb2Zmc2V0IG1l
dGhvZHMgZXhwb3NlZCBmb3IgSFRNTFNvdXJjZVRyYWNrZXIgYW5kIEhUTUxWaWV3U291cmNlUGFy
c2VyICovCisgICAgaW50IHN0YXJ0SW5kZXgoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlLm1fc3Rh
cnQ7IH0KKyAgICBpbnQgZW5kSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlLm1fZW5kOyB9
CisKKyAgICB2b2lkIHNldEJhc2VPZmZzZXQoaW50IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1f
YmFzZU9mZnNldCA9IG9mZnNldDsKKyAgICB9CisKKyAgICB2b2lkIGVuZChpbnQgZW5kT2Zmc2V0
KQorICAgIHsKKyAgICAgICAgbV9yYW5nZS5tX2VuZCA9IGVuZE9mZnNldCAtIG1fYmFzZU9mZnNl
dDsKKyAgICB9CisKKyAgICBjb25zdCBEYXRhVmVjdG9yJiBkYXRhKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3RlciB8fCBtX3R5
cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNvbW1lbnQgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVz
OjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CisgICAgICAg
IHJldHVybiBtX2RhdGE7CisgICAgfQorCisgICAgYm9vbCBpc0FsbDhCaXREYXRhKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiAobV9vckFsbERhdGEgPD0gMHhmZik7CiAgICAgfQogCiAg
ICAgY29uc3QgRGF0YVZlY3RvciYgbmFtZSgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQo
bV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2Vu
VHlwZXM6OkVuZFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOwotICAg
ICAgICByZXR1cm4gTWFya3VwVG9rZW5CYXNlPEhUTUxUb2tlblR5cGVzPjo6bmFtZSgpOworICAg
ICAgICByZXR1cm4gbV9kYXRhOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kVG9OYW1lKFVDaGFy
IGNoYXJhY3RlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlw
ZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnIHx8IG1fdHlw
ZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7CisgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIp
OworICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rlcik7CisgICAgICAgIG1fb3JBbGxEYXRh
IHw9IGNoYXJhY3RlcjsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogUmVuYW1lIHRoaXMgdG8gY29w
eU5hbWVBc1N0cmluZygpLgorICAgIFN0cmluZyBuYW1lU3RyaW5nKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIGlmICghbV9kYXRhLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOworICAgICAgICBpZiAoaXNBbGw4Qml0RGF0YSgpKQorICAgICAgICAgICAgcmV0dXJuIFN0
cmluZzo6bWFrZThCaXRGcm9tMTZCaXRTb3VyY2UobV9kYXRhLmRhdGEoKSwgbV9kYXRhLnNpemUo
KSk7CisgICAgICAgIHJldHVybiBTdHJpbmcobV9kYXRhLmRhdGEoKSwgbV9kYXRhLnNpemUoKSk7
CiAgICAgfQogCisgICAgLyogRE9DVFlQRSBUb2tlbnMgKi8KKwogICAgIGJvb2wgZm9yY2VRdWly
a3MoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBl
czo6RE9DVFlQRSk7CkBAIC0xNDIsNyArMjMyLDIxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBtX2RvY3R5cGVEYXRhLnJlbGVhc2UoKTsKICAgICB9CiAKKyAgICAvKiBTdGFydC9FbmQgVGFn
IFRva2VucyAqLworCisgICAgYm9vbCBzZWxmQ2xvc2luZygpIGNvbnN0CisgICAgeworICAgICAg
ICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0g
SFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CisgICAgICAgIHJldHVybiBtX3NlbGZDbG9zaW5nOwor
ICAgIH0KKworICAgIHZvaWQgc2V0U2VsZkNsb3NpbmcoKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tl
blR5cGVzOjpFbmRUYWcpOworICAgICAgICBtX3NlbGZDbG9zaW5nID0gdHJ1ZTsKKyAgICB9CisK
KyAgICB2b2lkIGJlZ2luU3RhcnRUYWcoVUNoYXIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKGNoYXJhY3Rlcik7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlw
ZXM6OlVuaW5pdGlhbGl6ZWQpOworICAgICAgICBtX3R5cGUgPSBIVE1MVG9rZW5UeXBlczo6U3Rh
cnRUYWc7CisgICAgICAgIG1fc2VsZkNsb3NpbmcgPSBmYWxzZTsKKyAgICAgICAgbV9jdXJyZW50
QXR0cmlidXRlID0gMDsKKyAgICAgICAgbV9hdHRyaWJ1dGVzLmNsZWFyKCk7CisKKyAgICAgICAg
bV9kYXRhLmFwcGVuZChjaGFyYWN0ZXIpOworICAgICAgICBtX29yQWxsRGF0YSB8PSBjaGFyYWN0
ZXI7CisgICAgfQorCisgICAgdm9pZCBiZWdpbkVuZFRhZyhMQ2hhciBjaGFyYWN0ZXIpCisgICAg
eworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVk
KTsKKyAgICAgICAgbV90eXBlID0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZzsKKyAgICAgICAgbV9z
ZWxmQ2xvc2luZyA9IGZhbHNlOworICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUgPSAwOworICAg
ICAgICBtX2F0dHJpYnV0ZXMuY2xlYXIoKTsKKworICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJh
Y3Rlcik7CisgICAgfQorCisgICAgdm9pZCBiZWdpbkVuZFRhZyhjb25zdCBWZWN0b3I8TENoYXIs
IDMyPiYgY2hhcmFjdGVycykKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRv
a2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQpOworICAgICAgICBtX3R5cGUgPSBIVE1MVG9rZW5UeXBl
czo6RW5kVGFnOworICAgICAgICBtX3NlbGZDbG9zaW5nID0gZmFsc2U7CisgICAgICAgIG1fY3Vy
cmVudEF0dHJpYnV0ZSA9IDA7CisgICAgICAgIG1fYXR0cmlidXRlcy5jbGVhcigpOworCisgICAg
ICAgIG1fZGF0YS5hcHBlbmRWZWN0b3IoY2hhcmFjdGVycyk7CisgICAgfQorCisgICAgdm9pZCBh
ZGROZXdBdHRyaWJ1dGUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9r
ZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOwor
ICAgICAgICBtX2F0dHJpYnV0ZXMuZ3JvdyhtX2F0dHJpYnV0ZXMuc2l6ZSgpICsgMSk7CisgICAg
ICAgIG1fY3VycmVudEF0dHJpYnV0ZSA9ICZtX2F0dHJpYnV0ZXMubGFzdCgpOworI2lmbmRlZiBO
REVCVUcKKyAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX25hbWVSYW5nZS5tX3N0YXJ0ID0g
MDsKKyAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX25hbWVSYW5nZS5tX2VuZCA9IDA7Cisg
ICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fc3RhcnQgPSAwOworICAg
ICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX2VuZCA9IDA7CisjZW5kaWYK
KyAgICB9CisKKyAgICB2b2lkIGJlZ2luQXR0cmlidXRlTmFtZShpbnQgb2Zmc2V0KQorICAgIHsK
KyAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX25hbWVSYW5nZS5tX3N0YXJ0ID0gb2Zmc2V0
IC0gbV9iYXNlT2Zmc2V0OworICAgIH0KKworICAgIHZvaWQgZW5kQXR0cmlidXRlTmFtZShpbnQg
b2Zmc2V0KQorICAgIHsKKyAgICAgICAgaW50IGluZGV4ID0gb2Zmc2V0IC0gbV9iYXNlT2Zmc2V0
OworICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fbmFtZVJhbmdlLm1fZW5kID0gaW5kZXg7
CisgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fc3RhcnQgPSBpbmRl
eDsKKyAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlUmFuZ2UubV9lbmQgPSBpbmRl
eDsKKyAgICB9CisKKyAgICB2b2lkIGJlZ2luQXR0cmlidXRlVmFsdWUoaW50IG9mZnNldCkKKyAg
ICB7CisgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fc3RhcnQgPSBv
ZmZzZXQgLSBtX2Jhc2VPZmZzZXQ7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBtX2N1cnJlbnRB
dHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX2VuZCA9IDA7CisjZW5kaWYKKyAgICB9CisKKyAgICB2
b2lkIGVuZEF0dHJpYnV0ZVZhbHVlKGludCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2N1cnJl
bnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX2VuZCA9IG9mZnNldCAtIG1fYmFzZU9mZnNldDsK
KyAgICB9CisKKyAgICB2b2lkIGFwcGVuZFRvQXR0cmlidXRlTmFtZShVQ2hhciBjaGFyYWN0ZXIp
CisgICAgeworICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKKyAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVz
OjpFbmRUYWcpOworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gYWRkIHRo
ZSBmb2xsb3dpbmcgQVNTRVJUIG9uY2Ugd2UgZml4CisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjk3MQorICAgICAgICAvLyAgIEFTU0VSVChtX2N1
cnJlbnRBdHRyaWJ1dGUtPm1fbmFtZVJhbmdlLm1fc3RhcnQpOworICAgICAgICBtX2N1cnJlbnRB
dHRyaWJ1dGUtPm1fbmFtZS5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICB2b2lkIGFw
cGVuZFRvQXR0cmlidXRlVmFsdWUoVUNoYXIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKGNoYXJhY3Rlcik7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6
OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKKyAgICAgICAg
QVNTRVJUKG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fc3RhcnQpOworICAgICAg
ICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWUuYXBwZW5kKGNoYXJhY3Rlcik7CisgICAgfQor
CisgICAgdm9pZCBhcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKHNpemVfdCBpLCBjb25zdCBTdHJpbmcm
IHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCF2YWx1ZS5pc0VtcHR5KCkpOworICAgICAg
ICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0g
SFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CisgICAgICAgIG1fYXR0cmlidXRlc1tpXS5tX3ZhbHVl
LmFwcGVuZCh2YWx1ZS5jaGFyYWN0ZXJzKCksIHZhbHVlLmxlbmd0aCgpKTsKKyAgICB9CisKKyAg
ICBjb25zdCBBdHRyaWJ1dGVMaXN0JiBhdHRyaWJ1dGVzKCkgY29uc3QKKyAgICB7CisgICAgICAg
IEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBI
VE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKKyAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlczsKKyAg
ICB9CisKKyAgICAvLyBVc2VkIGJ5IHRoZSBYU1NBdWRpdG9yIHRvIG51a2UgWFNTLWxhZGVuIGF0
dHJpYnV0ZXMuCisgICAgdm9pZCBlcmFzZVZhbHVlT2ZBdHRyaWJ1dGUoc2l6ZV90IGkpCisgICAg
eworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBt
X3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CisgICAgICAgIG1fYXR0cmlidXRlc1tp
XS5tX3ZhbHVlLmNsZWFyKCk7CisgICAgfQorCisgICAgLyogQ2hhcmFjdGVyIFRva2VucyAqLwor
CisgICAgLy8gU3RhcnRpbmcgYSBjaGFyYWN0ZXIgdG9rZW4gd29ya3Mgc2xpZ2h0bHkgZGlmZmVy
ZW50bHkgdGhhbiBzdGFydGluZworICAgIC8vIG90aGVyIHR5cGVzIG9mIHRva2VucyBiZWNhdXNl
IHdlIHdhbnQgdG8gc2F2ZSBhIHBlci1jaGFyYWN0ZXIgYnJhbmNoLgorICAgIHZvaWQgZW5zdXJl
SXNDaGFyYWN0ZXJUb2tlbigpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxU
b2tlblR5cGVzOjpVbmluaXRpYWxpemVkIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hh
cmFjdGVyKTsKKyAgICAgICAgbV90eXBlID0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3RlcjsKKyAg
ICB9CisKKyAgICBjb25zdCBEYXRhVmVjdG9yJiBjaGFyYWN0ZXJzKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3Rlcik7CisgICAg
ICAgIHJldHVybiBtX2RhdGE7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRUb0NoYXJhY3Rlcihj
aGFyIGNoYXJhY3RlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2Vu
VHlwZXM6OkNoYXJhY3Rlcik7CisgICAgICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKKyAg
ICB9CisKKyAgICB2b2lkIGFwcGVuZFRvQ2hhcmFjdGVyKFVDaGFyIGNoYXJhY3RlcikKKyAgICB7
CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3Rlcik7Cisg
ICAgICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICAgICAgbV9vckFsbERhdGEgfD0g
Y2hhcmFjdGVyOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kVG9DaGFyYWN0ZXIoY29uc3QgVmVj
dG9yPExDaGFyLCAzMj4mIGNoYXJhY3RlcnMpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBl
ID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpOworICAgICAgICBtX2RhdGEuYXBwZW5kVmVj
dG9yKGNoYXJhY3RlcnMpOworICAgIH0KKworICAgIC8qIENvbW1lbnQgVG9rZW5zICovCisKKyAg
ICBjb25zdCBEYXRhVmVjdG9yJiBjb21tZW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNvbW1lbnQpOworICAgICAgICByZXR1cm4gbV9k
YXRhOworICAgIH0KKworICAgIHZvaWQgYmVnaW5Db21tZW50KCkKKyAgICB7CisgICAgICAgIEFT
U0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQpOworICAgICAgICBt
X3R5cGUgPSBIVE1MVG9rZW5UeXBlczo6Q29tbWVudDsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVu
ZFRvQ29tbWVudChVQ2hhciBjaGFyYWN0ZXIpCisgICAgeworICAgICAgICBBU1NFUlQoY2hhcmFj
dGVyKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6Q29tbWVudCk7
CisgICAgICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICAgICAgbV9vckFsbERhdGEg
fD0gY2hhcmFjdGVyOworICAgIH0KKworICAgIHZvaWQgZXJhc2VDaGFyYWN0ZXJzKCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3Rlcik7Cisg
ICAgICAgIG1fZGF0YS5jbGVhcigpOworICAgICAgICBtX29yQWxsRGF0YSA9IDA7CisgICAgfQor
CiBwcml2YXRlOgorICAgIHR5cGVuYW1lIEhUTUxUb2tlblR5cGVzOjpUeXBlIG1fdHlwZTsKKyAg
ICB0eXBlbmFtZSBBdHRyaWJ1dGU6OlJhbmdlIG1fcmFuZ2U7IC8vIEFsd2F5cyBzdGFydHMgYXQg
emVyby4KKyAgICBpbnQgbV9iYXNlT2Zmc2V0OworICAgIERhdGFWZWN0b3IgbV9kYXRhOworICAg
IFVDaGFyIG1fb3JBbGxEYXRhOworCisgICAgLy8gRm9yIFN0YXJ0VGFnIGFuZCBFbmRUYWcKKyAg
ICBib29sIG1fc2VsZkNsb3Npbmc7CisgICAgQXR0cmlidXRlTGlzdCBtX2F0dHJpYnV0ZXM7CisK
KyAgICAvLyBBIHBvaW50ZXIgaW50byBtX2F0dHJpYnV0ZXMgdXNlZCBkdXJpbmcgbGV4aW5nLgor
ICAgIEF0dHJpYnV0ZSogbV9jdXJyZW50QXR0cmlidXRlOworCiAgICAgLy8gRm9yIERPQ1RZUEUK
ICAgICBPd25QdHI8RG9jdHlwZURhdGE+IG1fZG9jdHlwZURhdGE7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuVHlwZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlblR5cGVzLmgKaW5kZXggMWFlZDIxYjE1MDZiOTQ2OGE4
OWU2NDJiYjhhYmNjYWRmYTE0Y2RiNy4uNDBiMjQzNWM2MWViNmFlYzJjOGM0MDA5MjA1MGZjZmMx
YzlmNGQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2Vu
VHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5UeXBlcy5o
CkBAIC0yNiw5ICsyNiw2IEBACiAjaWZuZGVmIEhUTUxUb2tlblR5cGVzX2gKICNkZWZpbmUgSFRN
TFRva2VuVHlwZXNfaAogCi0jaW5jbHVkZSAiTWFya3VwVG9rZW5CYXNlLmgiCi0jaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTFRv
a2VuVHlwZXMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVk
aXRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5oCmluZGV4IGRj
N2U5MjlhOTRiZjZiYmJhMjZjMjI3NWJlNGYwNDU1ZDQ0NWZhNjEuLjhkNDIzYWQ0ODkxMjViZDhi
NGE1ZWQ1YjM0MTMzZWQyZjEzOThkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL1hTU0F1ZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NB
dWRpdG9yLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkhUTUxUb2tlbi5oIgogI2lu
Y2x1ZGUgIkhUVFBQYXJzZXJzLmgiCisjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlN1ZmZp
eFRyZWUuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tl
bkJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkNzM5MDA5NDMzZjIyMzRlYTU3YTRkMDViNDg0
MDllMmUxMmE4ZDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2UuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDM1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSwg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2lmbmRlZiBNYXJrdXBUb2tlbkJhc2VfaAotI2RlZmluZSBNYXJrdXBUb2tl
bkJhc2VfaAotCi0jaW5jbHVkZSAiRWxlbWVudEF0dHJpYnV0ZURhdGEuaCIKLSNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+Ci0KLSNpZm5kZWYgTkRFQlVHCi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNlbmRp
ZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBpbmxpbmUgQXR0cmlidXRlKiBmaW5k
QXR0cmlidXRlSW5WZWN0b3IoVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMsIGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGF0dHJp
YnV0ZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGF0dHJpYnV0ZXMuYXQoaSkubmFtZSgp
Lm1hdGNoZXMobmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gJmF0dHJpYnV0ZXMuYXQoaSk7Ci0g
ICAgfQotICAgIHJldHVybiAwOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlU2V0PgotY2xh
c3MgTWFya3VwVG9rZW5CYXNlIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNYXJrdXBUb2tl
bkJhc2UpOwotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIHR5cGVk
ZWYgVHlwZVNldCBUeXBlOwotCi0gICAgY2xhc3MgQXR0cmlidXRlIHsKLSAgICBwdWJsaWM6Ci0g
ICAgICAgIGNsYXNzIFJhbmdlIHsKLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgaW50IG1f
c3RhcnQ7Ci0gICAgICAgICAgICBpbnQgbV9lbmQ7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgUmFu
Z2UgbV9uYW1lUmFuZ2U7Ci0gICAgICAgIFJhbmdlIG1fdmFsdWVSYW5nZTsKLSAgICAgICAgV1RG
OjpWZWN0b3I8VUNoYXIsIDMyPiBtX25hbWU7Ci0gICAgICAgIFdURjo6VmVjdG9yPFVDaGFyLCAz
Mj4gbV92YWx1ZTsKLSAgICB9OwotCi0gICAgdHlwZWRlZiBXVEY6OlZlY3RvcjxBdHRyaWJ1dGUs
IDEwPiBBdHRyaWJ1dGVMaXN0OwotICAgIHR5cGVkZWYgV1RGOjpWZWN0b3I8VUNoYXIsIDEwMjQ+
IERhdGFWZWN0b3I7Ci0KLSAgICBNYXJrdXBUb2tlbkJhc2UoKSB7IGNsZWFyKCk7IH0KLSAgICB2
aXJ0dWFsIH5NYXJrdXBUb2tlbkJhc2UoKSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBjbGVhcigp
Ci0gICAgewotICAgICAgICBtX3R5cGUgPSBUeXBlU2V0OjpVbmluaXRpYWxpemVkOwotICAgICAg
ICBtX3JhbmdlLm1fc3RhcnQgPSAwOwotICAgICAgICBtX3JhbmdlLm1fZW5kID0gMDsKLSAgICAg
ICAgbV9iYXNlT2Zmc2V0ID0gMDsKLSAgICAgICAgbV9kYXRhLmNsZWFyKCk7Ci0gICAgICAgIG1f
b3JBbGxEYXRhID0gMDsKLSAgICB9Ci0KLSAgICBib29sIGlzVW5pbml0aWFsaXplZCgpIHsgcmV0
dXJuIG1fdHlwZSA9PSBUeXBlU2V0OjpVbmluaXRpYWxpemVkOyB9Ci0KLSAgICBpbnQgc3RhcnRJ
bmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2UubV9zdGFydDsgfQotICAgIGludCBlbmRJbmRl
eCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2UubV9lbmQ7IH0KLQotICAgIHZvaWQgc2V0QmFzZU9m
ZnNldChpbnQgb2Zmc2V0KQotICAgIHsKLSAgICAgICAgbV9iYXNlT2Zmc2V0ID0gb2Zmc2V0Owot
ICAgIH0KLQotICAgIHZvaWQgZW5kKGludCBlbmRPZmZzZXQpCi0gICAgewotICAgICAgICBtX3Jh
bmdlLm1fZW5kID0gZW5kT2Zmc2V0IC0gbV9iYXNlT2Zmc2V0OwotICAgIH0KLQotICAgIHZvaWQg
bWFrZUVuZE9mRmlsZSgpCi0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6
OlVuaW5pdGlhbGl6ZWQpOwotICAgICAgICBtX3R5cGUgPSBUeXBlU2V0OjpFbmRPZkZpbGU7Ci0g
ICAgfQotCi0gICAgdm9pZCBiZWdpblN0YXJ0VGFnKFVDaGFyIGNoYXJhY3RlcikKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOwotICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVT
ZXQ6OlVuaW5pdGlhbGl6ZWQpOwotICAgICAgICBtX3R5cGUgPSBUeXBlU2V0OjpTdGFydFRhZzsK
LSAgICAgICAgbV9zZWxmQ2xvc2luZyA9IGZhbHNlOwotICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1
dGUgPSAwOwotICAgICAgICBtX2F0dHJpYnV0ZXMuY2xlYXIoKTsKLQotICAgICAgICBtX2RhdGEu
YXBwZW5kKGNoYXJhY3Rlcik7Ci0gICAgICAgIG1fb3JBbGxEYXRhIHw9IGNoYXJhY3RlcjsKLSAg
ICB9Ci0KLSAgICB2b2lkIGJlZ2luRW5kVGFnKExDaGFyIGNoYXJhY3RlcikKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6VW5pbml0aWFsaXplZCk7Ci0gICAgICAgIG1f
dHlwZSA9IFR5cGVTZXQ6OkVuZFRhZzsKLSAgICAgICAgbV9zZWxmQ2xvc2luZyA9IGZhbHNlOwot
ICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUgPSAwOwotICAgICAgICBtX2F0dHJpYnV0ZXMuY2xl
YXIoKTsKLQotICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rlcik7Ci0gICAgfQotCi0gICAg
dm9pZCBiZWdpbkVuZFRhZyhjb25zdCBWZWN0b3I8TENoYXIsIDMyPiYgY2hhcmFjdGVycykKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6VW5pbml0aWFsaXplZCk7Ci0g
ICAgICAgIG1fdHlwZSA9IFR5cGVTZXQ6OkVuZFRhZzsKLSAgICAgICAgbV9zZWxmQ2xvc2luZyA9
IGZhbHNlOwotICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUgPSAwOwotICAgICAgICBtX2F0dHJp
YnV0ZXMuY2xlYXIoKTsKLQotICAgICAgICBtX2RhdGEuYXBwZW5kVmVjdG9yKGNoYXJhY3RlcnMp
OwotICAgIH0KLQotICAgIC8vIFN0YXJ0aW5nIGEgY2hhcmFjdGVyIHRva2VuIHdvcmtzIHNsaWdo
dGx5IGRpZmZlcmVudGx5IHRoYW4gc3RhcnRpbmcKLSAgICAvLyBvdGhlciB0eXBlcyBvZiB0b2tl
bnMgYmVjYXVzZSB3ZSB3YW50IHRvIHNhdmUgYSBwZXItY2hhcmFjdGVyIGJyYW5jaC4KLSAgICB2
b2lkIGVuc3VyZUlzQ2hhcmFjdGVyVG9rZW4oKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBUeXBlU2V0OjpVbmluaXRpYWxpemVkIHx8IG1fdHlwZSA9PSBUeXBlU2V0OjpDaGFyYWN0
ZXIpOwotICAgICAgICBtX3R5cGUgPSBUeXBlU2V0OjpDaGFyYWN0ZXI7Ci0gICAgfQotCi0gICAg
dm9pZCBiZWdpbkNvbW1lbnQoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBl
U2V0OjpVbmluaXRpYWxpemVkKTsKLSAgICAgICAgbV90eXBlID0gVHlwZVNldDo6Q29tbWVudDsK
LSAgICB9Ci0KLSAgICB2b2lkIGFwcGVuZFRvQ2hhcmFjdGVyKGNoYXIgY2hhcmFjdGVyKQotICAg
IHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpDaGFyYWN0ZXIpOwotICAgICAg
ICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rlcik7Ci0gICAgfQotCi0gICAgdm9pZCBhcHBlbmRUb0No
YXJhY3RlcihVQ2hhciBjaGFyYWN0ZXIpCi0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09
IFR5cGVTZXQ6OkNoYXJhY3Rlcik7Ci0gICAgICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsK
LSAgICAgICAgbV9vckFsbERhdGEgfD0gY2hhcmFjdGVyOwotICAgIH0KLQotICAgIHZvaWQgYXBw
ZW5kVG9DaGFyYWN0ZXIoY29uc3QgVmVjdG9yPExDaGFyLCAzMj4mIGNoYXJhY3RlcnMpCi0gICAg
ewotICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OkNoYXJhY3Rlcik7Ci0gICAgICAg
IG1fZGF0YS5hcHBlbmRWZWN0b3IoY2hhcmFjdGVycyk7Ci0gICAgfQotCi0gICAgdm9pZCBhcHBl
bmRUb0NvbW1lbnQoVUNoYXIgY2hhcmFjdGVyKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNoYXJh
Y3Rlcik7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6Q29tbWVudCk7Ci0gICAg
ICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKLSAgICAgICAgbV9vckFsbERhdGEgfD0gY2hh
cmFjdGVyOwotICAgIH0KLQotICAgIHZvaWQgYWRkTmV3QXR0cmlidXRlKCkKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6U3RhcnRUYWcgfHwgbV90eXBlID09IFR5cGVT
ZXQ6OkVuZFRhZyk7Ci0gICAgICAgIG1fYXR0cmlidXRlcy5ncm93KG1fYXR0cmlidXRlcy5zaXpl
KCkgKyAxKTsKLSAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlID0gJm1fYXR0cmlidXRlcy5sYXN0
KCk7Ci0jaWZuZGVmIE5ERUJVRwotICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fbmFtZVJh
bmdlLm1fc3RhcnQgPSAwOwotICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fbmFtZVJhbmdl
Lm1fZW5kID0gMDsKLSAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlUmFuZ2UubV9z
dGFydCA9IDA7Ci0gICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fZW5k
ID0gMDsKLSNlbmRpZgotICAgIH0KLQotICAgIHZvaWQgYmVnaW5BdHRyaWJ1dGVOYW1lKGludCBv
ZmZzZXQpCi0gICAgewotICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fbmFtZVJhbmdlLm1f
c3RhcnQgPSBvZmZzZXQgLSBtX2Jhc2VPZmZzZXQ7Ci0gICAgfQotCi0gICAgdm9pZCBlbmRBdHRy
aWJ1dGVOYW1lKGludCBvZmZzZXQpCi0gICAgewotICAgICAgICBpbnQgaW5kZXggPSBvZmZzZXQg
LSBtX2Jhc2VPZmZzZXQ7Ci0gICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV9uYW1lUmFuZ2Uu
bV9lbmQgPSBpbmRleDsKLSAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlUmFuZ2Uu
bV9zdGFydCA9IGluZGV4OwotICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5n
ZS5tX2VuZCA9IGluZGV4OwotICAgIH0KLQotICAgIHZvaWQgYmVnaW5BdHRyaWJ1dGVWYWx1ZShp
bnQgb2Zmc2V0KQotICAgIHsKLSAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlUmFu
Z2UubV9zdGFydCA9IG9mZnNldCAtIG1fYmFzZU9mZnNldDsKLSNpZm5kZWYgTkRFQlVHCi0gICAg
ICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fZW5kID0gMDsKLSNlbmRpZgot
ICAgIH0KLQotICAgIHZvaWQgZW5kQXR0cmlidXRlVmFsdWUoaW50IG9mZnNldCkKLSAgICB7Ci0g
ICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fZW5kID0gb2Zmc2V0IC0g
bV9iYXNlT2Zmc2V0OwotICAgIH0KLQotICAgIHZvaWQgYXBwZW5kVG9BdHRyaWJ1dGVOYW1lKFVD
aGFyIGNoYXJhY3RlcikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOwotICAgICAg
ICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBUeXBlU2V0
OjpFbmRUYWcpOwotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gYWRkIHRo
ZSBmb2xsb3dpbmcgQVNTRVJUIG9uY2Ugd2UgZml4Ci0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjk3MQotICAgICAgICAvLyAgIEFTU0VSVChtX2N1
cnJlbnRBdHRyaWJ1dGUtPm1fbmFtZVJhbmdlLm1fc3RhcnQpOwotICAgICAgICBtX2N1cnJlbnRB
dHRyaWJ1dGUtPm1fbmFtZS5hcHBlbmQoY2hhcmFjdGVyKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFw
cGVuZFRvQXR0cmlidXRlVmFsdWUoVUNoYXIgY2hhcmFjdGVyKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKGNoYXJhY3Rlcik7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6U3RhcnRU
YWcgfHwgbV90eXBlID09IFR5cGVTZXQ6OkVuZFRhZyk7Ci0gICAgICAgIEFTU0VSVChtX2N1cnJl
bnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX3N0YXJ0KTsKLSAgICAgICAgbV9jdXJyZW50QXR0
cmlidXRlLT5tX3ZhbHVlLmFwcGVuZChjaGFyYWN0ZXIpOwotICAgIH0KLQotICAgIHZvaWQgYXBw
ZW5kVG9BdHRyaWJ1dGVWYWx1ZShzaXplX3QgaSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKLSAgICB7
Ci0gICAgICAgIEFTU0VSVCghdmFsdWUuaXNFbXB0eSgpKTsKLSAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBUeXBlU2V0OjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gVHlwZVNldDo6RW5kVGFnKTsKLSAg
ICAgICAgbV9hdHRyaWJ1dGVzW2ldLm1fdmFsdWUuYXBwZW5kKHZhbHVlLmNoYXJhY3RlcnMoKSwg
dmFsdWUubGVuZ3RoKCkpOwotICAgIH0KLQotICAgIHR5cGVuYW1lIFR5cGU6OlR5cGUgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotCi0gICAgYm9vbCBzZWxmQ2xvc2luZygpIGNvbnN0
Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OlN0YXJ0VGFnIHx8IG1f
dHlwZSA9PSBUeXBlU2V0OjpFbmRUYWcpOwotICAgICAgICByZXR1cm4gbV9zZWxmQ2xvc2luZzsK
LSAgICB9Ci0KLSAgICB2b2lkIHNldFNlbGZDbG9zaW5nKCkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gVHlwZVNldDo6U3RhcnRUYWcgfHwgbV90eXBlID09IFR5cGVTZXQ6OkVuZFRh
Zyk7Ci0gICAgICAgIG1fc2VsZkNsb3NpbmcgPSB0cnVlOwotICAgIH0KLQotICAgIGNvbnN0IEF0
dHJpYnV0ZUxpc3QmIGF0dHJpYnV0ZXMoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1f
dHlwZSA9PSBUeXBlU2V0OjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gVHlwZVNldDo6RW5kVGFnKTsK
LSAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlczsKLSAgICB9Ci0KLSAgICB2b2lkIGVyYXNlQ2hh
cmFjdGVycygpCi0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OkNoYXJh
Y3Rlcik7Ci0gICAgICAgIG1fZGF0YS5jbGVhcigpOwotICAgICAgICBtX29yQWxsRGF0YSA9IDA7
Ci0gICAgfQotCi0gICAgdm9pZCBlcmFzZVZhbHVlT2ZBdHRyaWJ1dGUoc2l6ZV90IGkpCi0gICAg
ewotICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9
PSBUeXBlU2V0OjpFbmRUYWcpOwotICAgICAgICBtX2F0dHJpYnV0ZXNbaV0ubV92YWx1ZS5jbGVh
cigpOwotICAgIH0KLQotICAgIGNvbnN0IERhdGFWZWN0b3ImIGNoYXJhY3RlcnMoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpDaGFyYWN0ZXIpOwotICAg
ICAgICByZXR1cm4gbV9kYXRhOwotICAgIH0KLQotICAgIGNvbnN0IERhdGFWZWN0b3ImIGNvbW1l
bnQoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpDb21t
ZW50KTsKLSAgICAgICAgcmV0dXJuIG1fZGF0YTsKLSAgICB9Ci0KLSAgICBjb25zdCBEYXRhVmVj
dG9yJiBkYXRhKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNl
dDo6Q2hhcmFjdGVyIHx8IG1fdHlwZSA9PSBUeXBlU2V0OjpDb21tZW50IHx8IG1fdHlwZSA9PSBU
eXBlU2V0OjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gVHlwZVNldDo6RW5kVGFnKTsKLSAgICAgICAg
cmV0dXJuIG1fZGF0YTsKLSAgICB9Ci0KLSAgICBib29sIGlzQWxsOEJpdERhdGEoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIChtX29yQWxsRGF0YSA8PSAweGZmKTsKLSAgICB9Ci0KLSAg
ICBjb25zdCBEYXRhVmVjdG9yJiBuYW1lKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
X2RhdGE7Ci0gICAgfQotCi0gICAgU3RyaW5nIG5hbWVTdHJpbmcoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgaWYgKCFtX2RhdGEuc2l6ZSgpKQotICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5n
KCk7Ci0gICAgICAgIGlmIChpc0FsbDhCaXREYXRhKCkpCi0gICAgICAgICAgICByZXR1cm4gU3Ry
aW5nOjptYWtlOEJpdEZyb20xNkJpdFNvdXJjZShtX2RhdGEuZGF0YSgpLCBtX2RhdGEuc2l6ZSgp
KTsKLSAgICAgICAgcmV0dXJuIFN0cmluZyhtX2RhdGEuZGF0YSgpLCBtX2RhdGEuc2l6ZSgpKTsK
LSAgICB9Ci0KLXByb3RlY3RlZDoKLQotI2lmbmRlZiBOREVCVUcKLSAgICB2b2lkIHByaW50U3Ry
aW5nKGNvbnN0IERhdGFWZWN0b3ImIHN0cmluZykgY29uc3QKLSAgICB7Ci0gICAgICAgIERhdGFW
ZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBzdHJpbmcuYmVnaW4oKTsKLSAgICAgICAgZm9y
ICg7IGl0ZXIgIT0gc3RyaW5nLmVuZCgpOyArK2l0ZXIpCi0gICAgICAgICAgICBmcHJpbnRmKHN0
ZGVyciwgIiVsYyIsIHdjaGFyX3QoKml0ZXIpKTsKLSAgICB9Ci0jZW5kaWYgLy8gTkRFQlVHCi0K
LSAgICB2b2lkIGFwcGVuZFRvTmFtZShVQ2hhciBjaGFyYWN0ZXIpCi0gICAgewotICAgICAgICBB
U1NFUlQoY2hhcmFjdGVyKTsKLSAgICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXIpOwotICAg
ICAgICBtX29yQWxsRGF0YSB8PSBjaGFyYWN0ZXI7Ci0gICAgfQotCi0gICAgdHlwZW5hbWUgVHlw
ZTo6VHlwZSBtX3R5cGU7Ci0gICAgdHlwZW5hbWUgQXR0cmlidXRlOjpSYW5nZSBtX3JhbmdlOyAv
LyBBbHdheXMgc3RhcnRzIGF0IHplcm8uCi0gICAgaW50IG1fYmFzZU9mZnNldDsKLSAgICBEYXRh
VmVjdG9yIG1fZGF0YTsKLSAgICBVQ2hhciBtX29yQWxsRGF0YTsKLQotICAgIC8vIEZvciBTdGFy
dFRhZyBhbmQgRW5kVGFnCi0gICAgYm9vbCBtX3NlbGZDbG9zaW5nOwotICAgIEF0dHJpYnV0ZUxp
c3QgbV9hdHRyaWJ1dGVzOwotCi0gICAgLy8gQSBwb2ludGVyIGludG8gbV9hdHRyaWJ1dGVzIHVz
ZWQgZHVyaW5nIGxleGluZy4KLSAgICBBdHRyaWJ1dGUqIG1fY3VycmVudEF0dHJpYnV0ZTsKLX07
Ci0KLX0KLQotI2VuZGlmIC8vIE1hcmt1cFRva2VuQmFzZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187660</attachid>
            <date>2013-02-11 13:48:51 -0800</date>
            <delta_ts>2013-02-11 14:05:20 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-109483-20130211134522.patch</filename>
            <type>text/plain</type>
            <size>94174</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNDg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzk0OTM2MGNlYzM4MTNm
OGNkNmVmYzI3Njg3Y2RmYWI0NzlhNzkyZC4uYzg5MzZlMmZiYTZjMWQyZjUyNDNlMWNhZTQ2NjEy
ODFjYzhiNWUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAxMy0wMi0xMSAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRm9sZCBNYXJrdXBUb2tlbkJh
c2UgaW50byBIVE1MVG9rZW4gbm93IHRoYXQgaXQgaGFzIG5vIG90aGVyIHN1YmNsYXNzZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTQ4MworCisg
ICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgVGhpcyBkZWxldGVzIGFu
IGVwaWMgYW1vdW50IG9mIHRlbXBsYXRlIHl1Y2ssIGFzIHdlbGwgYXMgcmVtb3ZlcworICAgICAg
ICBhIHZ0YWJsZSAhPyEgZnJvbSBIVE1MVG9rZW4uCisKKyAgICAgICAgVGhpcyBwYXZlcyB0aGUg
d2F5IGZvciBmdXJ0aGVyIGNsZWFudXAgb2YgSFRNTFRva2VuIG5vdyB0aGF0IHdlCisgICAgICAg
IGNhbiBzZWUgdGhlIHdob2xlIG9iamVjdCBhdCBvbmNlLgorICAgICAgICBXZSdsbCBhbHNvIHBy
b2JhYmx5IHJlLWNyZWF0ZSBhbiBIVE1MVG9rZW4uY3BwIGFnYWluLCBub3cgdGhhdCB3ZSdyZQor
ICAgICAgICBmcmVlIGZyb20gdGhlIGNoYWlucyBvZiB0ZW1wbGF0ZSBub25zZW5zZS4KKworICAg
ICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAg
KiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxUb2tlbi5oOgorICAgICAgICAoV2ViQ29yZTo6ZmluZEF0dHJpYnV0ZUluVmVjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSFRNTFRva2VuKToKKyAgICAgICAgKEF0dHJpYnV0
ZSk6CisgICAgICAgIChSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OkhUTUxU
b2tlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmNsZWFyKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUb2tlbjo6aXNVbmluaXRpYWxpemVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUb2tlbjo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46Om1ha2VFbmRPZkZp
bGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpzdGFydEluZGV4KToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUb2tlbjo6ZW5kSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRv
a2VuOjpzZXRCYXNlT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6ZW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6ZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVG9rZW46OmlzQWxsOEJpdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpu
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YXBwZW5kVG9OYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6bmFtZVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVG9rZW46OnNlbGZDbG9zaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6c2V0
U2VsZkNsb3NpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpiZWdpblN0YXJ0VGFn
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YmVnaW5FbmRUYWcpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRva2VuOjphZGROZXdBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRva2VuOjpiZWdpbkF0dHJpYnV0ZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRv
a2VuOjplbmRBdHRyaWJ1dGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YmVn
aW5BdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmVuZEF0dHJp
YnV0ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YXBwZW5kVG9BdHRyaWJ1
dGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YXBwZW5kVG9BdHRyaWJ1dGVW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmF0dHJpYnV0ZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRva2VuOjplcmFzZVZhbHVlT2ZBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRva2VuOjplbnN1cmVJc0NoYXJhY3RlclRva2VuKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUb2tlbjo6Y2hhcmFjdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9r
ZW46OmFwcGVuZFRvQ2hhcmFjdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6Y29t
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmJlZ2luQ29tbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmFwcGVuZFRvQ29tbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVG9rZW46OmVyYXNlQ2hhcmFjdGVycyk6CisgICAgICAgICogaHRtbC9wYXJzZXIv
SFRNTFRva2VuVHlwZXMuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9yLmg6Cisg
ICAgICAgICogeG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2UuaDogUmVtb3ZlZC4KKworMjAxMy0w
Mi0xMSAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBXZWJW
VFRUb2tlbml6ZXIgc3RvcCBpbmhlcml0aW5nIGZyb20gTWFya3VwVG9rZW5pemVyQmFzZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NDExCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBNb3ZlZCBJbnB1dFN0cmVh
bVByZXByb2Nlc3NvciBpbnRvIGl0cyBvd24gaGVhZGVyIGZpbGUgc28gaXQgY2FuIGJlCisgICAg
ICAgIHVzZWQgYnkgYm90aCBXZWJWVFRUb2tlbml6ZXIgYW5kIEhUTUxUb2tlbml6ZXIuCisKKyAg
ICAgICAgQWxzbyBzcGxpdCBvdXQga0VuZE9mRmlsZU1hcmtlciBmcm9tIElucHV0U3RyZWFtUHJl
cHJvY2Vzc29yPFQ+IHNvIHRoYXQKKyAgICAgICAgaXQgY2FuIGJlIHVzZWQgdy9vIGEgc3BlY2lm
aWMgaW5zdGFudGlhdGlvbiBvZiB0aGUgdGVtcGxhdGUgY2xhc3MuCisgICAgICAgIFRoaXMgYWxz
byBtYWRlIGl0IHBvc3NpYmxlIHRvIGZpeCB0aHJlZSBvbGQgZml4bWVzIGFib3V0IHdhbnRpbmcg
dG8gc2hhcmUKKyAgICAgICAgdGhhdCBjb25zdGFudC4KKworICAgICAgICBBZ2Fpbiwgc2VwYXJh
dGluZyBXZWJWVFQgY29kZSBmcm9tIE1hcmt1cCogYmFzZSBjbGFzc2VzIG1hZGUgaXQgc2ltcGxl
cgorICAgICAgICBhdCB0aGUgY29zdCBvZiBhIGxpdHRsZSBjb3B5L3Bhc3RlIGNvZGUuICBXZWJW
VFQgdG9rZW5pemF0aW9uIGlzIHJlbWFya2FibHkKKyAgICAgICAgc2ltcGxlIGNvbXBhcmVkIHRv
IEhUTUwuCisKKyAgICAgICAgVGhpcyB3aWxsIG1ha2UgaXQgaW1tZWRpYXRlbHkgcG9zc2libGUg
dG8gcHVsbCBNYXJrdXBUb2tlbml6ZXJCYXNlIHVwIGludG8KKyAgICAgICAgSFRNTFRva2VuaXpl
ciBhbmQgZnVydGhlciBzaW1wbGlmeSB0aGUgY29kZS4KKworICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1MUGFyc2VyOjptYXJrRW5kT2ZG
aWxlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MSW5wdXRTdHJlYW0uaDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJbnB1dFN0cmVhbTo6bWFya0VuZE9mRmlsZSk6CisgICAgICAgICogaHRt
bC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5p
emVyOjpuZXh0VG9rZW4pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0lucHV0U3RyZWFtUHJlcHJv
Y2Vzc29yLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJbnB1dFN0cmVh
bVByZXByb2Nlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFN0cmVhbVByZXByb2Nlc3Nv
cjo6SW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRTdHJl
YW1QcmVwcm9jZXNzb3I6Om5leHRJbnB1dENoYXJhY3Rlcik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6cGVlayk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFN0
cmVhbVByZXByb2Nlc3Nvcjo6YWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFN0cmVh
bVByZXByb2Nlc3Nvcjo6c2tpcE5leHROZXdMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0
U3RyZWFtUHJlcHJvY2Vzc29yOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFN0cmVh
bVByZXByb2Nlc3Nvcjo6c2hvdWxkVHJlYXROdWxsQXNFbmRPZkZpbGVNYXJrZXIpOgorICAgICAg
ICAqIGh0bWwvdHJhY2svV2ViVlRUVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlZUVFRva2VuaXplcjo6V2ViVlRUVG9rZW5pemVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlZU
VFRva2VuaXplcjo6bmV4dFRva2VuKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFRva2Vu
aXplci5oOgorICAgICAgICAoV2ViVlRUVG9rZW5pemVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlZUVFRva2VuaXplcjo6aGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViVlRUVG9rZW5pemVyOjpidWZmZXJDaGFyYWN0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViVlRUVG9rZW5pemVyOjplbWl0QW5kUmVzdW1lSW4pOgorICAgICAgICAoV2ViQ29yZTo6
V2ViVlRUVG9rZW5pemVyOjplbWl0RW5kT2ZGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlZU
VFRva2VuaXplcjo6c2hvdWxkU2tpcE51bGxDaGFyYWN0ZXJzKToKKyAgICAgICAgKiB4bWwvcGFy
c2VyL01hcmt1cFRva2VuaXplckJhc2UuaDoKKyAgICAgICAgKE1hcmt1cFRva2VuaXplckJhc2Up
OgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9rZW5pemVyQmFzZTo6YnVmZmVyQ2hhcmFjdGVy
KToKKwogMjAxMy0wMi0xMSAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFRpbWVsaW5lOiBpbnZhbGlkYXRlIGFuZCBmb3JjZSBs
b2NhdGlvbnMgYXJlIHNhbWUgZm9yIExheW91dCByZWNvcmRzIGNhdXNlZCBieSBzdHlsZSByZWNh
bGN1bGFpdG9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAxOTdlODJlNzc5OWM4
ZjU5MzkwYmRmYWZhOGMxMjc4MTNlYzc3NzI5Li45NDY5YTIxYWE5M2MyZGJkMzJkOTBkODQ1NjJm
NDI4YTk3NmFjNzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTM2MTgsNiAr
MzYxOCw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFRyZWVCdWlsZGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxW
aWV3U291cmNlUGFyc2VyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFZp
ZXdTb3VyY2VQYXJzZXIuaCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSW5wdXRTdHJl
YW1QcmVwcm9jZXNzb3IuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvTmVzdGluZ0xl
dmVsSW5jcmVtZW50ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3Vt
ZW50UGFyc2VyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50
UGFyc2VyLmggXApAQCAtNDcwOCw3ICs0NzA5LDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyVGhyZWFkLmggXAogCVNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvQ2hh
cmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5lcy5oIFwKLQlTb3VyY2UvV2ViQ29yZS94bWwvcGFy
c2VyL01hcmt1cFRva2VuQmFzZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01hcmt1
cFRva2VuaXplckJhc2UuaCBcCiAJU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tl
bml6ZXJJbmxpbmVzLmggXAogCVNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXIuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3Vy
Y2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGNlYTMwOTVjYzdmODZlY2E4YTZjOWRlZmRjNjVi
MTQ5YzEwNTFiNmEuLjRlMDY4ZTJiYTM2ZDU0OTA2OGYwNzZmNWUzYzViNDA2Mzg5NmQ3NTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaQpAQCAtMTkzNSw2ICsxOTM1LDcgQEAgSEVBREVSUyArPSBcCiAgICAgaHRtbC9w
YXJzZXIvSFRNTFRva2VuaXplci5oIFwKICAgICBodG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIu
aCBcCiAgICAgaHRtbC9wYXJzZXIvSFRNTFZpZXdTb3VyY2VQYXJzZXIuaCBcCisgICAgaHRtbC9w
YXJzZXIvSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IuaCBcCiAgICAgaHRtbC9wYXJzZXIvWFNTQXVk
aXRvci5oIFwKICAgICBodG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuaCBcCiAgICAgaHRt
bC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmggXApAQCAtMjg0OSw3ICsyODUwLDYgQEAgSEVB
REVSUyArPSBcCiAgICAgd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaCBcCiAgICAgd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuaCBcCiAgICAgeG1sL3BhcnNlci9DaGFyYWN0ZXJSZWZlcmVuY2VQYXJz
ZXJJbmxpbmVzLmggXAotICAgIHhtbC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmggXAogICAgIHht
bC9wYXJzZXIvTWFya3VwVG9rZW5pemVyQmFzZS5oIFwKICAgICB4bWwvcGFyc2VyL01hcmt1cFRv
a2VuaXplcklubGluZXMuaCBcCiAgICAgeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5oIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCAxYmM4MjAwMjkzYjRmN2U2Y2QwNTUzZmJjNTQ1NWNlZDU5Mjcx
OGJmLi41NWNjYWUxZTQ3ZDQ1MjU1ZGJkMjZjZDA4MmU4MjI3NjQ5ZjQyMDcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCkBAIC0yNjcwLDcgKzI2NzAsNiBAQAogICAgICAgICAgICAgJ3dvcmtlcnMvY2hyb21p
dW0vV29ya2VyQ29udGV4dFByb3h5Q2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICd3b3JrZXJz
L2Nocm9taXVtL1dvcmtlckNvbnRleHRQcm94eUNocm9taXVtLmgnLAogICAgICAgICAgICAgJ3ht
bC9wYXJzZXIvQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5lcy5oJywKLSAgICAgICAgICAg
ICd4bWwvcGFyc2VyL01hcmt1cFRva2VuQmFzZS5oJywKICAgICAgICAgICAgICd4bWwvcGFyc2Vy
L01hcmt1cFRva2VuaXplckJhc2UuaCcsCiAgICAgICAgICAgICAneG1sL3BhcnNlci9NYXJrdXBU
b2tlbml6ZXJJbmxpbmVzLmgnLAogICAgICAgICAgICAgJ3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXIuY3BwJywKQEAgLTM0MjcsNiArMzQyNiw3IEBACiAgICAgICAgICAgICAnaHRtbC9wYXJz
ZXIvSFRNTFRyZWVCdWlsZGVyLmgnLAogICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL0hUTUxWaWV3
U291cmNlUGFyc2VyLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvSFRNTFZpZXdTb3Vy
Y2VQYXJzZXIuaCcsCisgICAgICAgICAgICAnaHRtbC9wYXJzZXIvSW5wdXRTdHJlYW1QcmVwcm9j
ZXNzb3IuaCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvTmVzdGluZ0xldmVsSW5jcmVtZW50
ZXIuaCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcCcs
CiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmgnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBlYWViOTUxZTc2
NjI3YmQ3MmQzNGM4ZjRhMjVjNWQ4ZTc1NjQ0OTkwLi4zNTNhZWI4M2EwOGFmMmMzZDdmMjg3Y2Q4
ZWMzZjU4ZGI5NDdmYzQ2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagpAQCAtNDkwOTAsMTAgKzQ5MDkwLDYgQEAKIAkJCQlOYW1lPSJwYXJzZXIiCiAJ
CQkJPgogCQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5ceG1sXHBhcnNlclxNYXJrdXBU
b2tlbkJhc2UuaCIKLQkJCQkJPgotCQkJCTwvRmlsZT4KLQkJCQk8RmlsZQogCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHhtbFxwYXJzZXJcTWFya3VwVG9rZW5pemVyQmFzZS5oIgogCQkJCQk+CiAJCQkJ
PC9GaWxlPgpAQCAtNjUwMTAsNiArNjUwMDYsMTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJ
CQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxccGFyc2VyXElucHV0U3RyZWFtUHJl
cHJvY2Vzc29yLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxodG1sXHBhcnNlclxOZXN0aW5nTGV2ZWxJbmNyZW1lbnRlci5oIgogCQkJCQk+
CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2oKaW5kZXggYTRiMmZhYTBkMjE1NWU3NWI1N2JiNmNjMjIxMTA1ODZmM2UwYzNkMC4u
NzNlMTUwMzI5YzhmZGQ3OTcwNWQ4ZDQ3OWZlY2Q3YjVkYTU5MjVmZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC03NTEzLDcgKzc1MTMs
NiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ceG1sXFhTTFRFeHRlbnNpb25zLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx4bWxcWFNMVFByb2Nlc3Nvci5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ceG1sXFhTTFRVbmljb2RlU29ydC5oIiAvPgotICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ceG1sXHBhcnNlclxNYXJrdXBUb2tlbkJhc2UuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHhtbFxwYXJzZXJcTWFya3VwVG9rZW5pemVyQmFzZS5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ceG1sXHBhcnNlclxNYXJrdXBUb2tlbml6
ZXJJbmxpbmVzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx4bWxccGFyc2VyXFhN
TERvY3VtZW50UGFyc2VyLmgiIC8+CkBAIC03OTUzLDYgKzc5NTIsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcSFRNTFRva2VuVHlwZXMuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXEhUTUxUcmVlQnVpbGRlci5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxwYXJzZXJcSFRNTFZpZXdTb3VyY2VQYXJzZXIu
aCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxccGFyc2VyXElucHV0U3RyZWFt
UHJlcHJvY2Vzc29yLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXHBhcnNl
clxOZXN0aW5nTGV2ZWxJbmNyZW1lbnRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caHRtbFxwYXJzZXJcVGV4dERvY3VtZW50UGFyc2VyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxodG1sXHBhcnNlclxUZXh0Vmlld1NvdXJjZVBhcnNlci5oIiAvPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzCmluZGV4IGMzYWRlZDhmMzI4ZjcyZmM3NDAzNGY5NzBkYmJiOTlkMWRhN2NhYWQuLmM3OTJh
ZTAxNDA3ZjNkOWZiNTY0NmI2NzdmZWE3MDYxNjIzMjQxZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTEx
MzEzLDkgKzExMzEzLDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHhtbFxYU0xUVW5p
Y29kZVNvcnQuaCI+CiAgICAgICA8RmlsdGVyPnhtbDwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRl
PgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ceG1sXHBhcnNlclxNYXJrdXBUb2tlbkJhc2Uu
aCI+Ci0gICAgICA8RmlsdGVyPnhtbFxwYXJzZXI8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHhtbFxwYXJzZXJcTWFya3VwVG9rZW5pemVyQmFz
ZS5oIj4KICAgICAgIDxGaWx0ZXI+eG1sXHBhcnNlcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRl
PgpAQCAtMTI2MTIsNiArMTI2MDksOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRt
bFxwYXJzZXJcSFRNTFZpZXdTb3VyY2VQYXJzZXIuaCI+CiAgICAgICA8RmlsdGVyPmh0bWxccGFy
c2VyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxodG1sXHBhcnNlclxJbnB1dFN0cmVhbVByZXByb2Nlc3Nvci5oIj4KKyAgICAgIDxGaWx0ZXI+
aHRtbFxwYXJzZXI8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGh0bWxccGFyc2VyXE5lc3RpbmdMZXZlbEluY3JlbWVudGVyLmgiPgogICAgICAg
PEZpbHRlcj5odG1sXHBhcnNlcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk1Mzgw
ODE3NzYzMGZiYWQwNzdiODU5MzViMjdlMGIyNWFlYTdhZjguLjA3ZWUxNmQwNmQ4NTgzN2VmNTgz
ODNmMzc4YmQ0ZDgxM2M5MGU3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ4LDcgKzQ4LDYgQEAKIAkJMDAxNDYyOEExMDND
RDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwMTQ2Mjg4MTAzQ0QxREUwMDBCMjBEQiAvKiBP
cmlnaW5BY2Nlc3NFbnRyeS5jcHAgKi87IH07CiAJCTAwMTQ2MjhCMTAzQ0QxREUwMDBCMjBEQiAv
KiBPcmlnaW5BY2Nlc3NFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDAxNDYyODkxMDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5
LmggKi87IH07CiAJCTAwM0YxRkVBMTFFNkFCNDMwMDgyNThEOSAvKiBVc2VyQ29udGVudFR5cGVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMDNGMUZF
OTExRTZBQjQzMDA4MjU4RDkgLyogVXNlckNvbnRlbnRUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTAwQTYyOUMxMTNEMEJFQzcwMDUwQUM1
MiAvKiBNYXJrdXBUb2tlbkJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDAwQTYyOUMwMTNEMEJFQzcwMDUwQUM1MiAvKiBNYXJrdXBUb2tlbkJhc2Uu
aCAqLzsgfTsKIAkJMDBCOTMxODcxM0JBOERCMzAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2Vy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwQjkz
MTgxMTNCQTg2N0YwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlci5jcHAgKi87IH07CiAJCTAw
QjkzMTg4MTNCQThEQkEwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDBCOTMxODIxM0JBODY3RjAwMzVB
OTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyLmggKi87IH07CiAJCTAwQjkzMTg5MTNCQThEQkMwMDM1
QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDBCOTMxODMxM0JBODY3RjAwMzVBOTQ4IC8qIFhN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgKi87IH07CkBAIC0xNTYxLDYgKzE1NjAsOCBAQAog
CQk1MTBENEEzNjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEzMDEw
MzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAgKi87IH07CiAJCTUx
MEQ0QTM3MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEzMTEwMzE2NUVF
MDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oICovOyB9OwogCQk1MTBENEEzODEw
MzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEzMjEwMzE2NUVFMDA0OUVB
NTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggKi87IH07CisJCTUxMTI5MzVGM0Q1NEI0
QjUyRkFGOTczRiAvKiBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTEyOTM2MTNENkRCNEI1MkZBRjk3
M0YgLyogSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwICovOyB9OworCQk1MTEyOTM2MDNE
NjBCNEI1MkZBRjk3M0YgLyogSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTI5MzYyM0Q4NUI0QjUyRkFG
OTczRiAvKiBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oICovOyB9OwogCQk1MTFGMjMxNzBE
QzE2MERBMDA0RjAwMzIgLyogU3RvcmFnZVRhc2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjIzMTMwREMxNjBEQTAwNEYwMDMyIC8qIFN0b3Jh
Z2VUYXNrLmNwcCAqLzsgfTsKIAkJNTExRjIzMTgwREMxNjBEQTAwNEYwMDMyIC8qIFN0b3JhZ2VU
YXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFG
MjMxNDBEQzE2MERBMDA0RjAwMzIgLyogU3RvcmFnZVRhc2suaCAqLzsgfTsKIAkJNTExRjIzMTkw
REMxNjBEQTAwNEYwMDMyIC8qIFN0b3JhZ2VUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjIzMTUwREMxNjBEQTAwNEYwMDMyIC8qIFN0
b3JhZ2VUaHJlYWQuY3BwICovOyB9OwpAQCAtMzgxNSw4ICszODE2LDYgQEAKIAkJOUJGOUE4ODEx
NjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCRjlBODdGMTY0OEREMkYw
MDFDNkIyMyAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmggKi87IH07CiAJCTlGMEQ2
QjJFMTIxQkZFQkEwMDZDMDI4OCAvKiBJbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGMEQ2QjJDMTIxQkZFQkEw
MDZDMDI4OCAvKiBJbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcCAqLzsgfTsKIAkJOUYwRDZCMkYx
MjFCRkVCQTAwNkMwMjg4IC8qIEluc3BlY3RvclByb2ZpbGVyQWdlbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGMEQ2QjJEMTIxQkZFQkEwMDZDMDI4
OCAvKiBJbnNwZWN0b3JQcm9maWxlckFnZW50LmggKi87IH07Ci0JCTUxMTI5MzVGM0Q1NEI0QjUy
RkFGOTczRiAvKiBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTEyOTM2MTNENkRCNEI1MkZBRjk3M0Yg
LyogSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwICovOyB9OwotCQk1MTEyOTM2MDNENjBC
NEI1MkZBRjk3M0YgLyogSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTI5MzYyM0Q4NUI0QjUyRkFGOTcz
RiAvKiBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oICovOyB9OwogCQk5RjNCOTQ3RTEyMjQx
NzU4MDA1MzA0RTcgLyogU2NyaXB0SGVhcFNuYXBzaG90LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjNCOTQ3RDEyMjQxNzU4MDA1MzA0RTcgLyogU2Ny
aXB0SGVhcFNuYXBzaG90LmggKi87IH07CiAJCTlGNkZDMTk2MTEyMkU4MkEwMEU4MDE5NiAvKiBT
Y3JpcHREZWJ1Z1NlcnZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5RjZGQzE5NDExMjJFODJBMDBFODAxOTYgLyogU2NyaXB0RGVidWdTZXJ2ZXIu
Y3BwICovOyB9OwogCQk5RjZGQzE5NzExMjJFODJBMDBFODAxOTYgLyogU2NyaXB0RGVidWdTZXJ2
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGNkZD
MTk1MTEyMkU4MkEwMEU4MDE5NiAvKiBTY3JpcHREZWJ1Z1NlcnZlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03Mjk0LDcgKzcyOTMsNiBAQAog
CQkwMDE0NjI4ODEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50cnkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT3JpZ2luQWNjZXNzRW50cnkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMDE0NjI4OTEwM0NEMURFMDAwQjIwREIgLyog
T3JpZ2luQWNjZXNzRW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3Jp
Z2luQWNjZXNzRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDAzRjFGRTkx
MUU2QUI0MzAwODI1OEQ5IC8qIFVzZXJDb250ZW50VHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVXNlckNvbnRlbnRUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkwMEE2MjlDMDEzRDBCRUM3MDA1MEFDNTIgLyogTWFya3VwVG9rZW5CYXNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmt1cFRva2VuQmFzZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwMEI5MzE4MTEzQkE4NjdGMDAzNUE5NDggLyogWE1MRG9j
dW1lbnRQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWE1M
RG9jdW1lbnRQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMEI5MzE4
MjEzQkE4NjdGMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gWE1MRG9jdW1lbnRQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDBCOTMxODMxM0JBODY3RjAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2Vy
TGlieG1sMi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYTUxEb2N1
bWVudFBhcnNlckxpYnhtbDIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODk3
Niw2ICs4OTc0LDggQEAKIAkJNTEwRDRBMzAxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVh
bUhhbmRsZUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU29j
a2V0U3RyZWFtSGFuZGxlQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
MEQ0QTMxMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwRDRBMzIxMDMxNjVFRTAwNDlFQTU0IC8qIFNv
Y2tldFN0cmVhbUhhbmRsZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTExMjkzNjEzRDZEQjRCNTJGQUY5NzNGIC8qIEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckhlYXBQ
cm9maWxlckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTExMjkzNjIz
RDg1QjRCNTJGQUY5NzNGIC8qIEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMUYyMzEzMERDMTYwREEwMDRGMDAzMiAvKiBT
dG9yYWdlVGFzay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9y
YWdlVGFzay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMUYyMzE0MERDMTYw
REEwMDRGMDAzMiAvKiBTdG9yYWdlVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTdG9yYWdlVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTFGMjMx
NTBEQzE2MERBMDA0RjAwMzIgLyogU3RvcmFnZVRocmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlVGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTExMjgyLDggKzExMjgyLDYgQEAKIAkJOUJGOUE4N0YxNjQ4REQyRjAwMUM2
QjIzIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5RjBENkIyQzEyMUJGRUJBMDA2QzAyODggLyogSW5zcGVjdG9y
UHJvZmlsZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bnNwZWN0b3JQcm9maWxlckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OUYwRDZCMkQxMjFCRkVCQTAwNkMwMjg4IC8qIEluc3BlY3RvclByb2ZpbGVyQWdlbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTEyOTM2MTNENkRCNEI1MkZBRjk3M0YgLyog
SW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk1MTEyOTM2MjNEODVCNEI1MkZBRjk3M0YgLyogSW5zcGVjdG9ySGVh
cFByb2ZpbGVyQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVj
dG9ySGVhcFByb2ZpbGVyQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUYz
Qjk0N0QxMjI0MTc1ODAwNTMwNEU3IC8qIFNjcmlwdEhlYXBTbmFwc2hvdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRIZWFwU25hcHNob3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOUY2RkMxOTQxMTIyRTgyQTAwRTgwMTk2IC8qIFNjcmlwdERlYnVn
U2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdERl
YnVnU2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUY2RkMxOTUxMTIy
RTgyQTAwRTgwMTk2IC8qIFNjcmlwdERlYnVnU2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNjcmlwdERlYnVnU2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMTcxNyw2ICsxMTcxNSw3IEBACiAJCUE4NzQ4QkRGMTJDQkYyREMwMDFGQkE0MSAv
KiBIYXNoVG9vbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFzaFRvb2xz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4NzQ4RDY2MTJDQzM3NjMwMDFGQkE0
MSAvKiBJbWFnZU9yaWVudGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEltYWdlT3JpZW50YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTg3NDhE
NzQxMkNDM0Y4OTAwMUZCQTQxIC8qIEltYWdlT3JpZW50YXRpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VPcmllbnRhdGlvbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE4ODA1QUYxMTZDOTZBRUEwMDBFOUQ5OCAvKiBJbnB1dFN0cmVh
bVByZXByb2Nlc3Nvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvci5o
OyBwYXRoID0gcGFyc2VyL0lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE4ODJEQTFGMTU5Mzg0NkEwMDAxMTVFRCAvKiBDU1NUb1N0eWxlTWFw
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1RvU3R5bGVNYXAu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODgyREEyMjE1OTM4NDhEMDAwMTE1
RUQgLyogQ1NTVG9TdHlsZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
U1NUb1N0eWxlTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4ODNERjI1MEYz
RDA0NUQwMEYxOUJGNiAvKiBWaXNpYmxlU2VsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFZpc2libGVTZWxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTQ1NzAsNyArMTQ1NjksNiBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKIAkJCQk5N0I4RkZDRjE2QUU3RjkyMDAzODM4OEQgLyogQ2hhcmFjdGVy
UmVmZXJlbmNlUGFyc2VySW5saW5lcy5oICovLAotCQkJCTAwQTYyOUMwMTNEMEJFQzcwMDUwQUM1
MiAvKiBNYXJrdXBUb2tlbkJhc2UuaCAqLywKIAkJCQkwMEM2MEU0MTEzRDc5N0FFMDA5MkEyNzUg
LyogTWFya3VwVG9rZW5pemVyQmFzZS5oICovLAogCQkJCTAwQzYwRTNFMTNENzZEN0UwMDkyQTI3
NSAvKiBNYXJrdXBUb2tlbml6ZXJJbmxpbmVzLmggKi8sCiAJCQkJMDBCOTMxODExM0JBODY3RjAw
MzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyLmNwcCAqLywKQEAgLTE0ODY0LDkgKzE0ODYyLDkg
QEAKIAkJMTRERkIzM0YwQTdERjc2MzAwMThGNzY5IC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQ0RBOThEQ0QxNjAxNTE1
QzAwRkVBM0IxIC8qIEVuY3J5cHRlZE1lZGlhICovLAogCQkJCUE4M0I3OTEwMENDQjAwMUIwMDBC
MDgyNSAvKiBDb3JlICovLAogCQkJCUE4M0I3OTBFMENDQUZGOTcwMDBCMDgyNSAvKiBDU1MgKi8s
CisJCQkJQ0RBOThEQ0QxNjAxNTE1QzAwRkVBM0IxIC8qIEVuY3J5cHRlZE1lZGlhICovLAogCQkJ
CUE4M0I3OTEyMENDQjAwM0YwMDBCMDgyNSAvKiBFdmVudHMgKi8sCiAJCQkJODk4Nzg1NzYxMjJD
QTFEQTAwM0FBQkRBIC8qIEZpbGVBUEkgKi8sCiAJCQkJQTgzQjc5MDgwQ0NBRkYyQjAwMEIwODI1
IC8qIEhUTUwgKi8sCkBAIC0xNTU2OSwxMCArMTU1NjcsMTAgQEAKIAkJCQlBN0JGN0VERTE0Qzkx
NzVBMDAxNDQ4OUQgLyogSW50ZXJuYWxTZXR0aW5ncy5pZGwgKi8sCiAJCQkJQTdCRTdFREQxNEM5
MTc1QTAwMTQ0ODlEIC8qIE1hbGxvY1N0YXRpc3RpY3MuaCAqLywKIAkJCQlBN0JFN0VERTE0Qzkx
NzVBMDAxNDQ4OUQgLyogTWFsbG9jU3RhdGlzdGljcy5pZGwgKi8sCi0JCQkJRUIwODFDRDgxNjk2
MDg0NDAwNTUzNzMwIC8qIFR5cGVDb252ZXJzaW9ucy5oICovLAotCQkJCUVCMDgxQ0Q5MTY5NjA4
NDQwMDU1MzczMCAvKiBUeXBlQ29udmVyc2lvbnMuaWRsICovLAogCQkJCUNEQzI2QjNDMTYwQTYy
QjAwMDI2NzU3QiAvKiBNb2NrQ0RNLmNwcCAqLywKIAkJCQlDREMyNkIzRDE2MEE2MkIwMDAyNjc1
N0IgLyogTW9ja0NETS5oICovLAorCQkJCUVCMDgxQ0Q4MTY5NjA4NDQwMDU1MzczMCAvKiBUeXBl
Q29udmVyc2lvbnMuaCAqLywKKwkJCQlFQjA4MUNEOTE2OTYwODQ0MDA1NTM3MzAgLyogVHlwZUNv
bnZlcnNpb25zLmlkbCAqLywKIAkJCSk7CiAJCQlwYXRoID0gdGVzdGluZzsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CkBAIC0xODc0OCw2ICsxODc0Niw3IEBACiAJCQkJOTc3QjM3MjIxMjI4
NzIxNzAwQjgxRkY4IC8qIEhUTUxUcmVlQnVpbGRlci5oICovLAogCQkJCTk3N0IzODYwMTIyODgz
RTkwMEI4MUZGOCAvKiBIVE1MVmlld1NvdXJjZVBhcnNlci5jcHAgKi8sCiAJCQkJOTc3QjM4NjEx
MjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxWaWV3U291cmNlUGFyc2VyLmggKi8sCisJCQkJQTg4MDVB
RjExNkM5NkFFQTAwMEU5RDk4IC8qIElucHV0U3RyZWFtUHJlcHJvY2Vzc29yLmggKi8sCiAJCQkJ
OEEzMDlDOUUxMjM5NTBCRTAwQ0I5MjA0IC8qIE5lc3RpbmdMZXZlbEluY3JlbWVudGVyLmggKi8s
CiAJCQkJOTdCQzg0ODExMjM2RkQ5MzAwMEM2MTYxIC8qIFRleHREb2N1bWVudFBhcnNlci5jcHAg
Ki8sCiAJCQkJOTdCQzg0ODIxMjM2RkQ5MzAwMEM2MTYxIC8qIFRleHREb2N1bWVudFBhcnNlci5o
ICovLApAQCAtMjE1MzgsMTIgKzIxNTM3LDEyIEBACiAJCQkJOTM1QzQ3NjcwOUFDNEQ0MzAwQTZB
QUI0IC8qIFBsYXRmb3JtTW91c2VFdmVudC5oICovLAogCQkJCUM1QkFDMTZGMTRFMzBFNDcwMDAw
ODgzNyAvKiBQbGF0Zm9ybVBhc3RlYm9hcmQuaCAqLywKIAkJCQlCQ0VDMDFENjBDMjc0RUI0MDA5
RjRFQzkgLyogUGxhdGZvcm1TY3JlZW4uaCAqLywKLQkJCQkyOTdCRTNEOTE2QzA0M0Q4MDAzMzE2
QkQgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHAgKi8sCi0JCQkJMjlFNEQ4REYxNkIw
OTQwRjAwQzg0NzA0IC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaCAqLywKLQkJCQkyNTI3
Q0M5MzE2QkY5MkVDMDA5RERBQzAgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAg
Ki8sCi0JCQkJMjUyN0NDOTIxNkJGOTBCNDAwOUREQUMwIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVm9pY2UuaCAqLywKIAkJCQkyNTI3Q0M5NTE2QkY5NUREMDA5RERBQzAgLyogUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwICovLAogCQkJCTI1MjdDQzkxMTZCRjhCQTEwMDlE
REFDMCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oICovLAorCQkJCTI1MjdD
QzkzMTZCRjkyRUMwMDlEREFDMCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcCAq
LywKKwkJCQkyNTI3Q0M5MjE2QkY5MEI0MDA5RERBQzAgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNWb2ljZS5oICovLAorCQkJCTI5N0JFM0Q5MTZDMDQzRDgwMDMzMTZCRCAvKiBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyLmNwcCAqLywKKwkJCQkyOUU0RDhERjE2QjA5NDBGMDBDODQ3MDQgLyog
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oICovLAogCQkJCTFBRDhGODFBMTFDQUI5RTkwMEU5
M0U1NCAvKiBQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwICovLAogCQkJCTFBRDhGODE5MTFDQUI5RTkw
MEU5M0U1NCAvKiBQbGF0Zm9ybVN0cmF0ZWdpZXMuaCAqLywKIAkJCQk5MzVDNDc2QTA5QUM0RDRG
MDBBNkFBQjQgLyogUGxhdGZvcm1XaGVlbEV2ZW50LmggKi8sCkBAIC0yMTYzMyw2ICsyMTYzMiw4
IEBACiAJCUNEQTk4REJEMTYwMTRFMDgwMEZFQTNCMSAvKiBlbmNyeXB0ZWRtZWRpYSAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0RBOThFMDkxNjAzQ0Q1
OTAwRkVBM0IxIC8qIENETS5jcHAgKi8sCisJCQkJQ0RBOThFMEExNjAzQ0Q1OTAwRkVBM0IxIC8q
IENETS5oICovLAogCQkJCUNEQTk4REQ1MTYwMjVCRUQwMEZFQTNCMSAvKiBNZWRpYUtleU1lc3Nh
Z2VFdmVudC5jcHAgKi8sCiAJCQkJQ0RBOThERDYxNjAyNUJFRDAwRkVBM0IxIC8qIE1lZGlhS2V5
TWVzc2FnZUV2ZW50LmggKi8sCiAJCQkJQ0RBOThERDcxNjAyNUJFRTAwRkVBM0IxIC8qIE1lZGlh
S2V5TWVzc2FnZUV2ZW50LmlkbCAqLywKQEAgLTIxNjQ1LDggKzIxNjQ2LDYgQEAKIAkJCQlDREE5
OERDNzE2MDE0RjJDMDBGRUEzQjEgLyogTWVkaWFLZXlTZXNzaW9uLmNwcCAqLywKIAkJCQlDREE5
OERDODE2MDE0RjJDMDBGRUEzQjEgLyogTWVkaWFLZXlTZXNzaW9uLmggKi8sCiAJCQkJQ0RBOThE
QzkxNjAxNEY0MDAwRkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5pZGwgKi8sCi0JCQkJQ0RBOThF
MDkxNjAzQ0Q1OTAwRkVBM0IxIC8qIENETS5jcHAgKi8sCi0JCQkJQ0RBOThFMEExNjAzQ0Q1OTAw
RkVBM0IxIC8qIENETS5oICovLAogCQkJCUNEQTk4RTBDMTYwM0NGM0MwMEZFQTNCMSAvKiBNb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gZW5j
cnlwdGVkbWVkaWE7CkBAIC0yMzA4Nyw4ICsyMzA4Niw4IEBACiAJCQkJNTNFRDNGREYxNjdBODhF
NzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTc0MEI1OTUxNEM5MzVBQjAwQTc3RkE0IC8qIEpTTWFsbG9jU3RhdGlzdGljcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRUJGNTEyMUQxNjk2NDk2QzAwNTZCRDI1IC8qIEpTVHlwZUNvbnZl
cnNpb25zLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTgxNUMxRjEzODMxOTgzMDA1N0FBQTQgLyog
V2ViQ29yZVRlc3RTdXBwb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMyNkI0MTE2MEE4Q0NF
MDAyNjc1N0IgLyogTW9ja0NETS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE4MTVDMUYxMzgzMTk4
MzAwNTdBQUE0IC8qIFdlYkNvcmVUZXN0U3VwcG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNTMw
MCw3ICsyNTI5OSw2IEBACiAJCQkJMUE4RjZCQzYwREI1NUNEQzAwMURCNzk0IC8qIE1hbmlmZXN0
UGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOURGODA5OUU2NDkyMDA1NkU1ODEgLyog
bWFya3VwLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzI4QzMxNDEyNjhFNDM5MDA0MUU4OUIgLyog
TWFya3VwQWNjdW11bGF0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTAwQTYyOUMxMTNEMEJFQzcw
MDUwQUM1MiAvKiBNYXJrdXBUb2tlbkJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTAwQzYwRTQy
MTNENzk3QUUwMDkyQTI3NSAvKiBNYXJrdXBUb2tlbml6ZXJCYXNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwMEM2MEUzRjEzRDc2RDdFMDA5MkEyNzUgLyogTWFya3VwVG9rZW5pemVySW5saW5lcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkFCRTcyRjUxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjY4MjIsOCArMjY4MjAsOCBAQAogCQkJCTUzRUQz
RkRFMTY3QTg4RTcwMDY3NjJFNiAvKiBKU0ludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTc0MEI1OTcxNEM5MzVBRjAwQTc3RkE0IC8qIEpTTWFsbG9jU3Rh
dGlzdGljcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFQkY1MTIxQzE2OTY0OTZDMDA1NkJEMjUg
LyogSlNUeXBlQ29udmVyc2lvbnMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE4MTVDMUUxMzgz
MTk4MzAwNTdBQUE0IC8qIFdlYkNvcmVUZXN0U3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlDREMyNkI0MDE2MEE4Q0M2MDAyNjc1N0IgLyogTW9ja0NETS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk0MTgxNUMxRTEzODMxOTgzMDA1N0FBQTQgLyogV2ViQ29yZVRlc3RTdXBwb3J0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpAQCAtMjY5ODAsNiArMjY5NzgsNyBAQAogCQkJCTQ5NDg0RkNEMTAyQ0Yy
M0MwMDE4N0REMyAvKiBDYW52YXNTdHlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzlEMDg2
QzE2MkYyMUY5MDBEQjg2NTggLyogQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTY1NTBCNjlEMDk5REYwMjcwMDkwRDc4MSAvKiBDREFUQVNlY3Rpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBOThFMEIxNjAzQ0Q2MDAwRkVBM0IxIC8qIENETS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5N0JDNjlEQzE1MDVGMDc2MDAxQjc0QUMgLyogQ2hhbmdlVmVy
c2lvbldyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTVGRkUxMkIwMjY3NjAwQzFB
MzU5IC8qIENoYW5uZWxNZXJnZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDAx
MTJCMDI2NzYwMEMxQTM1OSAvKiBDaGFubmVsU3BsaXR0ZXJOb2RlLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMjgyOTEsNyArMjgyOTAsMTIgQEAKIAkJCQlDRDI3RjZFNTE0NTc2ODVBMDA3ODIwN0Qg
LyogSlNNZWRpYUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQyM0ExMjUxM0Y1
RkE1OTAwRjY3MDAxIC8qIEpTTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUU0NDYxNDE4MENENjgyNjkwMEZBREE3NSAvKiBKU01lZGlhRXJyb3IuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBOThEQTMxNjAxNDY0MTAwRkVBM0IxIC8qIEpTTWVkaWFL
ZXlFcnJvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREI4NTlGQTE2MEQ0OTQ5MDBFNUIwN0Yg
LyogSlNNZWRpYUtleUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQTk4RERGMTYwMjZB
MzcwMEZFQTNCMSAvKiBKU01lZGlhS2V5TWVzc2FnZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUNEQTk4REUwMTYwMjZBMzcwMEZFQTNCMSAvKiBKU01lZGlhS2V5TmVlZGVkRXZlbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBOThFMDQxNjAzOUUxQTAwRkVBM0IxIC8qIEpTTWVkaWFL
ZXlzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQTk4RTA2MTYwMzlFMUYwMEZFQTNCMSAvKiBK
U01lZGlhS2V5U2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzNDMzlCNjBDMEQzRDhE
MDA1RjREN0EgLyogSlNNZWRpYUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ2NEUwNkMx
MzVFQzEwNjAwRkRCMDBBIC8qIEpTTWVkaWFMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUQzQTk0QTQ2MTIyREM0MEYwMEEzN0JCQyAvKiBKU01lZGlhUXVlcnlMaXN0LmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMjg3MTAsNiArMjg3MTQsMTAgQEAKIAkJCQk0RTE5NTkyMTBBMzlEQUJB
MDAyMjBGRTUgLyogTWVkaWFGZWF0dXJlTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDdB
NkQxRUIxNDkxMTM3NzAwMDUxRDBDIC8qIE1lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQ0RCODU5RjcxNjBENDhBNDAwRTVCMDdGIC8qIE1lZGlhS2V5RXZlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBOThERDgxNjAyNUJFRjAwRkVBM0IxIC8qIE1lZGlh
S2V5TWVzc2FnZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEMUI0QTY1MTYwNzg2QUUw
MDI4MkRGOSAvKiBNZWRpYUtleU5lZWRlZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNE
QTk4RTBEMTYwM0ZFNEEwMEZFQTNCMSAvKiBNZWRpYUtleXMuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQ0RBOThFMEUxNjAzRkU1ODAwRkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBOEVBODAwOTBBMTk1MTZFMDBBOEVGNUYgLyogTWVkaWFMaXN0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUU0NDYxM0UzMENENjgxOUYwMEZBREE3NSAvKiBNZWRpYVBsYXll
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzJDOEIxMTEzMUM1MTg2MDBBNEZDRTkgLyogTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjg4NTUs
MTAgKzI4ODYzLDEwIEBACiAJCQkJNDFCRjcwMEYwRkU4NkY2MTAwNUU4REVDIC8qIFBsYXRmb3Jt
TWVzc2FnZVBvcnRDaGFubmVsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1OTg5MDJFMTRFOUIw
RjgwMEU4RDE4QiAvKiBQbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQlCQzk0RDEwODBDMjc0Rjg4MDA2QkM2MTcgLyogUGxhdGZvcm1TY3JlZW5NYWMubW0gaW4gU291
cmNlcyAqLywKLQkJCQkyOTM0OTQwQTE2QzAyQzA3MDA5MDEzMTggLyogUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNWb2ljZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOTM0OTQwQjE2QzAyQzBBMDA5
MDEzMTggLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJMjk3QkUzRDgxNkMwM0NDRTAwMzMxNkJEIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXJNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQkyOTM0OTQwQTE2QzAyQzA3MDA5MDEzMTgg
LyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQky
OTdCRTNEQTE2QzA0M0Q4MDAzMzE2QkQgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkyOTdCRTNEODE2QzAzQ0NFMDAzMzE2QkQgLyogUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBRDhGODFDMTFDQUI5
RTkwMEU5M0U1NCAvKiBQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTlDNkU0RjMwRDc0NUU0ODAwNjQ0MkU5IC8qIFBsdWdpbkRhdGEuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTcyMDVBQkIxMjM5MjkyNzAwQjE3MzgwIC8qIFBsdWdpbkRvY3VtZW50LmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMjk2NzEsMTYgKzI5Njc5LDYgQEAKIAkJCQk5NzdFMkUwRTEyRjBGQzlD
MDBDMTMzNzkgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdFMkUwRTEy
RjBGQzlDMDBDMTMzODAgLyogWFNTQXVkaXRvckRlbGVnYXRlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUZENTM3MzUyMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQlDREE5OERBMzE2MDE0NjQxMDBGRUEzQjEgLyogSlNNZWRpYUtleUVycm9yLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCUNEQTk4REQ4MTYwMjVCRUYwMEZFQTNCMSAvKiBNZWRpYUtleU1l
c3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlDREE5OERERjE2MDI2QTM3MDBGRUEz
QjEgLyogSlNNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlDREE5
OERFMDE2MDI2QTM3MDBGRUEzQjEgLyogSlNNZWRpYUtleU5lZWRlZEV2ZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCUNEQTk4RTA0MTYwMzlFMUEwMEZFQTNCMSAvKiBKU01lZGlhS2V5cy5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQlDREE5OEUwNjE2MDM5RTFGMDBGRUEzQjEgLyogSlNNZWRpYUtl
eVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQ0RBOThFMEIxNjAzQ0Q2MDAwRkVBM0Ix
IC8qIENETS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlDREE5OEUwRDE2MDNGRTRBMDBGRUEzQjEg
LyogTWVkaWFLZXlzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUNEQTk4RTBFMTYwM0ZFNTgwMEZF
QTNCMSAvKiBNZWRpYUtleVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQ0QxQjRBNjUx
NjA3ODZBRTAwMjgyREY5IC8qIE1lZGlhS2V5TmVlZGVkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNl
ci5jcHAKaW5kZXggZGFlYmRiODdlOWI0NDI4MDRhYTZlMTQ3ZTBmMGIzNDMzZWIyMGRhOC4uOWJh
MWQwNTI0N2M4MjZhYzhhYzlmYWU0N2E5NGYwZDQ0YWMwNDMwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcApAQCAtMTA2LDEy
ICsxMDYsOCBAQCB2b2lkIEJhY2tncm91bmRIVE1MUGFyc2VyOjpmb3JjZVBsYWludGV4dEZvclRl
eHREb2N1bWVudCgpCiAKIHZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6Om1hcmtFbmRPZkZpbGUo
KQogewotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCB1c2UgSW5wdXRTdHJlYW1QcmVwcm9jZXNz
b3I6OmVuZE9mRmlsZU1hcmtlcgotICAgIC8vIG9uY2UgSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3Ig
aXMgc3BsaXQgb2ZmIGludG8gaXRzIG93biBoZWFkZXIuCi0gICAgY29uc3QgTENoYXIgZW5kT2ZG
aWxlTWFya2VyID0gMDsKLQogICAgIEFTU0VSVCghbV9pbnB1dC5jdXJyZW50KCkuaXNDbG9zZWQo
KSk7Ci0gICAgbV9pbnB1dC5hcHBlbmQoU3RyaW5nKCZlbmRPZkZpbGVNYXJrZXIsIDEpKTsKKyAg
ICBtX2lucHV0LmFwcGVuZChTdHJpbmcoJmtFbmRPZkZpbGVNYXJrZXIsIDEpKTsKICAgICBtX2lu
cHV0LmNsb3NlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxJbnB1dFN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElucHV0
U3RyZWFtLmgKaW5kZXggNTkzMjkwYmNmNThlYTE2MGZlNmZiYzVmZjBlY2M5NTJmMGI5NGIzNS4u
NDZmZDhjNDM4NzRkMDdmNjk4MGRiZDIxN2ViMjdlNThjYmQ5MGFmYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTElucHV0U3RyZWFtLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTElucHV0U3RyZWFtLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNp
Zm5kZWYgSFRNTElucHV0U3RyZWFtX2gKICNkZWZpbmUgSFRNTElucHV0U3RyZWFtX2gKIAorI2lu
Y2x1ZGUgIklucHV0U3RyZWFtUHJlcHJvY2Vzc29yLmgiCiAjaW5jbHVkZSAiU2VnbWVudGVkU3Ry
aW5nLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTcyLDEwICs3Myw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgbWFya0VuZE9mRmlsZSgpCiAgICAgewotICAgICAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgdXNlIElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIKLSAg
ICAgICAgLy8gb25jZSBJbnB1dFN0cmVhbVByZXByb2Nlc3NvciBpcyBzcGxpdCBvZmYgaW50byBp
dHMgb3duIGhlYWRlci4KLSAgICAgICAgc3RhdGljIGNvbnN0IExDaGFyIGVuZE9mRmlsZU1hcmtl
ciA9IDA7Ci0gICAgICAgIG1fbGFzdC0+YXBwZW5kKFNlZ21lbnRlZFN0cmluZyhTdHJpbmcoJmVu
ZE9mRmlsZU1hcmtlciwgMSkpKTsKKyAgICAgICAgbV9sYXN0LT5hcHBlbmQoU2VnbWVudGVkU3Ry
aW5nKFN0cmluZygma0VuZE9mRmlsZU1hcmtlciwgMSkpKTsKICAgICAgICAgbV9sYXN0LT5jbG9z
ZSgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaAppbmRleCA0
YWZhMTYwMTdmOTM3MzMzODYyYjliOTI3MTUzM2Y2N2VkMzRkMzMzLi5iZmJkZTIwNDgzNDI2MTU3
N2ZlN2RjZGViM2MwMDAwNWQwNzY2NGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MVG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
VG9rZW4uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
LCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xl
LCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI2LDkgKzI2LDkgQEAKICNpZm5kZWYgSFRNTFRva2VuX2gKICNkZWZpbmUgSFRNTFRv
a2VuX2gKIAorI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkNvbXBhY3RIVE1MVG9r
ZW4uaCIKICNpbmNsdWRlICJIVE1MVG9rZW5UeXBlcy5oIgotI2luY2x1ZGUgIk1hcmt1cFRva2Vu
QmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogCkBAIC01MiwyMCArNTIsMTEwIEBAIHB1YmxpYzoKICAgICBib29sIG1fZm9yY2VRdWly
a3M7CiB9OwogCi1jbGFzcyBIVE1MVG9rZW4gOiBwdWJsaWMgTWFya3VwVG9rZW5CYXNlPEhUTUxU
b2tlblR5cGVzPiB7CitzdGF0aWMgaW5saW5lIEF0dHJpYnV0ZSogZmluZEF0dHJpYnV0ZUluVmVj
dG9yKFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVzLCBjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhdHRyaWJ1dGVzLnNpemUoKTsg
KytpKSB7CisgICAgICAgIGlmIChhdHRyaWJ1dGVzLmF0KGkpLm5hbWUoKS5tYXRjaGVzKG5hbWUp
KQorICAgICAgICAgICAgcmV0dXJuICZhdHRyaWJ1dGVzLmF0KGkpOworICAgIH0KKyAgICByZXR1
cm4gMDsKK30KKworY2xhc3MgSFRNTFRva2VuIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShI
VE1MVG9rZW4pOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHZv
aWQgYXBwZW5kVG9OYW1lKFVDaGFyIGNoYXJhY3RlcikKKyAgICB0eXBlZGVmIEhUTUxUb2tlblR5
cGVzIFR5cGU7CisKKyAgICBjbGFzcyBBdHRyaWJ1dGUgeworICAgIHB1YmxpYzoKKyAgICAgICAg
Y2xhc3MgUmFuZ2UgeworICAgICAgICBwdWJsaWM6CisgICAgICAgICAgICBpbnQgbV9zdGFydDsK
KyAgICAgICAgICAgIGludCBtX2VuZDsKKyAgICAgICAgfTsKKworICAgICAgICBSYW5nZSBtX25h
bWVSYW5nZTsKKyAgICAgICAgUmFuZ2UgbV92YWx1ZVJhbmdlOworICAgICAgICBXVEY6OlZlY3Rv
cjxVQ2hhciwgMzI+IG1fbmFtZTsKKyAgICAgICAgV1RGOjpWZWN0b3I8VUNoYXIsIDMyPiBtX3Zh
bHVlOworICAgIH07CisKKyAgICB0eXBlZGVmIFdURjo6VmVjdG9yPEF0dHJpYnV0ZSwgMTA+IEF0
dHJpYnV0ZUxpc3Q7CisgICAgdHlwZWRlZiBXVEY6OlZlY3RvcjxVQ2hhciwgMTAyND4gRGF0YVZl
Y3RvcjsKKworICAgIEhUTUxUb2tlbigpIHsgY2xlYXIoKTsgfQorCisgICAgdm9pZCBjbGVhcigp
CiAgICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRh
ZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRv
a2VuVHlwZXM6OkRPQ1RZUEUpOwotICAgICAgICBNYXJrdXBUb2tlbkJhc2U8SFRNTFRva2VuVHlw
ZXM+OjphcHBlbmRUb05hbWUoY2hhcmFjdGVyKTsKKyAgICAgICAgbV90eXBlID0gVHlwZTo6VW5p
bml0aWFsaXplZDsKKyAgICAgICAgbV9yYW5nZS5tX3N0YXJ0ID0gMDsKKyAgICAgICAgbV9yYW5n
ZS5tX2VuZCA9IDA7CisgICAgICAgIG1fYmFzZU9mZnNldCA9IDA7CisgICAgICAgIG1fZGF0YS5j
bGVhcigpOworICAgICAgICBtX29yQWxsRGF0YSA9IDA7CisgICAgfQorCisgICAgYm9vbCBpc1Vu
aW5pdGlhbGl6ZWQoKSB7IHJldHVybiBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlVuaW5pdGlh
bGl6ZWQ7IH0KKyAgICBIVE1MVG9rZW5UeXBlczo6VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlOyB9CisKKyAgICB2b2lkIG1ha2VFbmRPZkZpbGUoKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCk7CisgICAgICAgIG1f
dHlwZSA9IEhUTUxUb2tlblR5cGVzOjpFbmRPZkZpbGU7CisgICAgfQorCisgICAgLyogUmFuZ2Ug
YW5kIG9mZnNldCBtZXRob2RzIGV4cG9zZWQgZm9yIEhUTUxTb3VyY2VUcmFja2VyIGFuZCBIVE1M
Vmlld1NvdXJjZVBhcnNlciAqLworICAgIGludCBzdGFydEluZGV4KCkgY29uc3QgeyByZXR1cm4g
bV9yYW5nZS5tX3N0YXJ0OyB9CisgICAgaW50IGVuZEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9y
YW5nZS5tX2VuZDsgfQorCisgICAgdm9pZCBzZXRCYXNlT2Zmc2V0KGludCBvZmZzZXQpCisgICAg
eworICAgICAgICBtX2Jhc2VPZmZzZXQgPSBvZmZzZXQ7CisgICAgfQorCisgICAgdm9pZCBlbmQo
aW50IGVuZE9mZnNldCkKKyAgICB7CisgICAgICAgIG1fcmFuZ2UubV9lbmQgPSBlbmRPZmZzZXQg
LSBtX2Jhc2VPZmZzZXQ7CisgICAgfQorCisgICAgY29uc3QgRGF0YVZlY3RvciYgZGF0YSgpIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpDaGFy
YWN0ZXIgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpDb21tZW50IHx8IG1fdHlwZSA9PSBI
VE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpFbmRU
YWcpOworICAgICAgICByZXR1cm4gbV9kYXRhOworICAgIH0KKworICAgIGJvb2wgaXNBbGw4Qml0
RGF0YSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gKG1fb3JBbGxEYXRhIDw9IDB4ZmYp
OwogICAgIH0KIAogICAgIGNvbnN0IERhdGFWZWN0b3ImIG5hbWUoKSBjb25zdAogICAgIHsKICAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBl
ID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpE
T0NUWVBFKTsKLSAgICAgICAgcmV0dXJuIE1hcmt1cFRva2VuQmFzZTxIVE1MVG9rZW5UeXBlcz46
Om5hbWUoKTsKKyAgICAgICAgcmV0dXJuIG1fZGF0YTsKICAgICB9CiAKKyAgICB2b2lkIGFwcGVu
ZFRvTmFtZShVQ2hhciBjaGFyYWN0ZXIpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09
IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkVu
ZFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOworICAgICAgICBBU1NF
UlQoY2hhcmFjdGVyKTsKKyAgICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXIpOworICAgICAg
ICBtX29yQWxsRGF0YSB8PSBjaGFyYWN0ZXI7CisgICAgfQorCisgICAgLy8gRklYTUU6IFJlbmFt
ZSB0aGlzIHRvIGNvcHlOYW1lQXNTdHJpbmcoKS4KKyAgICBTdHJpbmcgbmFtZVN0cmluZygpIGNv
bnN0CisgICAgeworICAgICAgICBpZiAoIW1fZGF0YS5zaXplKCkpCisgICAgICAgICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgaWYgKGlzQWxsOEJpdERhdGEoKSkKKyAgICAgICAg
ICAgIHJldHVybiBTdHJpbmc6Om1ha2U4Qml0RnJvbTE2Qml0U291cmNlKG1fZGF0YS5kYXRhKCks
IG1fZGF0YS5zaXplKCkpOworICAgICAgICByZXR1cm4gU3RyaW5nKG1fZGF0YS5kYXRhKCksIG1f
ZGF0YS5zaXplKCkpOworICAgIH0KKworICAgIC8qIERPQ1RZUEUgVG9rZW5zICovCisKICAgICBi
b29sIGZvcmNlUXVpcmtzKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
SFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOwpAQCAtMTQyLDcgKzIzMiwyMTAgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gbV9kb2N0eXBlRGF0YS5yZWxlYXNlKCk7CiAgICAgfQogCisgICAgLyog
U3RhcnQvRW5kIFRhZyBUb2tlbnMgKi8KKworICAgIGJvb2wgc2VsZkNsb3NpbmcoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcg
fHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOworICAgICAgICByZXR1cm4gbV9z
ZWxmQ2xvc2luZzsKKyAgICB9CisKKyAgICB2b2lkIHNldFNlbGZDbG9zaW5nKCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlw
ZSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKKyAgICAgICAgbV9zZWxmQ2xvc2luZyA9IHRy
dWU7CisgICAgfQorCisgICAgdm9pZCBiZWdpblN0YXJ0VGFnKFVDaGFyIGNoYXJhY3RlcikKKyAg
ICB7CisgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOworICAgICAgICBBU1NFUlQobV90eXBlID09
IEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkKTsKKyAgICAgICAgbV90eXBlID0gSFRNTFRv
a2VuVHlwZXM6OlN0YXJ0VGFnOworICAgICAgICBtX3NlbGZDbG9zaW5nID0gZmFsc2U7CisgICAg
ICAgIG1fY3VycmVudEF0dHJpYnV0ZSA9IDA7CisgICAgICAgIG1fYXR0cmlidXRlcy5jbGVhcigp
OworCisgICAgICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICAgICAgbV9vckFsbERh
dGEgfD0gY2hhcmFjdGVyOworICAgIH0KKworICAgIHZvaWQgYmVnaW5FbmRUYWcoTENoYXIgY2hh
cmFjdGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6
VW5pbml0aWFsaXplZCk7CisgICAgICAgIG1fdHlwZSA9IEhUTUxUb2tlblR5cGVzOjpFbmRUYWc7
CisgICAgICAgIG1fc2VsZkNsb3NpbmcgPSBmYWxzZTsKKyAgICAgICAgbV9jdXJyZW50QXR0cmli
dXRlID0gMDsKKyAgICAgICAgbV9hdHRyaWJ1dGVzLmNsZWFyKCk7CisKKyAgICAgICAgbV9kYXRh
LmFwcGVuZChjaGFyYWN0ZXIpOworICAgIH0KKworICAgIHZvaWQgYmVnaW5FbmRUYWcoY29uc3Qg
VmVjdG9yPExDaGFyLCAzMj4mIGNoYXJhY3RlcnMpCisgICAgeworICAgICAgICBBU1NFUlQobV90
eXBlID09IEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkKTsKKyAgICAgICAgbV90eXBlID0g
SFRNTFRva2VuVHlwZXM6OkVuZFRhZzsKKyAgICAgICAgbV9zZWxmQ2xvc2luZyA9IGZhbHNlOwor
ICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUgPSAwOworICAgICAgICBtX2F0dHJpYnV0ZXMuY2xl
YXIoKTsKKworICAgICAgICBtX2RhdGEuYXBwZW5kVmVjdG9yKGNoYXJhY3RlcnMpOworICAgIH0K
KworICAgIHZvaWQgYWRkTmV3QXR0cmlidXRlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBl
czo6RW5kVGFnKTsKKyAgICAgICAgbV9hdHRyaWJ1dGVzLmdyb3cobV9hdHRyaWJ1dGVzLnNpemUo
KSArIDEpOworICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUgPSAmbV9hdHRyaWJ1dGVzLmxhc3Qo
KTsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV9uYW1lUmFu
Z2UubV9zdGFydCA9IDA7CisgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV9uYW1lUmFuZ2Uu
bV9lbmQgPSAwOworICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX3N0
YXJ0ID0gMDsKKyAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlUmFuZ2UubV9lbmQg
PSAwOworI2VuZGlmCisgICAgfQorCisgICAgdm9pZCBiZWdpbkF0dHJpYnV0ZU5hbWUoaW50IG9m
ZnNldCkKKyAgICB7CisgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV9uYW1lUmFuZ2UubV9z
dGFydCA9IG9mZnNldCAtIG1fYmFzZU9mZnNldDsKKyAgICB9CisKKyAgICB2b2lkIGVuZEF0dHJp
YnV0ZU5hbWUoaW50IG9mZnNldCkKKyAgICB7CisgICAgICAgIGludCBpbmRleCA9IG9mZnNldCAt
IG1fYmFzZU9mZnNldDsKKyAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX25hbWVSYW5nZS5t
X2VuZCA9IGluZGV4OworICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5t
X3N0YXJ0ID0gaW5kZXg7CisgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdl
Lm1fZW5kID0gaW5kZXg7CisgICAgfQorCisgICAgdm9pZCBiZWdpbkF0dHJpYnV0ZVZhbHVlKGlu
dCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5n
ZS5tX3N0YXJ0ID0gb2Zmc2V0IC0gbV9iYXNlT2Zmc2V0OworI2lmbmRlZiBOREVCVUcKKyAgICAg
ICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlUmFuZ2UubV9lbmQgPSAwOworI2VuZGlmCisg
ICAgfQorCisgICAgdm9pZCBlbmRBdHRyaWJ1dGVWYWx1ZShpbnQgb2Zmc2V0KQorICAgIHsKKyAg
ICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlUmFuZ2UubV9lbmQgPSBvZmZzZXQgLSBt
X2Jhc2VPZmZzZXQ7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRUb0F0dHJpYnV0ZU5hbWUoVUNo
YXIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7CisgICAgICAg
IEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBI
VE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBh
YmxlIHRvIGFkZCB0aGUgZm9sbG93aW5nIEFTU0VSVCBvbmNlIHdlIGZpeAorICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI5NzEKKyAgICAgICAgLy8g
ICBBU1NFUlQobV9jdXJyZW50QXR0cmlidXRlLT5tX25hbWVSYW5nZS5tX3N0YXJ0KTsKKyAgICAg
ICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX25hbWUuYXBwZW5kKGNoYXJhY3Rlcik7CisgICAgfQor
CisgICAgdm9pZCBhcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKFVDaGFyIGNoYXJhY3RlcikKKyAgICB7
CisgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOworICAgICAgICBBU1NFUlQobV90eXBlID09IEhU
TUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRh
Zyk7CisgICAgICAgIEFTU0VSVChtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX3N0
YXJ0KTsKKyAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlLmFwcGVuZChjaGFyYWN0
ZXIpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShzaXplX3QgaSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVCghdmFsdWUuaXNFbXB0
eSgpKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcg
fHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOworICAgICAgICBtX2F0dHJpYnV0
ZXNbaV0ubV92YWx1ZS5hcHBlbmQodmFsdWUuY2hhcmFjdGVycygpLCB2YWx1ZS5sZW5ndGgoKSk7
CisgICAgfQorCisgICAgY29uc3QgQXR0cmlidXRlTGlzdCYgYXR0cmlidXRlcygpIGNvbnN0Cisg
ICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8
fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CisgICAgICAgIHJldHVybiBtX2F0
dHJpYnV0ZXM7CisgICAgfQorCisgICAgLy8gVXNlZCBieSB0aGUgWFNTQXVkaXRvciB0byBudWtl
IFhTUy1sYWRlbiBhdHRyaWJ1dGVzLgorICAgIHZvaWQgZXJhc2VWYWx1ZU9mQXR0cmlidXRlKHNp
emVfdCBpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6
U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOworICAgICAgICBt
X2F0dHJpYnV0ZXNbaV0ubV92YWx1ZS5jbGVhcigpOworICAgIH0KKworICAgIC8qIENoYXJhY3Rl
ciBUb2tlbnMgKi8KKworICAgIC8vIFN0YXJ0aW5nIGEgY2hhcmFjdGVyIHRva2VuIHdvcmtzIHNs
aWdodGx5IGRpZmZlcmVudGx5IHRoYW4gc3RhcnRpbmcKKyAgICAvLyBvdGhlciB0eXBlcyBvZiB0
b2tlbnMgYmVjYXVzZSB3ZSB3YW50IHRvIHNhdmUgYSBwZXItY2hhcmFjdGVyIGJyYW5jaC4KKyAg
ICB2b2lkIGVuc3VyZUlzQ2hhcmFjdGVyVG9rZW4oKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
dHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCB8fCBtX3R5cGUgPT0gSFRNTFRv
a2VuVHlwZXM6OkNoYXJhY3Rlcik7CisgICAgICAgIG1fdHlwZSA9IEhUTUxUb2tlblR5cGVzOjpD
aGFyYWN0ZXI7CisgICAgfQorCisgICAgY29uc3QgRGF0YVZlY3RvciYgY2hhcmFjdGVycygpIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpDaGFy
YWN0ZXIpOworICAgICAgICByZXR1cm4gbV9kYXRhOworICAgIH0KKworICAgIHZvaWQgYXBwZW5k
VG9DaGFyYWN0ZXIoY2hhciBjaGFyYWN0ZXIpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBl
ID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpOworICAgICAgICBtX2RhdGEuYXBwZW5kKGNo
YXJhY3Rlcik7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRUb0NoYXJhY3RlcihVQ2hhciBjaGFy
YWN0ZXIpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpD
aGFyYWN0ZXIpOworICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rlcik7CisgICAgICAgIG1f
b3JBbGxEYXRhIHw9IGNoYXJhY3RlcjsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZFRvQ2hhcmFj
dGVyKGNvbnN0IFZlY3RvcjxMQ2hhciwgMzI+JiBjaGFyYWN0ZXJzKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKTsKKyAgICAgICAgbV9k
YXRhLmFwcGVuZFZlY3RvcihjaGFyYWN0ZXJzKTsKKyAgICB9CisKKyAgICAvKiBDb21tZW50IFRv
a2VucyAqLworCisgICAgY29uc3QgRGF0YVZlY3RvciYgY29tbWVudCgpIGNvbnN0CisgICAgewor
ICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpDb21tZW50KTsKKyAgICAg
ICAgcmV0dXJuIG1fZGF0YTsKKyAgICB9CisKKyAgICB2b2lkIGJlZ2luQ29tbWVudCgpCisgICAg
eworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVk
KTsKKyAgICAgICAgbV90eXBlID0gSFRNTFRva2VuVHlwZXM6OkNvbW1lbnQ7CisgICAgfQorCisg
ICAgdm9pZCBhcHBlbmRUb0NvbW1lbnQoVUNoYXIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKGNoYXJhY3Rlcik7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlw
ZXM6OkNvbW1lbnQpOworICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rlcik7CisgICAgICAg
IG1fb3JBbGxEYXRhIHw9IGNoYXJhY3RlcjsKKyAgICB9CisKKyAgICB2b2lkIGVyYXNlQ2hhcmFj
dGVycygpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpD
aGFyYWN0ZXIpOworICAgICAgICBtX2RhdGEuY2xlYXIoKTsKKyAgICAgICAgbV9vckFsbERhdGEg
PSAwOworICAgIH0KKwogcHJpdmF0ZToKKyAgICBIVE1MVG9rZW5UeXBlczo6VHlwZSBtX3R5cGU7
CisgICAgQXR0cmlidXRlOjpSYW5nZSBtX3JhbmdlOyAvLyBBbHdheXMgc3RhcnRzIGF0IHplcm8u
CisgICAgaW50IG1fYmFzZU9mZnNldDsKKyAgICBEYXRhVmVjdG9yIG1fZGF0YTsKKyAgICBVQ2hh
ciBtX29yQWxsRGF0YTsKKworICAgIC8vIEZvciBTdGFydFRhZyBhbmQgRW5kVGFnCisgICAgYm9v
bCBtX3NlbGZDbG9zaW5nOworICAgIEF0dHJpYnV0ZUxpc3QgbV9hdHRyaWJ1dGVzOworCisgICAg
Ly8gQSBwb2ludGVyIGludG8gbV9hdHRyaWJ1dGVzIHVzZWQgZHVyaW5nIGxleGluZy4KKyAgICBB
dHRyaWJ1dGUqIG1fY3VycmVudEF0dHJpYnV0ZTsKKwogICAgIC8vIEZvciBET0NUWVBFCiAgICAg
T3duUHRyPERvY3R5cGVEYXRhPiBtX2RvY3R5cGVEYXRhOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlblR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MVG9rZW5UeXBlcy5oCmluZGV4IDFhZWQyMWIxNTA2Yjk0NjhhODllNjQy
YmI4YWJjY2FkZmExNGNkYjcuLjQwYjI0MzVjNjFlYjZhZWMyYzhjNDAwOTIwNTBmY2ZjMWM5ZjRk
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlblR5cGVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuVHlwZXMuaApAQCAt
MjYsOSArMjYsNiBAQAogI2lmbmRlZiBIVE1MVG9rZW5UeXBlc19oCiAjZGVmaW5lIEhUTUxUb2tl
blR5cGVzX2gKIAotI2luY2x1ZGUgIk1hcmt1cFRva2VuQmFzZS5oIgotI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxUb2tlblR5
cGVzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAKaW5k
ZXggMzlhNDE2M2E3ZTIzNGY5ZTk4MTgzOWI5ZWQ4ZjQzNGEzY2U1NDFjYi4uM2M2YzQ0Y2I2OTFh
MDM2OTlkM2E4YWM0NTRjZTc3MWRiNzM4MDBlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFRva2VuaXplci5jcHAKQEAgLTI1Myw3ICsyNTMsNyBAQCBib29sIEhUTUxUb2tl
bml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tl
bikKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIEhUTUxfQURWQU5DRV9UTyhUYWdPcGVuU3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYgKGNj
ID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpCisgICAgICAgIH0g
ZWxzZSBpZiAoY2MgPT0ga0VuZE9mRmlsZU1hcmtlcikKICAgICAgICAgICAgIHJldHVybiBlbWl0
RW5kT2ZGaWxlKHNvdXJjZSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYnVmZmVyQ2hh
cmFjdGVyKGNjKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRU
b2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAg
ICAgIEhUTUxfQURWQU5DRV9UTyhDaGFyYWN0ZXJSZWZlcmVuY2VJblJDREFUQVN0YXRlKTsKICAg
ICAgICAgZWxzZSBpZiAoY2MgPT0gJzwnKQogICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFJD
REFUQUxlc3NUaGFuU2lnblN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJl
YW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0g
a0VuZE9mRmlsZU1hcmtlcikKICAgICAgICAgICAgIHJldHVybiBlbWl0RW5kT2ZGaWxlKHNvdXJj
ZSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKGNjKTsKQEAg
LTI5Myw3ICsyOTMsNyBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRT
dHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICBIVE1MX0JFR0lOX1NUQVRFKFJB
V1RFWFRTdGF0ZSkgewogICAgICAgICBpZiAoY2MgPT0gJzwnKQogICAgICAgICAgICAgSFRNTF9B
RFZBTkNFX1RPKFJBV1RFWFRMZXNzVGhhblNpZ25TdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNj
ID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpCisgICAgICAgIGVs
c2UgaWYgKGNjID09IGtFbmRPZkZpbGVNYXJrZXIpCiAgICAgICAgICAgICByZXR1cm4gZW1pdEVu
ZE9mRmlsZShzb3VyY2UpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJh
Y3RlcihjYyk7CkBAIC0zMDUsNyArMzA1LDcgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9r
ZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgSFRNTF9C
RUdJTl9TVEFURShTY3JpcHREYXRhU3RhdGUpIHsKICAgICAgICAgaWYgKGNjID09ICc8JykKICAg
ICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhTGVzc1RoYW5TaWduU3RhdGUpOwot
ICAgICAgICBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxl
TWFya2VyKQorICAgICAgICBlbHNlIGlmIChjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKQogICAgICAg
ICAgICAgcmV0dXJuIGVtaXRFbmRPZkZpbGUoc291cmNlKTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2MpOwpAQCAtMzE1LDEwICszMTUsOSBAQCBib29sIEhU
TUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2Vu
JiB0b2tlbikKICAgICBFTkRfU1RBVEUoKQogCiAgICAgSFRNTF9CRUdJTl9TVEFURShQTEFJTlRF
WFRTdGF0ZSkgewotICAgICAgICBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVu
ZE9mRmlsZU1hcmtlcikKKyAgICAgICAgaWYgKGNjID09IGtFbmRPZkZpbGVNYXJrZXIpCiAgICAg
ICAgICAgICByZXR1cm4gZW1pdEVuZE9mRmlsZShzb3VyY2UpOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2MpOworICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2Mp
OwogICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oUExBSU5URVhUU3RhdGUpOwogICAgIH0KICAgICBF
TkRfU1RBVEUoKQpAQCAtMzYwLDcgKzM1OSw3IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRv
a2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICB9
IGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAg
ICAgICAgSFRNTF9BRFZBTkNFX1RPKERhdGFTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2Mg
PT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgeworICAgICAgICB9
IGVsc2UgaWYgKGNjID09IGtFbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJy
b3IoKTsKICAgICAgICAgICAgIGJ1ZmZlckNoYXJhY3RlcignPCcpOwogICAgICAgICAgICAgYnVm
ZmVyQ2hhcmFjdGVyKCcvJyk7CkBAIC0zODQsNyArMzgzLDcgQEAgYm9vbCBIVE1MVG9rZW5pemVy
OjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAg
ICAgICAgIGVsc2UgaWYgKGlzQVNDSUlVcHBlcihjYykpIHsKICAgICAgICAgICAgIG1fdG9rZW4t
PmFwcGVuZFRvTmFtZSh0b0xvd2VyQ2FzZShjYykpOwogICAgICAgICAgICAgSFRNTF9BRFZBTkNF
X1RPKFRhZ05hbWVTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1Q
cmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgeworICAgICAgICB9IGVsc2UgaWYgKGNjID09
IGtFbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAg
ICAgIEhUTUxfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC02
MTcsNyArNjE2LDcgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3Ry
aW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICBIVE1MX0FEVkFOQ0Vf
VE8oU2NyaXB0RGF0YUVzY2FwZWREYXNoU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGNjID09
ICc8JykKICAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZExlc3NU
aGFuU2lnblN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9j
ZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgeworICAgICAgICBlbHNlIGlmIChjYyA9PSBrRW5kT2ZG
aWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBIVE1M
X1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewpAQCAtNjMzLDcgKzYz
Miw3IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291
cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlw
dERhdGFFc2NhcGVkRGFzaERhc2hTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJzwn
KQogICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkTGVzc1RoYW5T
aWduU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nv
cjo6ZW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAgIGVsc2UgaWYgKGNjID09IGtFbmRPZkZpbGVN
YXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIEhUTUxfUkVD
T05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC02NTIsNyArNjUxLDcg
QEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2Us
IEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAg
ICAgICAgYnVmZmVyQ2hhcmFjdGVyKGNjKTsKICAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhT
Y3JpcHREYXRhU3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJl
cHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBr
RW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAg
ICBIVE1MX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewpAQCAtNzY2
LDcgKzc2NSw3IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmlu
ZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc8
JykgewogICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKGNjKTsKICAgICAgICAgICAgIEhUTUxf
QURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZExlc3NUaGFuU2lnblN0YXRlKTsKLSAg
ICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxl
TWFya2VyKSB7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0ga0VuZE9mRmlsZU1hcmtlcikgewog
ICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4o
RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTc4Myw3ICs3ODIsNyBAQCBib29sIEhU
TUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2Vu
JiB0b2tlbikKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPCcpIHsKICAgICAgICAgICAgIGJ1
ZmZlckNoYXJhY3RlcihjYyk7CiAgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2NyaXB0RGF0
YURvdWJsZUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2Mg
PT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgeworICAgICAgICB9
IGVsc2UgaWYgKGNjID09IGtFbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJy
b3IoKTsKICAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAg
IH0gZWxzZSB7CkBAIC04MDMsNyArODAyLDcgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9r
ZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIH0g
ZWxzZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAgICAgICBidWZmZXJDaGFyYWN0ZXIoY2MpOwog
ICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNjcmlwdERhdGFTdGF0ZSk7Ci0gICAgICAgIH0g
ZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikg
eworICAgICAgICB9IGVsc2UgaWYgKGNjID09IGtFbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAg
ICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKERhdGFTdGF0
ZSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC04NTcsNyArODU2LDcgQEAgYm9vbCBIVE1MVG9rZW5p
emVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4p
CiAgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkF0dHJpYnV0ZU5hbWUoc291cmNlLm51bWJlck9m
Q2hhcmFjdGVyc0NvbnN1bWVkKCkpOwogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRy
aWJ1dGVOYW1lKHRvTG93ZXJDYXNlKGNjKSk7CiAgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8o
QXR0cmlidXRlTmFtZVN0YXRlKTsKLSAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVh
bVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAgIH0gZWxzZSBpZiAoY2Mg
PT0ga0VuZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAg
ICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oRGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKQEAg
LTg5MCw3ICs4ODksNyBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRT
dHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgfSBlbHNlIGlmIChpc0FT
Q0lJVXBwZXIoY2MpKSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZU5h
bWUodG9Mb3dlckNhc2UoY2MpKTsKICAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhBdHRyaWJ1
dGVOYW1lU3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJv
Y2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBrRW5k
T2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBt
X3Rva2VuLT5lbmRBdHRyaWJ1dGVOYW1lKHNvdXJjZS5udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1l
ZCgpKTsKICAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CkBAIC05MTks
NyArOTE4LDcgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5n
JiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkF0
dHJpYnV0ZU5hbWUoc291cmNlLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkpOwogICAgICAg
ICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVOYW1lKHRvTG93ZXJDYXNlKGNjKSk7CiAg
ICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQXR0cmlidXRlTmFtZVN0YXRlKTsKLSAgICAgICAg
fSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2Vy
KSB7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0ga0VuZE9mRmlsZU1hcmtlcikgewogICAgICAg
ICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgSFRNTF9SRUNPTlNVTUVfSU4oRGF0YVN0
YXRlKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTk0OCw3ICs5NDcsNyBAQCBib29sIEhUTUxUb2tl
bml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tl
bikKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAgIHBhcnNlRXJy
b3IoKTsKICAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9r
ZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRT
dHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgeworICAgICAgICB9IGVsc2UgaWYg
KGNjID09IGtFbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAg
ICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7
CkBAIC05NjgsNyArOTY3LDcgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVu
dGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIH0gZWxzZSBpZiAo
Y2MgPT0gJyYnKSB7CiAgICAgICAgICAgICBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID0g
JyInOwogICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKENoYXJhY3RlclJlZmVyZW5jZUluQXR0
cmlidXRlVmFsdWVTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1Q
cmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgeworICAgICAgICB9IGVsc2UgaWYgKGNjID09
IGtFbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAg
ICAgIG1fdG9rZW4tPmVuZEF0dHJpYnV0ZVZhbHVlKHNvdXJjZS5udW1iZXJPZkNoYXJhY3RlcnND
b25zdW1lZCgpKTsKICAgICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CkBA
IC05ODYsNyArOTg1LDcgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVk
U3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIH0gZWxzZSBpZiAoY2Mg
PT0gJyYnKSB7CiAgICAgICAgICAgICBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID0gJ1wn
JzsKICAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJp
YnV0ZVZhbHVlU3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJl
cHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBr
RW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAg
ICBtX3Rva2VuLT5lbmRBdHRyaWJ1dGVWYWx1ZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29u
c3VtZWQoKSk7CiAgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwpAQCAt
MTAwNyw3ICsxMDA2LDcgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVk
U3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIH0gZWxzZSBpZiAoY2Mg
PT0gJz4nKSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5lbmRBdHRyaWJ1dGVWYWx1ZShzb3VyY2Uu
bnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7CiAgICAgICAgICAgICByZXR1cm4gZW1pdEFu
ZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwotICAgICAg
ICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJr
ZXIpIHsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKSB7CiAgICAg
ICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5lbmRBdHRyaWJ1dGVW
YWx1ZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7CiAgICAgICAgICAgICBI
VE1MX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwpAQCAtMTA1Nyw3ICsxMDU2LDcgQEAgYm9vbCBI
VE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tl
biYgdG9rZW4pCiAgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRN
TFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChtX29wdGlvbnMu
dXNlUHJlSFRNTDVQYXJzZXJRdWlya3MgJiYgY2MgPT0gJzwnKQogICAgICAgICAgICAgcmV0dXJu
IGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRl
KTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9m
RmlsZU1hcmtlcikgeworICAgICAgICBlbHNlIGlmIChjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKSB7
CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9J
TihEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgewpAQCAtMTA3MSw3ICsxMDcwLDcgQEAgYm9v
bCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxU
b2tlbiYgdG9rZW4pCiAgICAgICAgIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAgIG1fdG9r
ZW4tPnNldFNlbGZDbG9zaW5nKCk7CiAgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUlu
KHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwotICAgICAgICB9IGVsc2Ug
aWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAg
ICAgICAgfSBlbHNlIGlmIChjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBw
YXJzZUVycm9yKCk7CiAgICAgICAgICAgICBIVE1MX1JFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwog
ICAgICAgICB9IGVsc2UgewpAQCAtMTA5MCw3ICsxMDg5LDcgQEAgYm9vbCBIVE1MVG9rZW5pemVy
OjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAg
ICAgSFRNTF9CRUdJTl9TVEFURShDb250aW51ZUJvZ3VzQ29tbWVudFN0YXRlKSB7CiAgICAgICAg
IGlmIChjYyA9PSAnPicpCiAgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJj
ZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9
PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKQorICAgICAgICBlbHNl
IGlmIChjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKQogICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRS
ZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoY2MpOwpAQCAt
MTEzOCw3ICsxMTM3LDcgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVk
U3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIGVsc2UgaWYgKGNjID09
ICc+JykgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgcmV0dXJuIGVt
aXRBbmRSZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKLSAg
ICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxl
TWFya2VyKSB7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0ga0VuZE9mRmlsZU1hcmtlcikgewog
ICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNv
bnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAg
fSBlbHNlIHsKQEAgLTExNTQsNyArMTE1Myw3IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRv
a2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICBl
bHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAg
ICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRh
dGFTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNz
b3I6OmVuZE9mRmlsZU1hcmtlcikgeworICAgICAgICB9IGVsc2UgaWYgKGNjID09IGtFbmRPZkZp
bGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIHJldHVy
biBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0
ZSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0xMTY4LDcgKzExNjcsNyBAQCBib29sIEhUTUxUb2tl
bml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tl
bikKICAgICBIVE1MX0JFR0lOX1NUQVRFKENvbW1lbnRTdGF0ZSkgewogICAgICAgICBpZiAoY2Mg
PT0gJy0nKQogICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKENvbW1lbnRFbmREYXNoU3RhdGUp
OwotICAgICAgICBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZG
aWxlTWFya2VyKSB7CisgICAgICAgIGVsc2UgaWYgKGNjID09IGtFbmRPZkZpbGVNYXJrZXIpIHsK
ICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVj
b25zdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAg
IH0gZWxzZSB7CkBAIC0xMTgxLDcgKzExODAsNyBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRU
b2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICBIVE1M
X0JFR0lOX1NUQVRFKENvbW1lbnRFbmREYXNoU3RhdGUpIHsKICAgICAgICAgaWYgKGNjID09ICct
JykKICAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhDb21tZW50RW5kU3RhdGUpOwotICAgICAg
ICBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2Vy
KSB7CisgICAgICAgIGVsc2UgaWYgKGNjID09IGtFbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAg
ICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4o
c291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7
CkBAIC0xMjAyLDcgKzEyMDEsNyBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdt
ZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIHBhcnNl
RXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOwogICAg
ICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKENvbW1lbnRFbmRTdGF0ZSk7Ci0gICAgICAgIH0gZWxz
ZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewor
ICAgICAgICB9IGVsc2UgaWYgKGNjID09IGtFbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAg
IHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291
cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CkBA
IC0xMjIzLDcgKzEyMjIsNyBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50
ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIEhUTUxfQURW
QU5DRV9UTyhDb21tZW50RW5kRGFzaFN0YXRlKTsKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAn
PicpCiAgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2Vu
aXplclN0YXRlOjpEYXRhU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVh
bVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAgIGVsc2UgaWYgKGNjID09
IGtFbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAg
ICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6
OkRhdGFTdGF0ZSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0xMjM5LDcgKzEyMzgsNyBAQCBib29s
IEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRv
a2VuJiB0b2tlbikKICAgICBIVE1MX0JFR0lOX1NUQVRFKERPQ1RZUEVTdGF0ZSkgewogICAgICAg
ICBpZiAoaXNUb2tlbml6ZXJXaGl0ZXNwYWNlKGNjKSkKICAgICAgICAgICAgIEhUTUxfQURWQU5D
RV9UTyhCZWZvcmVET0NUWVBFTmFtZVN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPT0gSW5w
dXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgeworICAgICAgICBlbHNlIGlm
IChjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAg
ICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkRPQ1RZUEUoKTsKICAgICAgICAgICAgIG1fdG9rZW4t
PnNldEZvcmNlUXVpcmtzKCk7CkBAIC0xMjYyLDcgKzEyNjEsNyBAQCBib29sIEhUTUxUb2tlbml6
ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikK
ICAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luRE9DVFlQRSgpOwogICAgICAgICAgICAgbV90b2tl
bi0+c2V0Rm9yY2VRdWlya3MoKTsKICAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4o
c291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBp
ZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgeworICAg
ICAgICB9IGVsc2UgaWYgKGNjID09IGtFbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBh
cnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luRE9DVFlQRSgpOwogICAgICAg
ICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKQEAgLTEyODIsNyArMTI4MSw3IEBAIGJv
b2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1M
VG9rZW4mIHRva2VuKQogICAgICAgICBlbHNlIGlmIChpc0FTQ0lJVXBwZXIoY2MpKSB7CiAgICAg
ICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb05hbWUodG9Mb3dlckNhc2UoY2MpKTsKICAgICAgICAg
ICAgIEhUTUxfQURWQU5DRV9UTyhET0NUWVBFTmFtZVN0YXRlKTsKLSAgICAgICAgfSBlbHNlIGlm
IChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CisgICAg
ICAgIH0gZWxzZSBpZiAoY2MgPT0ga0VuZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAgcGFy
c2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKICAgICAg
ICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3Rh
dGU6OkRhdGFTdGF0ZSk7CkBAIC0xMjk4LDcgKzEyOTcsNyBAQCBib29sIEhUTUxUb2tlbml6ZXI6
Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAg
ICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVOYW1lU3RhdGUpOwogICAgICAg
ICBpZiAoY2MgPT0gJz4nKQogICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3Vy
Y2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2Mg
PT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgeworICAgICAgICBl
bHNlIGlmIChjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9y
KCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwogICAgICAgICAgICAg
cmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0
YVN0YXRlKTsKQEAgLTEzNDIsNyArMTM0MSw3IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRv
a2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAg
ICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsK
ICAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVy
U3RhdGU6OkRhdGFTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1Q
cmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgeworICAgICAgICB9IGVsc2UgaWYgKGNjID09
IGtFbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAg
ICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7CiAgICAgICAgICAgICByZXR1cm4gZW1pdEFu
ZFJlY29uc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwpAQCAt
MTM2Nyw3ICsxMzY2LDcgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVk
U3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICBwYXJzZUVycm9y
KCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwogICAgICAgICAgICAg
cmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0
YXRlKTsKLSAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6
ZW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0ga0VuZE9mRmlsZU1h
cmtlcikgewogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+
c2V0Rm9yY2VRdWlya3MoKTsKICAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4o
c291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CkBAIC0xMzg2LDcgKzEzODUs
NyBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJj
ZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAg
ICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7CiAgICAgICAgICAgICByZXR1cm4gZW1pdEFu
ZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwotICAgICAg
ICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJr
ZXIpIHsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKSB7CiAgICAg
ICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJr
cygpOwogICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxU
b2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKQEAgLTE0MDQsNyArMTQwMyw3IEBAIGJvb2wgSFRN
TFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4m
IHRva2VuKQogICAgICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+
c2V0Rm9yY2VRdWlya3MoKTsKICAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291
cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAo
Y2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgeworICAgICAg
ICB9IGVsc2UgaWYgKGNjID09IGtFbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNl
RXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7CiAgICAgICAg
ICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRl
OjpEYXRhU3RhdGUpOwpAQCAtMTQyOCw3ICsxNDI3LDcgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpu
ZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAg
ICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRTeXN0ZW1JZGVu
dGlmaWVyVG9FbXB0eVN0cmluZygpOwogICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKERPQ1RZ
UEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYg
KGNjID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAg
ICAgfSBlbHNlIGlmIChjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJz
ZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwogICAgICAg
ICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0
ZTo6RGF0YVN0YXRlKTsKQEAgLTE0NTEsNyArMTQ1MCw3IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6
bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAg
ICAgICB9IGVsc2UgaWYgKGNjID09ICdcJycpIHsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldFN5
c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7CiAgICAgICAgICAgICBIVE1MX0FEVkFOQ0Vf
VE8oRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7Ci0gICAgICAgIH0g
ZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikg
eworICAgICAgICB9IGVsc2UgaWYgKGNjID09IGtFbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAg
ICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7
CiAgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgSFRNTFRva2Vu
aXplclN0YXRlOjpEYXRhU3RhdGUpOwpAQCAtMTQ3OCw3ICsxNDc3LDcgQEAgYm9vbCBIVE1MVG9r
ZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9r
ZW4pCiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAgICAgICBtX3Rva2VuLT5zZXRG
b3JjZVF1aXJrcygpOwogICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2Us
IEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKLSAgICAgICAgfSBlbHNlIGlmIChjYyA9
PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAgIH0g
ZWxzZSBpZiAoY2MgPT0ga0VuZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAgcGFyc2VFcnJv
cigpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKICAgICAgICAgICAg
IHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRh
dGFTdGF0ZSk7CkBAIC0xNTAzLDcgKzE1MDIsNyBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRU
b2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAg
ICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNldEZvcmNlUXVpcmtzKCk7
CiAgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXpl
clN0YXRlOjpEYXRhU3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYgKGNjID09IElucHV0U3RyZWFt
UHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9
PSBrRW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAg
ICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwogICAgICAgICAgICAgcmV0dXJuIGVtaXRB
bmRSZWNvbnN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKQEAg
LTE1MjIsNyArMTUyMSw3IEBAIGJvb2wgSFRNTFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRl
ZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgcGFyc2VFcnJv
cigpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWlya3MoKTsKICAgICAgICAgICAg
IHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFT
dGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6
OmVuZE9mRmlsZU1hcmtlcikgeworICAgICAgICB9IGVsc2UgaWYgKGNjID09IGtFbmRPZkZpbGVN
YXJrZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4t
PnNldEZvcmNlUXVpcmtzKCk7CiAgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUlu
KHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwpAQCAtMTU0MCw3ICsxNTM5
LDcgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3Vy
Y2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICBwYXJzZUVycm9yKCk7CiAgICAgICAg
ICAgICBtX3Rva2VuLT5zZXRGb3JjZVF1aXJrcygpOwogICAgICAgICAgICAgcmV0dXJuIGVtaXRB
bmRSZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKLSAgICAg
ICAgfSBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFy
a2VyKSB7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0ga0VuZE9mRmlsZU1hcmtlcikgewogICAg
ICAgICAgICAgcGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbV90b2tlbi0+c2V0Rm9yY2VRdWly
a3MoKTsKICAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBIVE1M
VG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CkBAIC0xNTU2LDcgKzE1NTUsNyBAQCBib29sIEhU
TUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2Vu
JiB0b2tlbikKICAgICAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVTeXN0ZW1J
ZGVudGlmaWVyU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCiAgICAgICAgICAg
ICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRh
U3RhdGUpOwotICAgICAgICBlbHNlIGlmIChjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6
ZW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAgIGVsc2UgaWYgKGNjID09IGtFbmRPZkZpbGVNYXJr
ZXIpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgIG1fdG9rZW4tPnNl
dEZvcmNlUXVpcmtzKCk7CiAgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNv
dXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwpAQCAtMTU3MCw3ICsxNTY5LDcg
QEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2Us
IEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgSFRNTF9CRUdJTl9TVEFURShCb2d1c0RPQ1RZUEVTdGF0
ZSkgewogICAgICAgICBpZiAoY2MgPT0gJz4nKQogICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRS
ZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKLSAgICAgICAg
ZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikK
KyAgICAgICAgZWxzZSBpZiAoY2MgPT0ga0VuZE9mRmlsZU1hcmtlcikKICAgICAgICAgICAgIHJl
dHVybiBlbWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFT
dGF0ZSk7CiAgICAgICAgIEhUTUxfQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7CiAgICAg
fQpAQCAtMTU3OSw3ICsxNTc4LDcgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9rZW4oU2Vn
bWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4pCiAgICAgSFRNTF9CRUdJTl9T
VEFURShDREFUQVNlY3Rpb25TdGF0ZSkgewogICAgICAgICBpZiAoY2MgPT0gJ10nKQogICAgICAg
ICAgICAgSFRNTF9BRFZBTkNFX1RPKENEQVRBU2VjdGlvblJpZ2h0U3F1YXJlQnJhY2tldFN0YXRl
KTsKLSAgICAgICAgZWxzZSBpZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9m
RmlsZU1hcmtlcikKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0ga0VuZE9mRmlsZU1hcmtlcikKICAg
ICAgICAgICAgIEhUTUxfUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgYnVmZmVyQ2hhcmFjdGVyKGNjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0lucHV0U3RyZWFtUHJlcHJvY2Vzc29yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9JbnB1dFN0cmVhbVByZXByb2Nlc3Nvci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhYThk
MjJkMDI3ODk3YmNkZjk5NDMwMDVkMzc0MDhkMDQ1ZTIwYjQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9JbnB1dFN0cmVhbVByZXByb2Nlc3Nvci5oCkBAIC0w
LDAgKzEsMTMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4g
aHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xl
LCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3JfaAorI2RlZmlu
ZSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcl9oCisKKyNpbmNsdWRlICJTZWdtZW50ZWRTdHJpbmcu
aCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Citjb25zdCBVQ2hhciBrRW5kT2ZGaWxlTWFya2VyID0gMDsKKworLy8gaHR0cDovL3d3dy53aGF0
d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jcHJlcHJvY2Vzc2luZy10aGUtaW5w
dXQtc3RyZWFtCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVG9rZW5pemVyPgorY2xhc3MgSW5wdXRTdHJl
YW1QcmVwcm9jZXNzb3IgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKElucHV0U3RyZWFtUHJl
cHJvY2Vzc29yKTsKK3B1YmxpYzoKKyAgICBJbnB1dFN0cmVhbVByZXByb2Nlc3NvcihUb2tlbml6
ZXIqIHRva2VuaXplcikKKyAgICAgICAgOiBtX3Rva2VuaXplcih0b2tlbml6ZXIpCisgICAgewor
ICAgICAgICByZXNldCgpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgVUNoYXIgbmV4dElu
cHV0Q2hhcmFjdGVyKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0SW5wdXRDaGFyYWN0ZXI7IH0KKwor
ICAgIC8vIFJldHVybnMgd2hldGhlciB3ZSBzdWNjZWVkZWQgaW4gcGVla2luZyBhdCB0aGUgbmV4
dCBjaGFyYWN0ZXIuCisgICAgLy8gVGhlIG9ubHkgd2F5IHdlIGNhbiBmYWlsIHRvIHBlZWsgaXMg
aWYgdGhlcmUgYXJlIG5vIG1vcmUKKyAgICAvLyBjaGFyYWN0ZXJzIGluIHxzb3VyY2V8IChhZnRl
ciBjb2xsYXBzaW5nIFxyXG4sIGV0YykuCisgICAgQUxXQVlTX0lOTElORSBib29sIHBlZWsoU2Vn
bWVudGVkU3RyaW5nJiBzb3VyY2UpCisgICAgeworICAgIFBlZWtBZ2FpbjoKKyAgICAgICAgbV9u
ZXh0SW5wdXRDaGFyYWN0ZXIgPSBzb3VyY2UuY3VycmVudENoYXIoKTsKKworICAgICAgICAvLyBF
dmVyeSBicmFuY2ggaW4gdGhpcyBmdW5jdGlvbiBpcyBleHBlbnNpdmUsIHNvIHdlIGhhdmUgYQor
ICAgICAgICAvLyBmYXN0LXJlamVjdCBicmFuY2ggZm9yIGNoYXJhY3RlcnMgdGhhdCBkb24ndCBy
ZXF1aXJlIHNwZWNpYWwKKyAgICAgICAgLy8gaGFuZGxpbmcuIFBsZWFzZSBydW4gdGhlIHBhcnNl
ciBiZW5jaG1hcmsgd2hlbmV2ZXIgeW91IHRvdWNoCisgICAgICAgIC8vIHRoaXMgZnVuY3Rpb24u
IEl0J3MgdmVyeSBob3QuCisgICAgICAgIHN0YXRpYyBjb25zdCBVQ2hhciBzcGVjaWFsQ2hhcmFj
dGVyTWFzayA9ICdcbicgfCAnXHInIHwgJ1wwJzsKKyAgICAgICAgaWYgKG1fbmV4dElucHV0Q2hh
cmFjdGVyICYgfnNwZWNpYWxDaGFyYWN0ZXJNYXNrKSB7CisgICAgICAgICAgICBtX3NraXBOZXh0
TmV3TGluZSA9IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAobV9uZXh0SW5wdXRDaGFyYWN0ZXIgPT0gJ1xuJyAmJiBtX3NraXBOZXh0TmV3
TGluZSkgeworICAgICAgICAgICAgbV9za2lwTmV4dE5ld0xpbmUgPSBmYWxzZTsKKyAgICAgICAg
ICAgIHNvdXJjZS5hZHZhbmNlUGFzdE5ld2xpbmVBbmRVcGRhdGVMaW5lTnVtYmVyKCk7CisgICAg
ICAgICAgICBpZiAoc291cmNlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICBtX25leHRJbnB1dENoYXJhY3RlciA9IHNvdXJjZS5jdXJyZW50Q2hh
cigpOworICAgICAgICB9CisgICAgICAgIGlmIChtX25leHRJbnB1dENoYXJhY3RlciA9PSAnXHIn
KSB7CisgICAgICAgICAgICBtX25leHRJbnB1dENoYXJhY3RlciA9ICdcbic7CisgICAgICAgICAg
ICBtX3NraXBOZXh0TmV3TGluZSA9IHRydWU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBtX3NraXBOZXh0TmV3TGluZSA9IGZhbHNlOworICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBz
cGVjIGluZGljYXRlcyB0aGF0IHRoZSBzdXJyb2dhdGUgcGFpciByYW5nZSBhcyB3ZWxsIGFzCisg
ICAgICAgICAgICAvLyBhIG51bWJlciBvZiBzcGVjaWZpYyBjaGFyYWN0ZXIgdmFsdWVzIGFyZSBw
YXJzZSBlcnJvcnMgYW5kIHNob3VsZCBiZSByZXBsYWNlZAorICAgICAgICAgICAgLy8gYnkgdGhl
IHJlcGxhY2VtZW50IGNoYXJhY3Rlci4gV2Ugc3VzcGVjdCB0aGlzIGlzIGEgcHJvYmxlbSB3aXRo
IHRoZSBzcGVjIGFzIGRvaW5nCisgICAgICAgICAgICAvLyB0aGF0IGZpbHRlcmluZyBicmVha3Mg
c3Vycm9nYXRlIHBhaXIgaGFuZGxpbmcgYW5kIGNhdXNlcyB1cyBub3QgdG8gbWF0Y2ggTWluZWZp
ZWxkLgorICAgICAgICAgICAgaWYgKG1fbmV4dElucHV0Q2hhcmFjdGVyID09ICdcMCcgJiYgIXNo
b3VsZFRyZWF0TnVsbEFzRW5kT2ZGaWxlTWFya2VyKHNvdXJjZSkpIHsKKyAgICAgICAgICAgICAg
ICBpZiAobV90b2tlbml6ZXItPnNob3VsZFNraXBOdWxsQ2hhcmFjdGVycygpKSB7CisgICAgICAg
ICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlUGFzdE5vbk5ld2xpbmUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gUGVla0FnYWluOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtX25leHRJbnB1dENoYXJhY3RlciA9IDB4RkZG
RDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKKyAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlcmUgYXJlIG1vcmUgY2hhcmFjdGVycyBpbiB8
c291cmNlfCBhZnRlciBhZHZhbmNpbmcuCisgICAgQUxXQVlTX0lOTElORSBib29sIGFkdmFuY2Uo
U2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCisgICAgeworICAgICAgICBzb3VyY2UuYWR2YW5jZUFu
ZFVwZGF0ZUxpbmVOdW1iZXIoKTsKKyAgICAgICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBwZWVrKHNvdXJjZSk7CisgICAg
fQorCisgICAgYm9vbCBza2lwTmV4dE5ld0xpbmUoKSBjb25zdCB7IHJldHVybiBtX3NraXBOZXh0
TmV3TGluZTsgfQorCisgICAgdm9pZCByZXNldChib29sIHNraXBOZXh0TmV3TGluZSA9IGZhbHNl
KQorICAgIHsKKyAgICAgICAgbV9uZXh0SW5wdXRDaGFyYWN0ZXIgPSAnXDAnOworICAgICAgICBt
X3NraXBOZXh0TmV3TGluZSA9IHNraXBOZXh0TmV3TGluZTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgYm9vbCBzaG91bGRUcmVhdE51bGxBc0VuZE9mRmlsZU1hcmtlcihTZWdtZW50ZWRTdHJpbmcm
IHNvdXJjZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBzb3VyY2UuaXNDbG9zZWQoKSAm
JiBzb3VyY2UubGVuZ3RoKCkgPT0gMTsKKyAgICB9CisKKyAgICBUb2tlbml6ZXIqIG1fdG9rZW5p
emVyOworCisgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJl
bnQtd29yay8jbmV4dC1pbnB1dC1jaGFyYWN0ZXIKKyAgICBVQ2hhciBtX25leHRJbnB1dENoYXJh
Y3RlcjsKKyAgICBib29sIG1fc2tpcE5leHROZXdMaW5lOworfTsKKworfQorCisjZW5kaWYgLy8g
SW5wdXRTdHJlYW1QcmVwcm9jZXNzb3JfaAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9YU1NBdWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NB
dWRpdG9yLmgKaW5kZXggZGM3ZTkyOWE5NGJmNmJiYmEyNmMyMjc1YmU0ZjA0NTVkNDQ1ZmE2MS4u
OGQ0MjNhZDQ4OTEyNWJkOGI0YTVlZDViMzQxMzNlZDJmMTM5OGQzMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAi
SFRNTFRva2VuLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKKyNpbmNsdWRlICJLVVJMLmgi
CiAjaW5jbHVkZSAiU3VmZml4VHJlZS5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1dlYlZUVFRva2VuaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dl
YlZUVFRva2VuaXplci5jcHAKaW5kZXggM2IzZjM4YWNlM2VlYjQ0YTg2NDFiMmQ0ZGRjZjI1ODNk
ODMyOGIzZS4uZDY3NzVlMzA1NmQ4Mzc5Nzc3ZGI1ZjkwY2RhNjE4MTMxYzE3YmE3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRUb2tlbml6ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUVG9rZW5pemVyLmNwcApAQCAtNDIsMTYg
KzQyLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNkZWZpbmUgV0VCVlRUX0FEVkFOQ0VfVE8o
c3RhdGVOYW1lKSBBRFZBTkNFX1RPKFdlYlZUVFRva2VuaXplclN0YXRlLCBzdGF0ZU5hbWUpCiAK
IFdlYlZUVFRva2VuaXplcjo6V2ViVlRUVG9rZW5pemVyKCkKKyAgICA6IG1faW5wdXRTdHJlYW1Q
cmVwcm9jZXNzb3IodGhpcykKIHsKICAgICByZXNldCgpOwogfQogCi10ZW1wbGF0ZTw+Ci1pbmxp
bmUgYm9vbCBNYXJrdXBUb2tlbml6ZXJCYXNlPFdlYlZUVFRva2VuLCBXZWJWVFRUb2tlbml6ZXJT
dGF0ZT46OnNob3VsZFNraXBOdWxsQ2hhcmFjdGVycygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgogaW5saW5lIGJvb2wg
dmVjdG9yRXF1YWxzU3RyaW5nKGNvbnN0IFZlY3RvcjxDaGFyYWN0ZXJUeXBlLCAzMj4mIHZlY3Rv
ciwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CkBAIC05NSw3ICs5MCw3IEBAIGJvb2wgV2ViVlRU
VG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIFdlYlZUVFRva2Vu
JiB0b2tlbikKICAgICAgICAgICAgICAgICBXRUJWVFRfQURWQU5DRV9UTyhUYWdTdGF0ZSk7CiAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihz
b3VyY2UsIFdlYlZUVFRva2VuaXplclN0YXRlOjpUYWdTdGF0ZSk7Ci0gICAgICAgIH0gZWxzZSBp
ZiAoY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikKKyAgICAg
ICAgfSBlbHNlIGlmIChjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKQogICAgICAgICAgICAgcmV0dXJu
IGVtaXRFbmRPZkZpbGUoc291cmNlKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBidWZm
ZXJDaGFyYWN0ZXIoY2MpOwpAQCAtMTIxLDcgKzExNiw3IEBAIGJvb2wgV2ViVlRUVG9rZW5pemVy
OjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIFdlYlZUVFRva2VuJiB0b2tlbikK
ICAgICAgICAgfSBlbHNlIGlmIChpc0FTQ0lJQWxwaGFudW1lcmljKGNjKSkgewogICAgICAgICAg
ICAgbV9idWZmZXIuYXBwZW5kKHN0YXRpY19jYXN0PExDaGFyPihjYykpOwogICAgICAgICAgICAg
V0VCVlRUX0FEVkFOQ0VfVE8oRXNjYXBlU3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYgKGNjID09
IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAgfSBl
bHNlIGlmIChjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5h
cHBlbmRUb0NoYXJhY3RlcihtX2J1ZmZlcik7CiAgICAgICAgICAgICByZXR1cm4gZW1pdEVuZE9m
RmlsZShzb3VyY2UpOwogICAgICAgICB9IGVsc2UgewpAQCAtMTQ1LDcgKzE0MCw3IEBAIGJvb2wg
V2ViVlRUVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIFdlYlZU
VFRva2VuJiB0b2tlbikKICAgICAgICAgfSBlbHNlIGlmIChXVEY6OmlzQVNDSUlEaWdpdChjYykp
IHsKICAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luVGltZXN0YW1wVGFnKGNjKTsKICAgICAgICAg
ICAgIFdFQlZUVF9BRFZBTkNFX1RPKFRpbWVzdGFtcFRhZ1N0YXRlKTsKLSAgICAgICAgfSBlbHNl
IGlmIChjYyA9PSAnPicgfHwgY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmls
ZU1hcmtlcikgeworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JyB8fCBjYyA9PSBrRW5kT2ZG
aWxlTWFya2VyKSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkVtcHR5U3RhcnRUYWcoKTsK
ICAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBXZWJWVFRUb2tlbml6
ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTE2MCw3ICsxNTUsNyBA
QCBib29sIFdlYlZUVFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNl
LCBXZWJWVFRUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICBXRUJWVFRfQURWQU5DRV9UTyhTdGFy
dFRhZ0Fubm90YXRpb25TdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09ICcuJykKICAgICAg
ICAgICAgIFdFQlZUVF9BRFZBTkNFX1RPKFN0YXJ0VGFnQ2xhc3NTdGF0ZSk7Ci0gICAgICAgIGVs
c2UgaWYgKGNjID09ICc+JyB8fCBjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZG
aWxlTWFya2VyKQorICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicgfHwgY2MgPT0ga0VuZE9mRmls
ZU1hcmtlcikKICAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBXZWJW
VFRUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICBtX3Rva2VuLT5hcHBlbmRUb05hbWUoY2MpOwpAQCAtMTc2LDcgKzE3MSw3IEBAIGJvb2wgV2Vi
VlRUVG9rZW5pemVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIFdlYlZUVFRv
a2VuJiB0b2tlbikKICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnLicpIHsKICAgICAgICAgICAg
IG1fdG9rZW4tPmFkZE5ld0NsYXNzKCk7CiAgICAgICAgICAgICBXRUJWVFRfQURWQU5DRV9UTyhT
dGFydFRhZ0NsYXNzU3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JyB8fCBjYyA9
PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAgIH0g
ZWxzZSBpZiAoY2MgPT0gJz4nIHx8IGNjID09IGtFbmRPZkZpbGVNYXJrZXIpIHsKICAgICAgICAg
ICAgIG1fdG9rZW4tPmFkZE5ld0NsYXNzKCk7CiAgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJl
c3VtZUluKHNvdXJjZSwgV2ViVlRUVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CiAgICAgICAg
IH0gZWxzZSB7CkBAIC0xODgsNyArMTgzLDcgQEAgYm9vbCBXZWJWVFRUb2tlbml6ZXI6Om5leHRU
b2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgV2ViVlRUVG9rZW4mIHRva2VuKQogICAgIEVO
RF9TVEFURSgpCiAKICAgICBXRUJWVFRfQkVHSU5fU1RBVEUoU3RhcnRUYWdBbm5vdGF0aW9uU3Rh
dGUpIHsKLSAgICAgICAgaWYgKGNjID09ICc+JyB8fCBjYyA9PSBJbnB1dFN0cmVhbVByZXByb2Nl
c3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CisgICAgICAgIGlmIChjYyA9PSAnPicgfHwgY2MgPT0g
a0VuZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAgbV90b2tlbi0+YWRkTmV3QW5ub3RhdGlv
bigpOwogICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIFdlYlZUVFRv
a2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICB9CkBAIC0xOTgsNyArMTkzLDcgQEAg
Ym9vbCBXZWJWVFRUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwg
V2ViVlRUVG9rZW4mIHRva2VuKQogICAgIEVORF9TVEFURSgpCiAgICAgCiAgICAgV0VCVlRUX0JF
R0lOX1NUQVRFKEVuZFRhZ09wZW5TdGF0ZSkgewotICAgICAgICBpZiAoY2MgPT0gJz4nIHx8IGNj
ID09IElucHV0U3RyZWFtUHJlcHJvY2Vzc29yOjplbmRPZkZpbGVNYXJrZXIpIHsKKyAgICAgICAg
aWYgKGNjID09ICc+JyB8fCBjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAgICBt
X3Rva2VuLT5iZWdpbkVuZFRhZygnXDAnKTsKICAgICAgICAgICAgIHJldHVybiBlbWl0QW5kUmVz
dW1lSW4oc291cmNlLCBXZWJWVFRUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAg
fQpAQCAtMjA4LDcgKzIwMyw3IEBAIGJvb2wgV2ViVlRUVG9rZW5pemVyOjpuZXh0VG9rZW4oU2Vn
bWVudGVkU3RyaW5nJiBzb3VyY2UsIFdlYlZUVFRva2VuJiB0b2tlbikKICAgICBFTkRfU1RBVEUo
KQogCiAgICAgV0VCVlRUX0JFR0lOX1NUQVRFKEVuZFRhZ1N0YXRlKSB7Ci0gICAgICAgIGlmIChj
YyA9PSAnPicgfHwgY2MgPT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtl
cikKKyAgICAgICAgaWYgKGNjID09ICc+JyB8fCBjYyA9PSBrRW5kT2ZGaWxlTWFya2VyKQogICAg
ICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIFdlYlZUVFRva2VuaXplclN0
YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb05hbWUoY2MpOwogICAg
ICAgICBXRUJWVFRfQURWQU5DRV9UTyhFbmRUYWdTdGF0ZSk7CkBAIC0yMTYsNyArMjExLDcgQEAg
Ym9vbCBXZWJWVFRUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwg
V2ViVlRUVG9rZW4mIHRva2VuKQogICAgIEVORF9TVEFURSgpCiAKICAgICBXRUJWVFRfQkVHSU5f
U1RBVEUoVGltZXN0YW1wVGFnU3RhdGUpIHsKLSAgICAgICAgaWYgKGNjID09ICc+JyB8fCBjYyA9
PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKQorICAgICAgICBpZiAo
Y2MgPT0gJz4nIHx8IGNjID09IGtFbmRPZkZpbGVNYXJrZXIpCiAgICAgICAgICAgICByZXR1cm4g
ZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgV2ViVlRUVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7
CiAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvVGltZXN0YW1wKGNjKTsKICAgICAgICAgV0VCVlRU
X0FEVkFOQ0VfVE8oVGltZXN0YW1wVGFnU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9XZWJWVFRUb2tlbml6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svV2ViVlRUVG9rZW5pemVyLmgKaW5kZXggMGY0NWJmZDBlZjYzZTUxYWFkN2NlY2MzZDVkZjVm
MzNhODFmZjA4Yy4uYzhmZjkyMzVmZTU2NTcyZTMyZjI4ZjU1YTFjZTdmMjEyYWM4MWMyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRUb2tlbml6ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFRva2VuaXplci5oCkBAIC0zMyw5ICsz
Myw5IEBACiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAKLSNpbmNsdWRlICJNYXJrdXBUb2tl
bml6ZXJCYXNlLmgiCi0jaW5jbHVkZSAiU2VnbWVudGVkU3RyaW5nLmgiCisjaW5jbHVkZSAiSW5w
dXRTdHJlYW1QcmVwcm9jZXNzb3IuaCIKICNpbmNsdWRlICJXZWJWVFRUb2tlbi5oIgorI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTQsMjAg
KzU0LDYyIEBAIHB1YmxpYzoKICAgICB9OwogfTsKIAotY2xhc3MgV2ViVlRUVG9rZW5pemVyIDog
TWFya3VwVG9rZW5pemVyQmFzZTxXZWJWVFRUb2tlbiwgV2ViVlRUVG9rZW5pemVyU3RhdGU+IHsK
K2NsYXNzIFdlYlZUVFRva2VuaXplciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViVlRU
VG9rZW5pemVyKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc093blB0cjxXZWJWVFRUb2tlbml6ZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0
UHRyKG5ldyBXZWJWVFRUb2tlbml6ZXIpOyB9CiAKKyAgICB0eXBlZGVmIFdlYlZUVFRva2VuaXpl
clN0YXRlIFN0YXRlOworCiAgICAgdm9pZCByZXNldCgpOwogICAgIAogICAgIGJvb2wgbmV4dFRv
a2VuKFNlZ21lbnRlZFN0cmluZyYsIFdlYlZUVFRva2VuJik7CiAKKyAgICBpbmxpbmUgYm9vbCBo
YXZlQnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpCisgICAgeworICAgICAgICByZXR1cm4gbV90b2tl
bi0+dHlwZSgpID09IFdlYlZUVFRva2VuOjpUeXBlOjpDaGFyYWN0ZXI7CisgICAgfQorCisgICAg
aW5saW5lIHZvaWQgYnVmZmVyQ2hhcmFjdGVyKFVDaGFyIGNoYXJhY3RlcikKKyAgICB7CisgICAg
ICAgIEFTU0VSVChjaGFyYWN0ZXIgIT0ga0VuZE9mRmlsZU1hcmtlcik7CisgICAgICAgIG1fdG9r
ZW4tPmVuc3VyZUlzQ2hhcmFjdGVyVG9rZW4oKTsKKyAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9D
aGFyYWN0ZXIoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICBpbmxpbmUgYm9vbCBlbWl0QW5kUmVz
dW1lSW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIFN0YXRlOjpTdGF0ZSBzdGF0ZSkKKyAgICB7
CisgICAgICAgIG1fc3RhdGUgPSBzdGF0ZTsKKyAgICAgICAgc291cmNlLmFkdmFuY2VBbmRVcGRh
dGVMaW5lTnVtYmVyKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlubGlu
ZSBib29sIGVtaXRFbmRPZkZpbGUoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCisgICAgeworICAg
ICAgICBpZiAoaGF2ZUJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkRhdGFTdGF0ZTsKKyAgICAgICAgc291
cmNlLmFkdmFuY2VBbmRVcGRhdGVMaW5lTnVtYmVyKCk7CisgICAgICAgIG1fdG9rZW4tPmNsZWFy
KCk7CisgICAgICAgIG1fdG9rZW4tPm1ha2VFbmRPZkZpbGUoKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCisgICAgYm9vbCBzaG91bGRTa2lwTnVsbENoYXJhY3RlcnMoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CisKIHByaXZhdGU6CiAgICAgV2ViVlRUVG9rZW5pemVyKCk7Ci0gICAg
CisKKyAgICAvLyBtX3Rva2VuIGlzIG93bmVkIGJ5IHRoZSBjYWxsZXIuIElmIG5leHRUb2tlbiBp
cyBub3Qgb24gdGhlIHN0YWNrLAorICAgIC8vIHRoaXMgbWVtYmVyIG1pZ2h0IGJlIHBvaW50aW5n
IHRvIHVuYWxsb2NhdGVkIG1lbW9yeS4KKyAgICBXZWJWVFRUb2tlbiogbV90b2tlbjsKKyAgICBX
ZWJWVFRUb2tlbml6ZXJTdGF0ZTo6U3RhdGUgbV9zdGF0ZTsKKwogICAgIFZlY3RvcjxMQ2hhciwg
MzI+IG1fYnVmZmVyOworCisgICAgLy8gOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMv
Y3VycmVudC13b3JrLyNwcmVwcm9jZXNzaW5nLXRoZS1pbnB1dC1zdHJlYW0KKyAgICBJbnB1dFN0
cmVhbVByZXByb2Nlc3NvcjxXZWJWVFRUb2tlbml6ZXI+IG1faW5wdXRTdHJlYW1QcmVwcm9jZXNz
b3I7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01hcmt1
cFRva2VuQmFzZS5oIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2Uu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGQ3MzkwMDk0MzNmMjIzNGVhNTdhNGQw
NWI0ODQwOWUyZTEyYThkMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01hcmt1cFRva2VuQmFzZS5oCisrKyAv
ZGV2L251bGwKQEAgLTEsMzUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE1hcmt1cFRva2VuQmFzZV9oCi0jZGVmaW5lIE1hcmt1
cFRva2VuQmFzZV9oCi0KLSNpbmNsdWRlICJFbGVtZW50QXR0cmlidXRlRGF0YS5oIgotI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KLQotI2lmbmRlZiBOREVCVUcKLSNpbmNsdWRlIDxzdGRpby5oPgot
I2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIGlubGluZSBBdHRyaWJ1dGUq
IGZpbmRBdHRyaWJ1dGVJblZlY3RvcihWZWN0b3I8QXR0cmlidXRlPiYgYXR0cmlidXRlcywgY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
YXR0cmlidXRlcy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoYXR0cmlidXRlcy5hdChpKS5u
YW1lKCkubWF0Y2hlcyhuYW1lKSkKLSAgICAgICAgICAgIHJldHVybiAmYXR0cmlidXRlcy5hdChp
KTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFR5cGVTZXQ+
Ci1jbGFzcyBNYXJrdXBUb2tlbkJhc2UgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1hcmt1
cFRva2VuQmFzZSk7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAg
dHlwZWRlZiBUeXBlU2V0IFR5cGU7Ci0KLSAgICBjbGFzcyBBdHRyaWJ1dGUgewotICAgIHB1Ymxp
YzoKLSAgICAgICAgY2xhc3MgUmFuZ2UgewotICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBp
bnQgbV9zdGFydDsKLSAgICAgICAgICAgIGludCBtX2VuZDsKLSAgICAgICAgfTsKLQotICAgICAg
ICBSYW5nZSBtX25hbWVSYW5nZTsKLSAgICAgICAgUmFuZ2UgbV92YWx1ZVJhbmdlOwotICAgICAg
ICBXVEY6OlZlY3RvcjxVQ2hhciwgMzI+IG1fbmFtZTsKLSAgICAgICAgV1RGOjpWZWN0b3I8VUNo
YXIsIDMyPiBtX3ZhbHVlOwotICAgIH07Ci0KLSAgICB0eXBlZGVmIFdURjo6VmVjdG9yPEF0dHJp
YnV0ZSwgMTA+IEF0dHJpYnV0ZUxpc3Q7Ci0gICAgdHlwZWRlZiBXVEY6OlZlY3RvcjxVQ2hhciwg
MTAyND4gRGF0YVZlY3RvcjsKLQotICAgIE1hcmt1cFRva2VuQmFzZSgpIHsgY2xlYXIoKTsgfQot
ICAgIHZpcnR1YWwgfk1hcmt1cFRva2VuQmFzZSgpIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIGNs
ZWFyKCkKLSAgICB7Ci0gICAgICAgIG1fdHlwZSA9IFR5cGVTZXQ6OlVuaW5pdGlhbGl6ZWQ7Ci0g
ICAgICAgIG1fcmFuZ2UubV9zdGFydCA9IDA7Ci0gICAgICAgIG1fcmFuZ2UubV9lbmQgPSAwOwot
ICAgICAgICBtX2Jhc2VPZmZzZXQgPSAwOwotICAgICAgICBtX2RhdGEuY2xlYXIoKTsKLSAgICAg
ICAgbV9vckFsbERhdGEgPSAwOwotICAgIH0KLQotICAgIGJvb2wgaXNVbmluaXRpYWxpemVkKCkg
eyByZXR1cm4gbV90eXBlID09IFR5cGVTZXQ6OlVuaW5pdGlhbGl6ZWQ7IH0KLQotICAgIGludCBz
dGFydEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZS5tX3N0YXJ0OyB9Ci0gICAgaW50IGVu
ZEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZS5tX2VuZDsgfQotCi0gICAgdm9pZCBzZXRC
YXNlT2Zmc2V0KGludCBvZmZzZXQpCi0gICAgewotICAgICAgICBtX2Jhc2VPZmZzZXQgPSBvZmZz
ZXQ7Ci0gICAgfQotCi0gICAgdm9pZCBlbmQoaW50IGVuZE9mZnNldCkKLSAgICB7Ci0gICAgICAg
IG1fcmFuZ2UubV9lbmQgPSBlbmRPZmZzZXQgLSBtX2Jhc2VPZmZzZXQ7Ci0gICAgfQotCi0gICAg
dm9pZCBtYWtlRW5kT2ZGaWxlKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlw
ZVNldDo6VW5pbml0aWFsaXplZCk7Ci0gICAgICAgIG1fdHlwZSA9IFR5cGVTZXQ6OkVuZE9mRmls
ZTsKLSAgICB9Ci0KLSAgICB2b2lkIGJlZ2luU3RhcnRUYWcoVUNoYXIgY2hhcmFjdGVyKQotICAg
IHsKLSAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
VHlwZVNldDo6VW5pbml0aWFsaXplZCk7Ci0gICAgICAgIG1fdHlwZSA9IFR5cGVTZXQ6OlN0YXJ0
VGFnOwotICAgICAgICBtX3NlbGZDbG9zaW5nID0gZmFsc2U7Ci0gICAgICAgIG1fY3VycmVudEF0
dHJpYnV0ZSA9IDA7Ci0gICAgICAgIG1fYXR0cmlidXRlcy5jbGVhcigpOwotCi0gICAgICAgIG1f
ZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKLSAgICAgICAgbV9vckFsbERhdGEgfD0gY2hhcmFjdGVy
OwotICAgIH0KLQotICAgIHZvaWQgYmVnaW5FbmRUYWcoTENoYXIgY2hhcmFjdGVyKQotICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpVbmluaXRpYWxpemVkKTsKLSAgICAg
ICAgbV90eXBlID0gVHlwZVNldDo6RW5kVGFnOwotICAgICAgICBtX3NlbGZDbG9zaW5nID0gZmFs
c2U7Ci0gICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZSA9IDA7Ci0gICAgICAgIG1fYXR0cmlidXRl
cy5jbGVhcigpOwotCi0gICAgICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKLSAgICB9Ci0K
LSAgICB2b2lkIGJlZ2luRW5kVGFnKGNvbnN0IFZlY3RvcjxMQ2hhciwgMzI+JiBjaGFyYWN0ZXJz
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpVbmluaXRpYWxpemVk
KTsKLSAgICAgICAgbV90eXBlID0gVHlwZVNldDo6RW5kVGFnOwotICAgICAgICBtX3NlbGZDbG9z
aW5nID0gZmFsc2U7Ci0gICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZSA9IDA7Ci0gICAgICAgIG1f
YXR0cmlidXRlcy5jbGVhcigpOwotCi0gICAgICAgIG1fZGF0YS5hcHBlbmRWZWN0b3IoY2hhcmFj
dGVycyk7Ci0gICAgfQotCi0gICAgLy8gU3RhcnRpbmcgYSBjaGFyYWN0ZXIgdG9rZW4gd29ya3Mg
c2xpZ2h0bHkgZGlmZmVyZW50bHkgdGhhbiBzdGFydGluZwotICAgIC8vIG90aGVyIHR5cGVzIG9m
IHRva2VucyBiZWNhdXNlIHdlIHdhbnQgdG8gc2F2ZSBhIHBlci1jaGFyYWN0ZXIgYnJhbmNoLgot
ICAgIHZvaWQgZW5zdXJlSXNDaGFyYWN0ZXJUb2tlbigpCi0gICAgewotICAgICAgICBBU1NFUlQo
bV90eXBlID09IFR5cGVTZXQ6OlVuaW5pdGlhbGl6ZWQgfHwgbV90eXBlID09IFR5cGVTZXQ6OkNo
YXJhY3Rlcik7Ci0gICAgICAgIG1fdHlwZSA9IFR5cGVTZXQ6OkNoYXJhY3RlcjsKLSAgICB9Ci0K
LSAgICB2b2lkIGJlZ2luQ29tbWVudCgpCi0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09
IFR5cGVTZXQ6OlVuaW5pdGlhbGl6ZWQpOwotICAgICAgICBtX3R5cGUgPSBUeXBlU2V0OjpDb21t
ZW50OwotICAgIH0KLQotICAgIHZvaWQgYXBwZW5kVG9DaGFyYWN0ZXIoY2hhciBjaGFyYWN0ZXIp
Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OkNoYXJhY3Rlcik7Ci0g
ICAgICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFwcGVu
ZFRvQ2hhcmFjdGVyKFVDaGFyIGNoYXJhY3RlcikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gVHlwZVNldDo6Q2hhcmFjdGVyKTsKLSAgICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0
ZXIpOwotICAgICAgICBtX29yQWxsRGF0YSB8PSBjaGFyYWN0ZXI7Ci0gICAgfQotCi0gICAgdm9p
ZCBhcHBlbmRUb0NoYXJhY3Rlcihjb25zdCBWZWN0b3I8TENoYXIsIDMyPiYgY2hhcmFjdGVycykK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6Q2hhcmFjdGVyKTsKLSAg
ICAgICAgbV9kYXRhLmFwcGVuZFZlY3RvcihjaGFyYWN0ZXJzKTsKLSAgICB9Ci0KLSAgICB2b2lk
IGFwcGVuZFRvQ29tbWVudChVQ2hhciBjaGFyYWN0ZXIpCi0gICAgewotICAgICAgICBBU1NFUlQo
Y2hhcmFjdGVyKTsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpDb21tZW50KTsK
LSAgICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXIpOwotICAgICAgICBtX29yQWxsRGF0YSB8
PSBjaGFyYWN0ZXI7Ci0gICAgfQotCi0gICAgdm9pZCBhZGROZXdBdHRyaWJ1dGUoKQotICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpTdGFydFRhZyB8fCBtX3R5cGUgPT0g
VHlwZVNldDo6RW5kVGFnKTsKLSAgICAgICAgbV9hdHRyaWJ1dGVzLmdyb3cobV9hdHRyaWJ1dGVz
LnNpemUoKSArIDEpOwotICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUgPSAmbV9hdHRyaWJ1dGVz
Lmxhc3QoKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV9u
YW1lUmFuZ2UubV9zdGFydCA9IDA7Ci0gICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV9uYW1l
UmFuZ2UubV9lbmQgPSAwOwotICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5n
ZS5tX3N0YXJ0ID0gMDsKLSAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlUmFuZ2Uu
bV9lbmQgPSAwOwotI2VuZGlmCi0gICAgfQotCi0gICAgdm9pZCBiZWdpbkF0dHJpYnV0ZU5hbWUo
aW50IG9mZnNldCkKLSAgICB7Ci0gICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV9uYW1lUmFu
Z2UubV9zdGFydCA9IG9mZnNldCAtIG1fYmFzZU9mZnNldDsKLSAgICB9Ci0KLSAgICB2b2lkIGVu
ZEF0dHJpYnV0ZU5hbWUoaW50IG9mZnNldCkKLSAgICB7Ci0gICAgICAgIGludCBpbmRleCA9IG9m
ZnNldCAtIG1fYmFzZU9mZnNldDsKLSAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX25hbWVS
YW5nZS5tX2VuZCA9IGluZGV4OwotICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVS
YW5nZS5tX3N0YXJ0ID0gaW5kZXg7Ci0gICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1
ZVJhbmdlLm1fZW5kID0gaW5kZXg7Ci0gICAgfQotCi0gICAgdm9pZCBiZWdpbkF0dHJpYnV0ZVZh
bHVlKGludCBvZmZzZXQpCi0gICAgewotICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFs
dWVSYW5nZS5tX3N0YXJ0ID0gb2Zmc2V0IC0gbV9iYXNlT2Zmc2V0OwotI2lmbmRlZiBOREVCVUcK
LSAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlUmFuZ2UubV9lbmQgPSAwOwotI2Vu
ZGlmCi0gICAgfQotCi0gICAgdm9pZCBlbmRBdHRyaWJ1dGVWYWx1ZShpbnQgb2Zmc2V0KQotICAg
IHsKLSAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlUmFuZ2UubV9lbmQgPSBvZmZz
ZXQgLSBtX2Jhc2VPZmZzZXQ7Ci0gICAgfQotCi0gICAgdm9pZCBhcHBlbmRUb0F0dHJpYnV0ZU5h
bWUoVUNoYXIgY2hhcmFjdGVyKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7Ci0g
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6U3RhcnRUYWcgfHwgbV90eXBlID09IFR5
cGVTZXQ6OkVuZFRhZyk7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBh
ZGQgdGhlIGZvbGxvd2luZyBBU1NFUlQgb25jZSB3ZSBmaXgKLSAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyOTcxCi0gICAgICAgIC8vICAgQVNTRVJU
KG1fY3VycmVudEF0dHJpYnV0ZS0+bV9uYW1lUmFuZ2UubV9zdGFydCk7Ci0gICAgICAgIG1fY3Vy
cmVudEF0dHJpYnV0ZS0+bV9uYW1lLmFwcGVuZChjaGFyYWN0ZXIpOwotICAgIH0KLQotICAgIHZv
aWQgYXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShVQ2hhciBjaGFyYWN0ZXIpCi0gICAgewotICAgICAg
ICBBU1NFUlQoY2hhcmFjdGVyKTsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpT
dGFydFRhZyB8fCBtX3R5cGUgPT0gVHlwZVNldDo6RW5kVGFnKTsKLSAgICAgICAgQVNTRVJUKG1f
Y3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fc3RhcnQpOwotICAgICAgICBtX2N1cnJl
bnRBdHRyaWJ1dGUtPm1fdmFsdWUuYXBwZW5kKGNoYXJhY3Rlcik7Ci0gICAgfQotCi0gICAgdm9p
ZCBhcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKHNpemVfdCBpLCBjb25zdCBTdHJpbmcmIHZhbHVlKQot
ICAgIHsKLSAgICAgICAgQVNTRVJUKCF2YWx1ZS5pc0VtcHR5KCkpOwotICAgICAgICBBU1NFUlQo
bV90eXBlID09IFR5cGVTZXQ6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBUeXBlU2V0OjpFbmRUYWcp
OwotICAgICAgICBtX2F0dHJpYnV0ZXNbaV0ubV92YWx1ZS5hcHBlbmQodmFsdWUuY2hhcmFjdGVy
cygpLCB2YWx1ZS5sZW5ndGgoKSk7Ci0gICAgfQotCi0gICAgdHlwZW5hbWUgVHlwZTo6VHlwZSB0
eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0KLSAgICBib29sIHNlbGZDbG9zaW5nKCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6U3RhcnRUYWcg
fHwgbV90eXBlID09IFR5cGVTZXQ6OkVuZFRhZyk7Ci0gICAgICAgIHJldHVybiBtX3NlbGZDbG9z
aW5nOwotICAgIH0KLQotICAgIHZvaWQgc2V0U2VsZkNsb3NpbmcoKQotICAgIHsKLSAgICAgICAg
QVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gVHlwZVNldDo6
RW5kVGFnKTsKLSAgICAgICAgbV9zZWxmQ2xvc2luZyA9IHRydWU7Ci0gICAgfQotCi0gICAgY29u
c3QgQXR0cmlidXRlTGlzdCYgYXR0cmlidXRlcygpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NF
UlQobV90eXBlID09IFR5cGVTZXQ6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBUeXBlU2V0OjpFbmRU
YWcpOwotICAgICAgICByZXR1cm4gbV9hdHRyaWJ1dGVzOwotICAgIH0KLQotICAgIHZvaWQgZXJh
c2VDaGFyYWN0ZXJzKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6
Q2hhcmFjdGVyKTsKLSAgICAgICAgbV9kYXRhLmNsZWFyKCk7Ci0gICAgICAgIG1fb3JBbGxEYXRh
ID0gMDsKLSAgICB9Ci0KLSAgICB2b2lkIGVyYXNlVmFsdWVPZkF0dHJpYnV0ZShzaXplX3QgaSkK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6U3RhcnRUYWcgfHwgbV90
eXBlID09IFR5cGVTZXQ6OkVuZFRhZyk7Ci0gICAgICAgIG1fYXR0cmlidXRlc1tpXS5tX3ZhbHVl
LmNsZWFyKCk7Ci0gICAgfQotCi0gICAgY29uc3QgRGF0YVZlY3RvciYgY2hhcmFjdGVycygpIGNv
bnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OkNoYXJhY3Rlcik7
Ci0gICAgICAgIHJldHVybiBtX2RhdGE7Ci0gICAgfQotCi0gICAgY29uc3QgRGF0YVZlY3RvciYg
Y29tbWVudCgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6
OkNvbW1lbnQpOwotICAgICAgICByZXR1cm4gbV9kYXRhOwotICAgIH0KLQotICAgIGNvbnN0IERh
dGFWZWN0b3ImIGRhdGEoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBU
eXBlU2V0OjpDaGFyYWN0ZXIgfHwgbV90eXBlID09IFR5cGVTZXQ6OkNvbW1lbnQgfHwgbV90eXBl
ID09IFR5cGVTZXQ6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBUeXBlU2V0OjpFbmRUYWcpOwotICAg
ICAgICByZXR1cm4gbV9kYXRhOwotICAgIH0KLQotICAgIGJvb2wgaXNBbGw4Qml0RGF0YSgpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gKG1fb3JBbGxEYXRhIDw9IDB4ZmYpOwotICAgIH0K
LQotICAgIGNvbnN0IERhdGFWZWN0b3ImIG5hbWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIG1fZGF0YTsKLSAgICB9Ci0KLSAgICBTdHJpbmcgbmFtZVN0cmluZygpIGNvbnN0Ci0gICAg
ewotICAgICAgICBpZiAoIW1fZGF0YS5zaXplKCkpCi0gICAgICAgICAgICByZXR1cm4gZW1wdHlT
dHJpbmcoKTsKLSAgICAgICAgaWYgKGlzQWxsOEJpdERhdGEoKSkKLSAgICAgICAgICAgIHJldHVy
biBTdHJpbmc6Om1ha2U4Qml0RnJvbTE2Qml0U291cmNlKG1fZGF0YS5kYXRhKCksIG1fZGF0YS5z
aXplKCkpOwotICAgICAgICByZXR1cm4gU3RyaW5nKG1fZGF0YS5kYXRhKCksIG1fZGF0YS5zaXpl
KCkpOwotICAgIH0KLQotcHJvdGVjdGVkOgotCi0jaWZuZGVmIE5ERUJVRwotICAgIHZvaWQgcHJp
bnRTdHJpbmcoY29uc3QgRGF0YVZlY3RvciYgc3RyaW5nKSBjb25zdAotICAgIHsKLSAgICAgICAg
RGF0YVZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHN0cmluZy5iZWdpbigpOwotICAgICAg
ICBmb3IgKDsgaXRlciAhPSBzdHJpbmcuZW5kKCk7ICsraXRlcikKLSAgICAgICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAiJWxjIiwgd2NoYXJfdCgqaXRlcikpOwotICAgIH0KLSNlbmRpZiAvLyBOREVC
VUcKLQotICAgIHZvaWQgYXBwZW5kVG9OYW1lKFVDaGFyIGNoYXJhY3RlcikKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChjaGFyYWN0ZXIpOwotICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rlcik7
Ci0gICAgICAgIG1fb3JBbGxEYXRhIHw9IGNoYXJhY3RlcjsKLSAgICB9Ci0KLSAgICB0eXBlbmFt
ZSBUeXBlOjpUeXBlIG1fdHlwZTsKLSAgICB0eXBlbmFtZSBBdHRyaWJ1dGU6OlJhbmdlIG1fcmFu
Z2U7IC8vIEFsd2F5cyBzdGFydHMgYXQgemVyby4KLSAgICBpbnQgbV9iYXNlT2Zmc2V0OwotICAg
IERhdGFWZWN0b3IgbV9kYXRhOwotICAgIFVDaGFyIG1fb3JBbGxEYXRhOwotCi0gICAgLy8gRm9y
IFN0YXJ0VGFnIGFuZCBFbmRUYWcKLSAgICBib29sIG1fc2VsZkNsb3Npbmc7Ci0gICAgQXR0cmli
dXRlTGlzdCBtX2F0dHJpYnV0ZXM7Ci0KLSAgICAvLyBBIHBvaW50ZXIgaW50byBtX2F0dHJpYnV0
ZXMgdXNlZCBkdXJpbmcgbGV4aW5nLgotICAgIEF0dHJpYnV0ZSogbV9jdXJyZW50QXR0cmlidXRl
OwotfTsKLQotfQotCi0jZW5kaWYgLy8gTWFya3VwVG9rZW5CYXNlX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5pemVyQmFzZS5oIGIvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbml6ZXJCYXNlLmgKaW5kZXggMGZjOWM1NjkwYmYz
NjI3NmY2MWY3YzJjZTJjM2NhNzVlNTliZTRhNy4uNDc3N2Q5YTNmMzI1MTEwNDliNjRjOTRjOGQ1
NDE4MDRkZTk3MjFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJr
dXBUb2tlbml6ZXJCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBU
b2tlbml6ZXJCYXNlLmgKQEAgLTI4LDggKzI4LDcgQEAKICNpZm5kZWYgTWFya3VwVG9rZW5pemVy
QmFzZV9oCiAjZGVmaW5lIE1hcmt1cFRva2VuaXplckJhc2VfaAogCi0jaW5jbHVkZSAiU2VnbWVu
dGVkU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSAiSW5w
dXRTdHJlYW1QcmVwcm9jZXNzb3IuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4K
QEAgLTU1LDEwMiArNTQsMTEgQEAgcHVibGljOgogICAgIGlubGluZSBib29sIHNob3VsZFNraXBO
dWxsQ2hhcmFjdGVycygpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgLy8gaHR0cDovL3d3dy53
aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jcHJlcHJvY2Vzc2luZy10aGUt
aW5wdXQtc3RyZWFtCi0gICAgY2xhc3MgSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3IgewotICAgICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcik7Ci0gICAgcHVi
bGljOgotICAgICAgICBJbnB1dFN0cmVhbVByZXByb2Nlc3NvcihNYXJrdXBUb2tlbml6ZXJCYXNl
PFRva2VuLCBTdGF0ZT4qIHRva2VuaXplcikKLSAgICAgICAgICAgIDogbV90b2tlbml6ZXIodG9r
ZW5pemVyKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXNldCgpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgQUxXQVlTX0lOTElORSBVQ2hhciBuZXh0SW5wdXRDaGFyYWN0ZXIoKSBjb25zdCB7IHJl
dHVybiBtX25leHRJbnB1dENoYXJhY3RlcjsgfQotCi0gICAgICAgIC8vIFJldHVybnMgd2hldGhl
ciB3ZSBzdWNjZWVkZWQgaW4gcGVla2luZyBhdCB0aGUgbmV4dCBjaGFyYWN0ZXIuCi0gICAgICAg
IC8vIFRoZSBvbmx5IHdheSB3ZSBjYW4gZmFpbCB0byBwZWVrIGlzIGlmIHRoZXJlIGFyZSBubyBt
b3JlCi0gICAgICAgIC8vIGNoYXJhY3RlcnMgaW4gfHNvdXJjZXwgKGFmdGVyIGNvbGxhcHNpbmcg
XHJcbiwgZXRjKS4KLSAgICAgICAgQUxXQVlTX0lOTElORSBib29sIHBlZWsoU2VnbWVudGVkU3Ry
aW5nJiBzb3VyY2UpCi0gICAgICAgIHsKLSAgICAgICAgUGVla0FnYWluOgotICAgICAgICAgICAg
bV9uZXh0SW5wdXRDaGFyYWN0ZXIgPSBzb3VyY2UuY3VycmVudENoYXIoKTsKLQotICAgICAgICAg
ICAgLy8gRXZlcnkgYnJhbmNoIGluIHRoaXMgZnVuY3Rpb24gaXMgZXhwZW5zaXZlLCBzbyB3ZSBo
YXZlIGEKLSAgICAgICAgICAgIC8vIGZhc3QtcmVqZWN0IGJyYW5jaCBmb3IgY2hhcmFjdGVycyB0
aGF0IGRvbid0IHJlcXVpcmUgc3BlY2lhbAotICAgICAgICAgICAgLy8gaGFuZGxpbmcuIFBsZWFz
ZSBydW4gdGhlIHBhcnNlciBiZW5jaG1hcmsgd2hlbmV2ZXIgeW91IHRvdWNoCi0gICAgICAgICAg
ICAvLyB0aGlzIGZ1bmN0aW9uLiBJdCdzIHZlcnkgaG90LgotICAgICAgICAgICAgc3RhdGljIGNv
bnN0IFVDaGFyIHNwZWNpYWxDaGFyYWN0ZXJNYXNrID0gJ1xuJyB8ICdccicgfCAnXDAnOwotICAg
ICAgICAgICAgaWYgKG1fbmV4dElucHV0Q2hhcmFjdGVyICYgfnNwZWNpYWxDaGFyYWN0ZXJNYXNr
KSB7Ci0gICAgICAgICAgICAgICAgbV9za2lwTmV4dE5ld0xpbmUgPSBmYWxzZTsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKG1f
bmV4dElucHV0Q2hhcmFjdGVyID09ICdcbicgJiYgbV9za2lwTmV4dE5ld0xpbmUpIHsKLSAgICAg
ICAgICAgICAgICBtX3NraXBOZXh0TmV3TGluZSA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHNv
dXJjZS5hZHZhbmNlUGFzdE5ld2xpbmVBbmRVcGRhdGVMaW5lTnVtYmVyKCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgICAgICBtX25leHRJbnB1dENoYXJhY3RlciA9IHNvdXJjZS5jdXJy
ZW50Q2hhcigpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG1fbmV4dElucHV0Q2hh
cmFjdGVyID09ICdccicpIHsKLSAgICAgICAgICAgICAgICBtX25leHRJbnB1dENoYXJhY3RlciA9
ICdcbic7Ci0gICAgICAgICAgICAgICAgbV9za2lwTmV4dE5ld0xpbmUgPSB0cnVlOwotICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtX3NraXBOZXh0TmV3TGluZSA9IGZhbHNl
OwotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGUgc3BlYyBpbmRpY2F0ZXMgdGhhdCB0aGUg
c3Vycm9nYXRlIHBhaXIgcmFuZ2UgYXMgd2VsbCBhcwotICAgICAgICAgICAgICAgIC8vIGEgbnVt
YmVyIG9mIHNwZWNpZmljIGNoYXJhY3RlciB2YWx1ZXMgYXJlIHBhcnNlIGVycm9ycyBhbmQgc2hv
dWxkIGJlIHJlcGxhY2VkCi0gICAgICAgICAgICAgICAgLy8gYnkgdGhlIHJlcGxhY2VtZW50IGNo
YXJhY3Rlci4gV2Ugc3VzcGVjdCB0aGlzIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBzcGVjIGFzIGRv
aW5nCi0gICAgICAgICAgICAgICAgLy8gdGhhdCBmaWx0ZXJpbmcgYnJlYWtzIHN1cnJvZ2F0ZSBw
YWlyIGhhbmRsaW5nIGFuZCBjYXVzZXMgdXMgbm90IHRvIG1hdGNoIE1pbmVmaWVsZC4KLSAgICAg
ICAgICAgICAgICBpZiAobV9uZXh0SW5wdXRDaGFyYWN0ZXIgPT0gJ1wwJyAmJiAhc2hvdWxkVHJl
YXROdWxsQXNFbmRPZkZpbGVNYXJrZXIoc291cmNlKSkgewotICAgICAgICAgICAgICAgICAgICBp
ZiAobV90b2tlbml6ZXItPnNob3VsZFNraXBOdWxsQ2hhcmFjdGVycygpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZVBhc3ROb25OZXdsaW5lKCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoc291cmNlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIFBlZWtB
Z2FpbjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBtX25leHRJ
bnB1dENoYXJhY3RlciA9IDB4RkZGRDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFJldHVy
bnMgd2hldGhlciB0aGVyZSBhcmUgbW9yZSBjaGFyYWN0ZXJzIGluIHxzb3VyY2V8IGFmdGVyIGFk
dmFuY2luZy4KLSAgICAgICAgQUxXQVlTX0lOTElORSBib29sIGFkdmFuY2UoU2VnbWVudGVkU3Ry
aW5nJiBzb3VyY2UpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kVXBk
YXRlTGluZU51bWJlcigpOwotICAgICAgICAgICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuIHBlZWsoc291cmNl
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgc2tpcE5leHROZXdMaW5lKCkgY29uc3QgeyBy
ZXR1cm4gbV9za2lwTmV4dE5ld0xpbmU7IH0KLQotICAgICAgICB2b2lkIHJlc2V0KGJvb2wgc2tp
cE5leHROZXdMaW5lID0gZmFsc2UpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1fbmV4dElucHV0
Q2hhcmFjdGVyID0gJ1wwJzsKLSAgICAgICAgICAgIG1fc2tpcE5leHROZXdMaW5lID0gc2tpcE5l
eHROZXdMaW5lOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IFVDaGFyIGVuZE9m
RmlsZU1hcmtlciA9IDA7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBib29sIHNob3VsZFRyZWF0
TnVsbEFzRW5kT2ZGaWxlTWFya2VyKFNlZ21lbnRlZFN0cmluZyYgc291cmNlKSBjb25zdAotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc291cmNlLmlzQ2xvc2VkKCkgJiYgc291cmNlLmxl
bmd0aCgpID09IDE7Ci0gICAgICAgIH0KLQotICAgICAgICBNYXJrdXBUb2tlbml6ZXJCYXNlPFRv
a2VuLCBTdGF0ZT4qIG1fdG9rZW5pemVyOwotCi0gICAgICAgIC8vIGh0dHA6Ly93d3cud2hhdHdn
Lm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI25leHQtaW5wdXQtY2hhcmFjdGVyCi0g
ICAgICAgIFVDaGFyIG1fbmV4dElucHV0Q2hhcmFjdGVyOwotICAgICAgICBib29sIG1fc2tpcE5l
eHROZXdMaW5lOwotICAgIH07Ci0KICAgICBNYXJrdXBUb2tlbml6ZXJCYXNlKCkgOiBtX2lucHV0
U3RyZWFtUHJlcHJvY2Vzc29yKHRoaXMpIHsgcmVzZXQoKTsgfQogCiAgICAgaW5saW5lIHZvaWQg
YnVmZmVyQ2hhcmFjdGVyKFVDaGFyIGNoYXJhY3RlcikKICAgICB7Ci0gICAgICAgIEFTU0VSVChj
aGFyYWN0ZXIgIT0gSW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcik7Cisg
ICAgICAgIEFTU0VSVChjaGFyYWN0ZXIgIT0ga0VuZE9mRmlsZU1hcmtlcik7CiAgICAgICAgIG1f
dG9rZW4tPmVuc3VyZUlzQ2hhcmFjdGVyVG9rZW4oKTsKICAgICAgICAgbV90b2tlbi0+YXBwZW5k
VG9DaGFyYWN0ZXIoY2hhcmFjdGVyKTsKICAgICB9CkBAIC0yMDYsNyArMTE0LDcgQEAgcHJvdGVj
dGVkOgogICAgIFVDaGFyIG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXI7CiAKICAgICAvLyBo
dHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNwcmVwcm9j
ZXNzaW5nLXRoZS1pbnB1dC1zdHJlYW0KLSAgICBJbnB1dFN0cmVhbVByZXByb2Nlc3NvciBtX2lu
cHV0U3RyZWFtUHJlcHJvY2Vzc29yOworICAgIElucHV0U3RyZWFtUHJlcHJvY2Vzc29yPE1hcmt1
cFRva2VuaXplckJhc2U8VG9rZW4sIFN0YXRlPiA+IG1faW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I7
CiB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187663</attachid>
            <date>2013-02-11 14:05:24 -0800</date>
            <delta_ts>2013-02-11 14:05:38 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-109483-20130211140154.patch</filename>
            <type>text/plain</type>
            <size>32225</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTZjNDE4ZjU0NTgzNzgz
NWQ4NmZlODU4OWI0MmU2YzljYWI0NTBmNy4uOGE2NTNmOTlkZTkwMmE3MWJkZWJhN2E4NWY3NDAz
YjAxYjA3ODU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDEzLTAyLTExICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBGb2xkIE1hcmt1cFRva2VuQmFz
ZSBpbnRvIEhUTUxUb2tlbiBub3cgdGhhdCBpdCBoYXMgbm8gb3RoZXIgc3ViY2xhc3NlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NDgzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBkZWxldGVz
IGFuIGVwaWMgYW1vdW50IG9mIHRlbXBsYXRlIHl1Y2ssIGFzIHdlbGwgYXMgcmVtb3ZlcworICAg
ICAgICBhIHZ0YWJsZSAhPyEgZnJvbSBIVE1MVG9rZW4uCisKKyAgICAgICAgVGhpcyBwYXZlcyB0
aGUgd2F5IGZvciBmdXJ0aGVyIGNsZWFudXAgb2YgSFRNTFRva2VuIG5vdyB0aGF0IHdlCisgICAg
ICAgIGNhbiBzZWUgdGhlIHdob2xlIG9iamVjdCBhdCBvbmNlLgorICAgICAgICBXZSdsbCBhbHNv
IHByb2JhYmx5IHJlLWNyZWF0ZSBhbiBIVE1MVG9rZW4uY3BwIGFnYWluLCBub3cgdGhhdCB3ZSdy
ZQorICAgICAgICBmcmVlIGZyb20gdGhlIGNoYWlucyBvZiB0ZW1wbGF0ZSBub25zZW5zZS4KKwor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAg
ICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvcGFyc2Vy
L0hUTUxUb2tlbi5oOgorICAgICAgICAoV2ViQ29yZTo6ZmluZEF0dHJpYnV0ZUluVmVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSFRNTFRva2VuKToKKyAgICAgICAgKEF0dHJp
YnV0ZSk6CisgICAgICAgIChSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OkhU
TUxUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmNsZWFyKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUb2tlbjo6aXNVbmluaXRpYWxpemVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUb2tlbjo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46Om1ha2VFbmRP
ZkZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpzdGFydEluZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6ZW5kSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRva2VuOjpzZXRCYXNlT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6ZW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6ZGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVG9rZW46OmlzQWxsOEJpdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2Vu
OjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YXBwZW5kVG9OYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6bmFtZVN0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVG9rZW46OnNlbGZDbG9zaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6
c2V0U2VsZkNsb3NpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpiZWdpblN0YXJ0
VGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YmVnaW5FbmRUYWcpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRva2VuOjphZGROZXdBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRva2VuOjpiZWdpbkF0dHJpYnV0ZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRva2VuOjplbmRBdHRyaWJ1dGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6
YmVnaW5BdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmVuZEF0
dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YXBwZW5kVG9BdHRy
aWJ1dGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YXBwZW5kVG9BdHRyaWJ1
dGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmF0dHJpYnV0ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjplcmFzZVZhbHVlT2ZBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRva2VuOjplbnN1cmVJc0NoYXJhY3RlclRva2VuKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUb2tlbjo6Y2hhcmFjdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VG9rZW46OmFwcGVuZFRvQ2hhcmFjdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6
Y29tbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmJlZ2luQ29tbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmFwcGVuZFRvQ29tbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVG9rZW46OmVyYXNlQ2hhcmFjdGVycyk6CisgICAgICAgICogaHRtbC9wYXJz
ZXIvSFRNTFRva2VuVHlwZXMuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9yLmg6
CisgICAgICAgICogeG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2UuaDogUmVtb3ZlZC4KKwogMjAx
My0wMi0xMSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNoLmR1bWV6QHNpc2Euc2Ftc3VuZy5jb20+CiAK
ICAgICAgICAgW0VGTF0gZmFzdC9mb3Jtcy9udW1iZXIvbnVtYmVyLWwxMG4taW5wdXQuaHRtbCBp
cyBmYWlsaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBhNzBhNWJiZmJjOGVl
MGJjYTVjODU4MTE2MmQ3MWRkMjMzMTlkOTYzLi45NDY5YTIxYWE5M2MyZGJkMzJkOTBkODQ1NjJm
NDI4YTk3NmFjNzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQ3MDksNyAr
NDcwOSw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJUaHJlYWQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5o
IFwKIAlTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL0NoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklu
bGluZXMuaCBcCi0JU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2UuaCBc
CiAJU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbml6ZXJCYXNlLmggXAogCVNv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5pemVySW5saW5lcy5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpp
bmRleCA1MDE2MzA5YjgxYTQ1MGExYjkyY2U5MWUzYjQ4NDkwMzZlYjFmMjM4Li40ZTA2OGUyYmEz
NmQ1NDkwNjhmMDc2ZjVlM2M1YjQwNjM4OTZkNzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTI4NTAsNyAr
Mjg1MCw2IEBAIEhFQURFUlMgKz0gXAogICAgIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgg
XAogICAgIHdvcmtlcnMvV29ya2VyVGhyZWFkLmggXAogICAgIHhtbC9wYXJzZXIvQ2hhcmFjdGVy
UmVmZXJlbmNlUGFyc2VySW5saW5lcy5oIFwKLSAgICB4bWwvcGFyc2VyL01hcmt1cFRva2VuQmFz
ZS5oIFwKICAgICB4bWwvcGFyc2VyL01hcmt1cFRva2VuaXplckJhc2UuaCBcCiAgICAgeG1sL3Bh
cnNlci9NYXJrdXBUb2tlbml6ZXJJbmxpbmVzLmggXAogICAgIHhtbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXIuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNTNkNDE4ODAwNWIxYzI2ZWMzMWMzMThm
OTA5ZDFkOTg4MTk5YTFmNC4uNTVjY2FlMWU0N2Q0NTI1NWRiZDI2Y2QwODJlODIyNzY0OWY0MjA3
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjY3MCw3ICsyNjcwLDYgQEAKICAgICAgICAgICAgICd3
b3JrZXJzL2Nocm9taXVtL1dvcmtlckNvbnRleHRQcm94eUNocm9taXVtLmNwcCcsCiAgICAgICAg
ICAgICAnd29ya2Vycy9jaHJvbWl1bS9Xb3JrZXJDb250ZXh0UHJveHlDaHJvbWl1bS5oJywKICAg
ICAgICAgICAgICd4bWwvcGFyc2VyL0NoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZXMuaCcs
Ci0gICAgICAgICAgICAneG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2UuaCcsCiAgICAgICAgICAg
ICAneG1sL3BhcnNlci9NYXJrdXBUb2tlbml6ZXJCYXNlLmgnLAogICAgICAgICAgICAgJ3htbC9w
YXJzZXIvTWFya3VwVG9rZW5pemVySW5saW5lcy5oJywKICAgICAgICAgICAgICd4bWwvcGFyc2Vy
L1hNTERvY3VtZW50UGFyc2VyLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCmluZGV4IGZmNTkzMmI4NjI0NTkxMzg3MmU0NmVmOGM4OTA2M2JlNWRk
MGRjZjguLjM1M2FlYjgzYTA4YWYyYzNkN2YyODdjZDhlYzNmNThkYjk0N2ZjNDYgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC00OTA5MCwxMCAr
NDkwOTAsNiBAQAogCQkJCU5hbWU9InBhcnNlciIKIAkJCQk+CiAJCQkJPEZpbGUKLQkJCQkJUmVs
YXRpdmVQYXRoPSIuLlx4bWxccGFyc2VyXE1hcmt1cFRva2VuQmFzZS5oIgotCQkJCQk+Ci0JCQkJ
PC9GaWxlPgotCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ceG1sXHBhcnNlclxNYXJr
dXBUb2tlbml6ZXJCYXNlLmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCBhNjQyYTViM2I1MTBlMTBl
ZjNmNWEzODE5NzFkMmE5MWQ3NTEwYTFmLi43M2UxNTAzMjljOGZkZDc5NzA1ZDhkNDc5ZmVjZDdi
NWRhNTkyNWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2oKQEAgLTc1MTMsNyArNzUxMyw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
Llx4bWxcWFNMVEV4dGVuc2lvbnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHht
bFxYU0xUUHJvY2Vzc29yLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx4bWxcWFNM
VFVuaWNvZGVTb3J0LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx4bWxccGFyc2Vy
XE1hcmt1cFRva2VuQmFzZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ceG1sXHBh
cnNlclxNYXJrdXBUb2tlbml6ZXJCYXNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
Llx4bWxccGFyc2VyXE1hcmt1cFRva2VuaXplcklubGluZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHhtbFxwYXJzZXJcWE1MRG9jdW1lbnRQYXJzZXIuaCIgLz4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
cyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
cwppbmRleCA4YmQ5N2IzYWNkYjE0ZGUwNWU5NmE2ZDE1Nzc3OTc1Y2RlYTQ3ODFjLi5jNzkyYWUw
MTQwN2YzZDlmYjU2NDZiNjc3ZmVhNzA2MTYyMzI0MWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCkBAIC0xMTMx
Myw5ICsxMTMxMyw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx4bWxcWFNMVFVuaWNv
ZGVTb3J0LmgiPgogICAgICAgPEZpbHRlcj54bWw8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4K
LSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHhtbFxwYXJzZXJcTWFya3VwVG9rZW5CYXNlLmgi
PgotICAgICAgPEZpbHRlcj54bWxccGFyc2VyPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx4bWxccGFyc2VyXE1hcmt1cFRva2VuaXplckJhc2Uu
aCI+CiAgICAgICA8RmlsdGVyPnhtbFxwYXJzZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBhNGMwNjlhZDU5MTE4MTNiODFhODM1MTUzOGJmNGNhZWJmNDIxOWQzLi4wN2VlMTZkMDZk
ODU4MzdlZjU4MzgzZjM3OGJkNGQ4MTNjOTBlNzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00OCw3ICs0OCw2IEBACiAJCTAw
MTQ2MjhBMTAzQ0QxREUwMDBCMjBEQiAvKiBPcmlnaW5BY2Nlc3NFbnRyeS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMDE0NjI4ODEwM0NEMURFMDAw
QjIwREIgLyogT3JpZ2luQWNjZXNzRW50cnkuY3BwICovOyB9OwogCQkwMDE0NjI4QjEwM0NEMURF
MDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwMTQ2Mjg5MTAzQ0QxREUwMDBCMjBEQiAvKiBPcmlnaW5B
Y2Nlc3NFbnRyeS5oICovOyB9OwogCQkwMDNGMUZFQTExRTZBQjQzMDA4MjU4RDkgLyogVXNlckNv
bnRlbnRUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDAzRjFGRTkxMUU2QUI0MzAwODI1OEQ5IC8qIFVzZXJDb250ZW50VHlwZXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwMEE2MjlDMTEzRDBC
RUM3MDA1MEFDNTIgLyogTWFya3VwVG9rZW5CYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMEE2MjlDMDEzRDBCRUM3MDA1MEFDNTIgLyogTWFya3Vw
VG9rZW5CYXNlLmggKi87IH07CiAJCTAwQjkzMTg3MTNCQThEQjMwMDM1QTk0OCAvKiBYTUxEb2N1
bWVudFBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwMEI5MzE4MTEzQkE4NjdGMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXIuY3BwICov
OyB9OwogCQkwMEI5MzE4ODEzQkE4REJBMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwQjkzMTgyMTNC
QTg2N0YwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlci5oICovOyB9OwogCQkwMEI5MzE4OTEz
QkE4REJDMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwQjkzMTgzMTNCQTg2N0YwMDM1
QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwICovOyB9OwpAQCAtNzI5NCw3ICs3
MjkzLDYgQEAKIAkJMDAxNDYyODgxMDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9yaWdpbkFjY2Vzc0Vu
dHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDAxNDYyODkxMDNDRDFERTAw
MEIyMERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE9yaWdpbkFjY2Vzc0VudHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTAwM0YxRkU5MTFFNkFCNDMwMDgyNThEOSAvKiBVc2VyQ29udGVudFR5cGVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJDb250ZW50VHlwZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMDBBNjI5QzAxM0QwQkVDNzAwNTBBQzUyIC8qIE1hcmt1cFRva2Vu
QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXJrdXBUb2tlbkJhc2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDBCOTMxODExM0JBODY3RjAwMzVBOTQ4
IC8qIFhNTERvY3VtZW50UGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFhNTERvY3VtZW50UGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDBCOTMxODIxM0JBODY3RjAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhNTERvY3VtZW50UGFyc2VyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTAwQjkzMTgzMTNCQTg2N0YwMDM1QTk0OCAvKiBYTUxEb2N1
bWVudFBhcnNlckxpYnhtbDIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE0NTcxLDcgKzE0NTY5LDYgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCiAJCQkJOTdCOEZGQ0YxNkFFN0Y5MjAwMzgzODhEIC8qIENoYXJhY3RlclJlZmVyZW5j
ZVBhcnNlcklubGluZXMuaCAqLywKLQkJCQkwMEE2MjlDMDEzRDBCRUM3MDA1MEFDNTIgLyogTWFy
a3VwVG9rZW5CYXNlLmggKi8sCiAJCQkJMDBDNjBFNDExM0Q3OTdBRTAwOTJBMjc1IC8qIE1hcmt1
cFRva2VuaXplckJhc2UuaCAqLywKIAkJCQkwMEM2MEUzRTEzRDc2RDdFMDA5MkEyNzUgLyogTWFy
a3VwVG9rZW5pemVySW5saW5lcy5oICovLAogCQkJCTAwQjkzMTgxMTNCQTg2N0YwMDM1QTk0OCAv
KiBYTUxEb2N1bWVudFBhcnNlci5jcHAgKi8sCkBAIC0yNTMwMiw3ICsyNTI5OSw2IEBACiAJCQkJ
MUE4RjZCQzYwREI1NUNEQzAwMURCNzk0IC8qIE1hbmlmZXN0UGFyc2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5MzMwOURGODA5OUU2NDkyMDA1NkU1ODEgLyogbWFya3VwLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5NzI4QzMxNDEyNjhFNDM5MDA0MUU4OUIgLyogTWFya3VwQWNjdW11bGF0b3IuaCBp
biBIZWFkZXJzICovLAotCQkJCTAwQTYyOUMxMTNEMEJFQzcwMDUwQUM1MiAvKiBNYXJrdXBUb2tl
bkJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTAwQzYwRTQyMTNENzk3QUUwMDkyQTI3NSAvKiBN
YXJrdXBUb2tlbml6ZXJCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwMEM2MEUzRjEzRDc2RDdF
MDA5MkEyNzUgLyogTWFya3VwVG9rZW5pemVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RkFCRTcyRjUxMDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaAppbmRleCA0YWZhMTYwMTdmOTM3
MzMzODYyYjliOTI3MTUzM2Y2N2VkMzRkMzMzLi5iZmJkZTIwNDgzNDI2MTU3N2ZlN2RjZGViM2Mw
MDAwNWQwNzY2NGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
VG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlLCBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDkg
KzI2LDkgQEAKICNpZm5kZWYgSFRNTFRva2VuX2gKICNkZWZpbmUgSFRNTFRva2VuX2gKIAorI2lu
Y2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkNvbXBhY3RIVE1MVG9rZW4uaCIKICNpbmNs
dWRlICJIVE1MVG9rZW5UeXBlcy5oIgotI2luY2x1ZGUgIk1hcmt1cFRva2VuQmFzZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC01
MiwyMCArNTIsMTEwIEBAIHB1YmxpYzoKICAgICBib29sIG1fZm9yY2VRdWlya3M7CiB9OwogCi1j
bGFzcyBIVE1MVG9rZW4gOiBwdWJsaWMgTWFya3VwVG9rZW5CYXNlPEhUTUxUb2tlblR5cGVzPiB7
CitzdGF0aWMgaW5saW5lIEF0dHJpYnV0ZSogZmluZEF0dHJpYnV0ZUluVmVjdG9yKFZlY3RvcjxB
dHRyaWJ1dGU+JiBhdHRyaWJ1dGVzLCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQoreworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhdHRyaWJ1dGVzLnNpemUoKTsgKytpKSB7CisgICAg
ICAgIGlmIChhdHRyaWJ1dGVzLmF0KGkpLm5hbWUoKS5tYXRjaGVzKG5hbWUpKQorICAgICAgICAg
ICAgcmV0dXJuICZhdHRyaWJ1dGVzLmF0KGkpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwor
Y2xhc3MgSFRNTFRva2VuIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIVE1MVG9rZW4pOwor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHZvaWQgYXBwZW5kVG9O
YW1lKFVDaGFyIGNoYXJhY3RlcikKKyAgICB0eXBlZGVmIEhUTUxUb2tlblR5cGVzIFR5cGU7CisK
KyAgICBjbGFzcyBBdHRyaWJ1dGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgY2xhc3MgUmFuZ2Ug
eworICAgICAgICBwdWJsaWM6CisgICAgICAgICAgICBpbnQgbV9zdGFydDsKKyAgICAgICAgICAg
IGludCBtX2VuZDsKKyAgICAgICAgfTsKKworICAgICAgICBSYW5nZSBtX25hbWVSYW5nZTsKKyAg
ICAgICAgUmFuZ2UgbV92YWx1ZVJhbmdlOworICAgICAgICBXVEY6OlZlY3RvcjxVQ2hhciwgMzI+
IG1fbmFtZTsKKyAgICAgICAgV1RGOjpWZWN0b3I8VUNoYXIsIDMyPiBtX3ZhbHVlOworICAgIH07
CisKKyAgICB0eXBlZGVmIFdURjo6VmVjdG9yPEF0dHJpYnV0ZSwgMTA+IEF0dHJpYnV0ZUxpc3Q7
CisgICAgdHlwZWRlZiBXVEY6OlZlY3RvcjxVQ2hhciwgMTAyND4gRGF0YVZlY3RvcjsKKworICAg
IEhUTUxUb2tlbigpIHsgY2xlYXIoKTsgfQorCisgICAgdm9pZCBjbGVhcigpCiAgICAgewotICAg
ICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUg
PT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRP
Q1RZUEUpOwotICAgICAgICBNYXJrdXBUb2tlbkJhc2U8SFRNTFRva2VuVHlwZXM+OjphcHBlbmRU
b05hbWUoY2hhcmFjdGVyKTsKKyAgICAgICAgbV90eXBlID0gVHlwZTo6VW5pbml0aWFsaXplZDsK
KyAgICAgICAgbV9yYW5nZS5tX3N0YXJ0ID0gMDsKKyAgICAgICAgbV9yYW5nZS5tX2VuZCA9IDA7
CisgICAgICAgIG1fYmFzZU9mZnNldCA9IDA7CisgICAgICAgIG1fZGF0YS5jbGVhcigpOworICAg
ICAgICBtX29yQWxsRGF0YSA9IDA7CisgICAgfQorCisgICAgYm9vbCBpc1VuaW5pdGlhbGl6ZWQo
KSB7IHJldHVybiBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQ7IH0KKyAg
ICBIVE1MVG9rZW5UeXBlczo6VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisK
KyAgICB2b2lkIG1ha2VFbmRPZkZpbGUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9
PSBIVE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCk7CisgICAgICAgIG1fdHlwZSA9IEhUTUxU
b2tlblR5cGVzOjpFbmRPZkZpbGU7CisgICAgfQorCisgICAgLyogUmFuZ2UgYW5kIG9mZnNldCBt
ZXRob2RzIGV4cG9zZWQgZm9yIEhUTUxTb3VyY2VUcmFja2VyIGFuZCBIVE1MVmlld1NvdXJjZVBh
cnNlciAqLworICAgIGludCBzdGFydEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZS5tX3N0
YXJ0OyB9CisgICAgaW50IGVuZEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZS5tX2VuZDsg
fQorCisgICAgdm9pZCBzZXRCYXNlT2Zmc2V0KGludCBvZmZzZXQpCisgICAgeworICAgICAgICBt
X2Jhc2VPZmZzZXQgPSBvZmZzZXQ7CisgICAgfQorCisgICAgdm9pZCBlbmQoaW50IGVuZE9mZnNl
dCkKKyAgICB7CisgICAgICAgIG1fcmFuZ2UubV9lbmQgPSBlbmRPZmZzZXQgLSBtX2Jhc2VPZmZz
ZXQ7CisgICAgfQorCisgICAgY29uc3QgRGF0YVZlY3RvciYgZGF0YSgpIGNvbnN0CisgICAgewor
ICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIgfHwgbV90
eXBlID09IEhUTUxUb2tlblR5cGVzOjpDb21tZW50IHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBl
czo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOworICAgICAg
ICByZXR1cm4gbV9kYXRhOworICAgIH0KKworICAgIGJvb2wgaXNBbGw4Qml0RGF0YSgpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gKG1fb3JBbGxEYXRhIDw9IDB4ZmYpOwogICAgIH0KIAog
ICAgIGNvbnN0IERhdGFWZWN0b3ImIG5hbWUoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJU
KG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tl
blR5cGVzOjpFbmRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpET0NUWVBFKTsKLSAg
ICAgICAgcmV0dXJuIE1hcmt1cFRva2VuQmFzZTxIVE1MVG9rZW5UeXBlcz46Om5hbWUoKTsKKyAg
ICAgICAgcmV0dXJuIG1fZGF0YTsKICAgICB9CiAKKyAgICB2b2lkIGFwcGVuZFRvTmFtZShVQ2hh
ciBjaGFyYWN0ZXIpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5
cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyB8fCBtX3R5
cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOworICAgICAgICBBU1NFUlQoY2hhcmFjdGVy
KTsKKyAgICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXIpOworICAgICAgICBtX29yQWxsRGF0
YSB8PSBjaGFyYWN0ZXI7CisgICAgfQorCisgICAgLy8gRklYTUU6IFJlbmFtZSB0aGlzIHRvIGNv
cHlOYW1lQXNTdHJpbmcoKS4KKyAgICBTdHJpbmcgbmFtZVN0cmluZygpIGNvbnN0CisgICAgewor
ICAgICAgICBpZiAoIW1fZGF0YS5zaXplKCkpCisgICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKKyAgICAgICAgaWYgKGlzQWxsOEJpdERhdGEoKSkKKyAgICAgICAgICAgIHJldHVybiBT
dHJpbmc6Om1ha2U4Qml0RnJvbTE2Qml0U291cmNlKG1fZGF0YS5kYXRhKCksIG1fZGF0YS5zaXpl
KCkpOworICAgICAgICByZXR1cm4gU3RyaW5nKG1fZGF0YS5kYXRhKCksIG1fZGF0YS5zaXplKCkp
OworICAgIH0KKworICAgIC8qIERPQ1RZUEUgVG9rZW5zICovCisKICAgICBib29sIGZvcmNlUXVp
cmtzKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlw
ZXM6OkRPQ1RZUEUpOwpAQCAtMTQyLDcgKzIzMiwyMTAgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gbV9kb2N0eXBlRGF0YS5yZWxlYXNlKCk7CiAgICAgfQogCisgICAgLyogU3RhcnQvRW5kIFRh
ZyBUb2tlbnMgKi8KKworICAgIGJvb2wgc2VsZkNsb3NpbmcoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09
IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOworICAgICAgICByZXR1cm4gbV9zZWxmQ2xvc2luZzsK
KyAgICB9CisKKyAgICB2b2lkIHNldFNlbGZDbG9zaW5nKCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9r
ZW5UeXBlczo6RW5kVGFnKTsKKyAgICAgICAgbV9zZWxmQ2xvc2luZyA9IHRydWU7CisgICAgfQor
CisgICAgdm9pZCBiZWdpblN0YXJ0VGFnKFVDaGFyIGNoYXJhY3RlcikKKyAgICB7CisgICAgICAg
IEFTU0VSVChjaGFyYWN0ZXIpOworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5
cGVzOjpVbmluaXRpYWxpemVkKTsKKyAgICAgICAgbV90eXBlID0gSFRNTFRva2VuVHlwZXM6OlN0
YXJ0VGFnOworICAgICAgICBtX3NlbGZDbG9zaW5nID0gZmFsc2U7CisgICAgICAgIG1fY3VycmVu
dEF0dHJpYnV0ZSA9IDA7CisgICAgICAgIG1fYXR0cmlidXRlcy5jbGVhcigpOworCisgICAgICAg
IG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICAgICAgbV9vckFsbERhdGEgfD0gY2hhcmFj
dGVyOworICAgIH0KKworICAgIHZvaWQgYmVnaW5FbmRUYWcoTENoYXIgY2hhcmFjdGVyKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXpl
ZCk7CisgICAgICAgIG1fdHlwZSA9IEhUTUxUb2tlblR5cGVzOjpFbmRUYWc7CisgICAgICAgIG1f
c2VsZkNsb3NpbmcgPSBmYWxzZTsKKyAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlID0gMDsKKyAg
ICAgICAgbV9hdHRyaWJ1dGVzLmNsZWFyKCk7CisKKyAgICAgICAgbV9kYXRhLmFwcGVuZChjaGFy
YWN0ZXIpOworICAgIH0KKworICAgIHZvaWQgYmVnaW5FbmRUYWcoY29uc3QgVmVjdG9yPExDaGFy
LCAzMj4mIGNoYXJhY3RlcnMpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxU
b2tlblR5cGVzOjpVbmluaXRpYWxpemVkKTsKKyAgICAgICAgbV90eXBlID0gSFRNTFRva2VuVHlw
ZXM6OkVuZFRhZzsKKyAgICAgICAgbV9zZWxmQ2xvc2luZyA9IGZhbHNlOworICAgICAgICBtX2N1
cnJlbnRBdHRyaWJ1dGUgPSAwOworICAgICAgICBtX2F0dHJpYnV0ZXMuY2xlYXIoKTsKKworICAg
ICAgICBtX2RhdGEuYXBwZW5kVmVjdG9yKGNoYXJhY3RlcnMpOworICAgIH0KKworICAgIHZvaWQg
YWRkTmV3QXR0cmlidXRlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRv
a2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKTsK
KyAgICAgICAgbV9hdHRyaWJ1dGVzLmdyb3cobV9hdHRyaWJ1dGVzLnNpemUoKSArIDEpOworICAg
ICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUgPSAmbV9hdHRyaWJ1dGVzLmxhc3QoKTsKKyNpZm5kZWYg
TkRFQlVHCisgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV9uYW1lUmFuZ2UubV9zdGFydCA9
IDA7CisgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV9uYW1lUmFuZ2UubV9lbmQgPSAwOwor
ICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX3N0YXJ0ID0gMDsKKyAg
ICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlUmFuZ2UubV9lbmQgPSAwOworI2VuZGlm
CisgICAgfQorCisgICAgdm9pZCBiZWdpbkF0dHJpYnV0ZU5hbWUoaW50IG9mZnNldCkKKyAgICB7
CisgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV9uYW1lUmFuZ2UubV9zdGFydCA9IG9mZnNl
dCAtIG1fYmFzZU9mZnNldDsKKyAgICB9CisKKyAgICB2b2lkIGVuZEF0dHJpYnV0ZU5hbWUoaW50
IG9mZnNldCkKKyAgICB7CisgICAgICAgIGludCBpbmRleCA9IG9mZnNldCAtIG1fYmFzZU9mZnNl
dDsKKyAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX25hbWVSYW5nZS5tX2VuZCA9IGluZGV4
OworICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX3N0YXJ0ID0gaW5k
ZXg7CisgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fZW5kID0gaW5k
ZXg7CisgICAgfQorCisgICAgdm9pZCBiZWdpbkF0dHJpYnV0ZVZhbHVlKGludCBvZmZzZXQpCisg
ICAgeworICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX3N0YXJ0ID0g
b2Zmc2V0IC0gbV9iYXNlT2Zmc2V0OworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgbV9jdXJyZW50
QXR0cmlidXRlLT5tX3ZhbHVlUmFuZ2UubV9lbmQgPSAwOworI2VuZGlmCisgICAgfQorCisgICAg
dm9pZCBlbmRBdHRyaWJ1dGVWYWx1ZShpbnQgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9jdXJy
ZW50QXR0cmlidXRlLT5tX3ZhbHVlUmFuZ2UubV9lbmQgPSBvZmZzZXQgLSBtX2Jhc2VPZmZzZXQ7
CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRUb0F0dHJpYnV0ZU5hbWUoVUNoYXIgY2hhcmFjdGVy
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7CisgICAgICAgIEFTU0VSVChtX3R5
cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBl
czo6RW5kVGFnKTsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGFkZCB0
aGUgZm9sbG93aW5nIEFTU0VSVCBvbmNlIHdlIGZpeAorICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI5NzEKKyAgICAgICAgLy8gICBBU1NFUlQobV9j
dXJyZW50QXR0cmlidXRlLT5tX25hbWVSYW5nZS5tX3N0YXJ0KTsKKyAgICAgICAgbV9jdXJyZW50
QXR0cmlidXRlLT5tX25hbWUuYXBwZW5kKGNoYXJhY3Rlcik7CisgICAgfQorCisgICAgdm9pZCBh
cHBlbmRUb0F0dHJpYnV0ZVZhbHVlKFVDaGFyIGNoYXJhY3RlcikKKyAgICB7CisgICAgICAgIEFT
U0VSVChjaGFyYWN0ZXIpOworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVz
OjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CisgICAgICAg
IEFTU0VSVChtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX3N0YXJ0KTsKKyAgICAg
ICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlLmFwcGVuZChjaGFyYWN0ZXIpOworICAgIH0K
KworICAgIHZvaWQgYXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShzaXplX3QgaSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVCghdmFsdWUuaXNFbXB0eSgpKTsKKyAgICAg
ICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09
IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOworICAgICAgICBtX2F0dHJpYnV0ZXNbaV0ubV92YWx1
ZS5hcHBlbmQodmFsdWUuY2hhcmFjdGVycygpLCB2YWx1ZS5sZW5ndGgoKSk7CisgICAgfQorCisg
ICAgY29uc3QgQXR0cmlidXRlTGlzdCYgYXR0cmlidXRlcygpIGNvbnN0CisgICAgeworICAgICAg
ICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0g
SFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CisgICAgICAgIHJldHVybiBtX2F0dHJpYnV0ZXM7Cisg
ICAgfQorCisgICAgLy8gVXNlZCBieSB0aGUgWFNTQXVkaXRvciB0byBudWtlIFhTUy1sYWRlbiBh
dHRyaWJ1dGVzLgorICAgIHZvaWQgZXJhc2VWYWx1ZU9mQXR0cmlidXRlKHNpemVfdCBpKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwg
bV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOworICAgICAgICBtX2F0dHJpYnV0ZXNb
aV0ubV92YWx1ZS5jbGVhcigpOworICAgIH0KKworICAgIC8qIENoYXJhY3RlciBUb2tlbnMgKi8K
KworICAgIC8vIFN0YXJ0aW5nIGEgY2hhcmFjdGVyIHRva2VuIHdvcmtzIHNsaWdodGx5IGRpZmZl
cmVudGx5IHRoYW4gc3RhcnRpbmcKKyAgICAvLyBvdGhlciB0eXBlcyBvZiB0b2tlbnMgYmVjYXVz
ZSB3ZSB3YW50IHRvIHNhdmUgYSBwZXItY2hhcmFjdGVyIGJyYW5jaC4KKyAgICB2b2lkIGVuc3Vy
ZUlzQ2hhcmFjdGVyVG9rZW4oKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1M
VG9rZW5UeXBlczo6VW5pbml0aWFsaXplZCB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNo
YXJhY3Rlcik7CisgICAgICAgIG1fdHlwZSA9IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXI7Cisg
ICAgfQorCisgICAgY29uc3QgRGF0YVZlY3RvciYgY2hhcmFjdGVycygpIGNvbnN0CisgICAgewor
ICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpOworICAg
ICAgICByZXR1cm4gbV9kYXRhOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kVG9DaGFyYWN0ZXIo
Y2hhciBjaGFyYWN0ZXIpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tl
blR5cGVzOjpDaGFyYWN0ZXIpOworICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rlcik7Cisg
ICAgfQorCisgICAgdm9pZCBhcHBlbmRUb0NoYXJhY3RlcihVQ2hhciBjaGFyYWN0ZXIpCisgICAg
eworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpOwor
ICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rlcik7CisgICAgICAgIG1fb3JBbGxEYXRhIHw9
IGNoYXJhY3RlcjsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZFRvQ2hhcmFjdGVyKGNvbnN0IFZl
Y3RvcjxMQ2hhciwgMzI+JiBjaGFyYWN0ZXJzKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFjdGVyKTsKKyAgICAgICAgbV9kYXRhLmFwcGVuZFZl
Y3RvcihjaGFyYWN0ZXJzKTsKKyAgICB9CisKKyAgICAvKiBDb21tZW50IFRva2VucyAqLworCisg
ICAgY29uc3QgRGF0YVZlY3RvciYgY29tbWVudCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NF
UlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpDb21tZW50KTsKKyAgICAgICAgcmV0dXJuIG1f
ZGF0YTsKKyAgICB9CisKKyAgICB2b2lkIGJlZ2luQ29tbWVudCgpCisgICAgeworICAgICAgICBB
U1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkKTsKKyAgICAgICAg
bV90eXBlID0gSFRNTFRva2VuVHlwZXM6OkNvbW1lbnQ7CisgICAgfQorCisgICAgdm9pZCBhcHBl
bmRUb0NvbW1lbnQoVUNoYXIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNoYXJh
Y3Rlcik7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNvbW1lbnQp
OworICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rlcik7CisgICAgICAgIG1fb3JBbGxEYXRh
IHw9IGNoYXJhY3RlcjsKKyAgICB9CisKKyAgICB2b2lkIGVyYXNlQ2hhcmFjdGVycygpCisgICAg
eworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpOwor
ICAgICAgICBtX2RhdGEuY2xlYXIoKTsKKyAgICAgICAgbV9vckFsbERhdGEgPSAwOworICAgIH0K
KwogcHJpdmF0ZToKKyAgICBIVE1MVG9rZW5UeXBlczo6VHlwZSBtX3R5cGU7CisgICAgQXR0cmli
dXRlOjpSYW5nZSBtX3JhbmdlOyAvLyBBbHdheXMgc3RhcnRzIGF0IHplcm8uCisgICAgaW50IG1f
YmFzZU9mZnNldDsKKyAgICBEYXRhVmVjdG9yIG1fZGF0YTsKKyAgICBVQ2hhciBtX29yQWxsRGF0
YTsKKworICAgIC8vIEZvciBTdGFydFRhZyBhbmQgRW5kVGFnCisgICAgYm9vbCBtX3NlbGZDbG9z
aW5nOworICAgIEF0dHJpYnV0ZUxpc3QgbV9hdHRyaWJ1dGVzOworCisgICAgLy8gQSBwb2ludGVy
IGludG8gbV9hdHRyaWJ1dGVzIHVzZWQgZHVyaW5nIGxleGluZy4KKyAgICBBdHRyaWJ1dGUqIG1f
Y3VycmVudEF0dHJpYnV0ZTsKKwogICAgIC8vIEZvciBET0NUWVBFCiAgICAgT3duUHRyPERvY3R5
cGVEYXRhPiBtX2RvY3R5cGVEYXRhOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxUb2tlblR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MVG9rZW5UeXBlcy5oCmluZGV4IDFhZWQyMWIxNTA2Yjk0NjhhODllNjQyYmI4YWJjY2FkZmEx
NGNkYjcuLjQwYjI0MzVjNjFlYjZhZWMyYzhjNDAwOTIwNTBmY2ZjMWM5ZjRkMGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlblR5cGVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuVHlwZXMuaApAQCAtMjYsOSArMjYsNiBA
QAogI2lmbmRlZiBIVE1MVG9rZW5UeXBlc19oCiAjZGVmaW5lIEhUTUxUb2tlblR5cGVzX2gKIAot
I2luY2x1ZGUgIk1hcmt1cFRva2VuQmFzZS5oIgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxUb2tlblR5cGVzIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaAppbmRleCBkYzdlOTI5YTk0YmY2YmJiYTI2
YzIyNzViZTRmMDQ1NWQ0NDVmYTYxLi44ZDQyM2FkNDg5MTI1YmQ4YjRhNWVkNWIzNDEzM2VkMmYx
Mzk4ZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5oCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpbmNsdWRlICJIVE1MVG9rZW4uaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vy
cy5oIgorI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJTdWZmaXhUcmVlLmgiCiAjaW5jbHVk
ZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL01hcmt1cFRva2VuQmFzZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA4ZDczOTAwOTQzM2YyMjM0ZWE1N2E0ZDA1YjQ4NDA5ZTJlMTJhOGQxLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNTAgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgTWFya3VwVG9rZW5CYXNlX2gKLSNkZWZpbmUgTWFya3VwVG9rZW5CYXNlX2gKLQotI2luY2x1
ZGUgIkVsZW1lbnRBdHRyaWJ1dGVEYXRhLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi0j
aWZuZGVmIE5ERUJVRwotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1zdGF0aWMgaW5saW5lIEF0dHJpYnV0ZSogZmluZEF0dHJpYnV0ZUluVmVjdG9y
KFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVzLCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
KQotewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhdHRyaWJ1dGVzLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgIGlmIChhdHRyaWJ1dGVzLmF0KGkpLm5hbWUoKS5tYXRjaGVzKG5hbWUpKQot
ICAgICAgICAgICAgcmV0dXJuICZhdHRyaWJ1dGVzLmF0KGkpOwotICAgIH0KLSAgICByZXR1cm4g
MDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVHlwZVNldD4KLWNsYXNzIE1hcmt1cFRva2VuQmFz
ZSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWFya3VwVG9rZW5CYXNlKTsKLSAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIFR5cGVTZXQgVHlwZTsK
LQotICAgIGNsYXNzIEF0dHJpYnV0ZSB7Ci0gICAgcHVibGljOgotICAgICAgICBjbGFzcyBSYW5n
ZSB7Ci0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIGludCBtX3N0YXJ0OwotICAgICAgICAg
ICAgaW50IG1fZW5kOwotICAgICAgICB9OwotCi0gICAgICAgIFJhbmdlIG1fbmFtZVJhbmdlOwot
ICAgICAgICBSYW5nZSBtX3ZhbHVlUmFuZ2U7Ci0gICAgICAgIFdURjo6VmVjdG9yPFVDaGFyLCAz
Mj4gbV9uYW1lOwotICAgICAgICBXVEY6OlZlY3RvcjxVQ2hhciwgMzI+IG1fdmFsdWU7Ci0gICAg
fTsKLQotICAgIHR5cGVkZWYgV1RGOjpWZWN0b3I8QXR0cmlidXRlLCAxMD4gQXR0cmlidXRlTGlz
dDsKLSAgICB0eXBlZGVmIFdURjo6VmVjdG9yPFVDaGFyLCAxMDI0PiBEYXRhVmVjdG9yOwotCi0g
ICAgTWFya3VwVG9rZW5CYXNlKCkgeyBjbGVhcigpOyB9Ci0gICAgdmlydHVhbCB+TWFya3VwVG9r
ZW5CYXNlKCkgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoKQotICAgIHsKLSAgICAgICAg
bV90eXBlID0gVHlwZVNldDo6VW5pbml0aWFsaXplZDsKLSAgICAgICAgbV9yYW5nZS5tX3N0YXJ0
ID0gMDsKLSAgICAgICAgbV9yYW5nZS5tX2VuZCA9IDA7Ci0gICAgICAgIG1fYmFzZU9mZnNldCA9
IDA7Ci0gICAgICAgIG1fZGF0YS5jbGVhcigpOwotICAgICAgICBtX29yQWxsRGF0YSA9IDA7Ci0g
ICAgfQotCi0gICAgYm9vbCBpc1VuaW5pdGlhbGl6ZWQoKSB7IHJldHVybiBtX3R5cGUgPT0gVHlw
ZVNldDo6VW5pbml0aWFsaXplZDsgfQotCi0gICAgaW50IHN0YXJ0SW5kZXgoKSBjb25zdCB7IHJl
dHVybiBtX3JhbmdlLm1fc3RhcnQ7IH0KLSAgICBpbnQgZW5kSW5kZXgoKSBjb25zdCB7IHJldHVy
biBtX3JhbmdlLm1fZW5kOyB9Ci0KLSAgICB2b2lkIHNldEJhc2VPZmZzZXQoaW50IG9mZnNldCkK
LSAgICB7Ci0gICAgICAgIG1fYmFzZU9mZnNldCA9IG9mZnNldDsKLSAgICB9Ci0KLSAgICB2b2lk
IGVuZChpbnQgZW5kT2Zmc2V0KQotICAgIHsKLSAgICAgICAgbV9yYW5nZS5tX2VuZCA9IGVuZE9m
ZnNldCAtIG1fYmFzZU9mZnNldDsKLSAgICB9Ci0KLSAgICB2b2lkIG1ha2VFbmRPZkZpbGUoKQot
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpVbmluaXRpYWxpemVkKTsK
LSAgICAgICAgbV90eXBlID0gVHlwZVNldDo6RW5kT2ZGaWxlOwotICAgIH0KLQotICAgIHZvaWQg
YmVnaW5TdGFydFRhZyhVQ2hhciBjaGFyYWN0ZXIpCi0gICAgewotICAgICAgICBBU1NFUlQoY2hh
cmFjdGVyKTsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpVbmluaXRpYWxpemVk
KTsKLSAgICAgICAgbV90eXBlID0gVHlwZVNldDo6U3RhcnRUYWc7Ci0gICAgICAgIG1fc2VsZkNs
b3NpbmcgPSBmYWxzZTsKLSAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlID0gMDsKLSAgICAgICAg
bV9hdHRyaWJ1dGVzLmNsZWFyKCk7Ci0KLSAgICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXIp
OwotICAgICAgICBtX29yQWxsRGF0YSB8PSBjaGFyYWN0ZXI7Ci0gICAgfQotCi0gICAgdm9pZCBi
ZWdpbkVuZFRhZyhMQ2hhciBjaGFyYWN0ZXIpCi0gICAgewotICAgICAgICBBU1NFUlQobV90eXBl
ID09IFR5cGVTZXQ6OlVuaW5pdGlhbGl6ZWQpOwotICAgICAgICBtX3R5cGUgPSBUeXBlU2V0OjpF
bmRUYWc7Ci0gICAgICAgIG1fc2VsZkNsb3NpbmcgPSBmYWxzZTsKLSAgICAgICAgbV9jdXJyZW50
QXR0cmlidXRlID0gMDsKLSAgICAgICAgbV9hdHRyaWJ1dGVzLmNsZWFyKCk7Ci0KLSAgICAgICAg
bV9kYXRhLmFwcGVuZChjaGFyYWN0ZXIpOwotICAgIH0KLQotICAgIHZvaWQgYmVnaW5FbmRUYWco
Y29uc3QgVmVjdG9yPExDaGFyLCAzMj4mIGNoYXJhY3RlcnMpCi0gICAgewotICAgICAgICBBU1NF
UlQobV90eXBlID09IFR5cGVTZXQ6OlVuaW5pdGlhbGl6ZWQpOwotICAgICAgICBtX3R5cGUgPSBU
eXBlU2V0OjpFbmRUYWc7Ci0gICAgICAgIG1fc2VsZkNsb3NpbmcgPSBmYWxzZTsKLSAgICAgICAg
bV9jdXJyZW50QXR0cmlidXRlID0gMDsKLSAgICAgICAgbV9hdHRyaWJ1dGVzLmNsZWFyKCk7Ci0K
LSAgICAgICAgbV9kYXRhLmFwcGVuZFZlY3RvcihjaGFyYWN0ZXJzKTsKLSAgICB9Ci0KLSAgICAv
LyBTdGFydGluZyBhIGNoYXJhY3RlciB0b2tlbiB3b3JrcyBzbGlnaHRseSBkaWZmZXJlbnRseSB0
aGFuIHN0YXJ0aW5nCi0gICAgLy8gb3RoZXIgdHlwZXMgb2YgdG9rZW5zIGJlY2F1c2Ugd2Ugd2Fu
dCB0byBzYXZlIGEgcGVyLWNoYXJhY3RlciBicmFuY2guCi0gICAgdm9pZCBlbnN1cmVJc0NoYXJh
Y3RlclRva2VuKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6VW5p
bml0aWFsaXplZCB8fCBtX3R5cGUgPT0gVHlwZVNldDo6Q2hhcmFjdGVyKTsKLSAgICAgICAgbV90
eXBlID0gVHlwZVNldDo6Q2hhcmFjdGVyOwotICAgIH0KLQotICAgIHZvaWQgYmVnaW5Db21tZW50
KCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6VW5pbml0aWFsaXpl
ZCk7Ci0gICAgICAgIG1fdHlwZSA9IFR5cGVTZXQ6OkNvbW1lbnQ7Ci0gICAgfQotCi0gICAgdm9p
ZCBhcHBlbmRUb0NoYXJhY3RlcihjaGFyIGNoYXJhY3RlcikKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gVHlwZVNldDo6Q2hhcmFjdGVyKTsKLSAgICAgICAgbV9kYXRhLmFwcGVuZChj
aGFyYWN0ZXIpOwotICAgIH0KLQotICAgIHZvaWQgYXBwZW5kVG9DaGFyYWN0ZXIoVUNoYXIgY2hh
cmFjdGVyKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpDaGFyYWN0
ZXIpOwotICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rlcik7Ci0gICAgICAgIG1fb3JBbGxE
YXRhIHw9IGNoYXJhY3RlcjsKLSAgICB9Ci0KLSAgICB2b2lkIGFwcGVuZFRvQ2hhcmFjdGVyKGNv
bnN0IFZlY3RvcjxMQ2hhciwgMzI+JiBjaGFyYWN0ZXJzKQotICAgIHsKLSAgICAgICAgQVNTRVJU
KG1fdHlwZSA9PSBUeXBlU2V0OjpDaGFyYWN0ZXIpOwotICAgICAgICBtX2RhdGEuYXBwZW5kVmVj
dG9yKGNoYXJhY3RlcnMpOwotICAgIH0KLQotICAgIHZvaWQgYXBwZW5kVG9Db21tZW50KFVDaGFy
IGNoYXJhY3RlcikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOwotICAgICAgICBB
U1NFUlQobV90eXBlID09IFR5cGVTZXQ6OkNvbW1lbnQpOwotICAgICAgICBtX2RhdGEuYXBwZW5k
KGNoYXJhY3Rlcik7Ci0gICAgICAgIG1fb3JBbGxEYXRhIHw9IGNoYXJhY3RlcjsKLSAgICB9Ci0K
LSAgICB2b2lkIGFkZE5ld0F0dHJpYnV0ZSgpCi0gICAgewotICAgICAgICBBU1NFUlQobV90eXBl
ID09IFR5cGVTZXQ6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBUeXBlU2V0OjpFbmRUYWcpOwotICAg
ICAgICBtX2F0dHJpYnV0ZXMuZ3JvdyhtX2F0dHJpYnV0ZXMuc2l6ZSgpICsgMSk7Ci0gICAgICAg
IG1fY3VycmVudEF0dHJpYnV0ZSA9ICZtX2F0dHJpYnV0ZXMubGFzdCgpOwotI2lmbmRlZiBOREVC
VUcKLSAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX25hbWVSYW5nZS5tX3N0YXJ0ID0gMDsK
LSAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX25hbWVSYW5nZS5tX2VuZCA9IDA7Ci0gICAg
ICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fc3RhcnQgPSAwOwotICAgICAg
ICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX2VuZCA9IDA7Ci0jZW5kaWYKLSAg
ICB9Ci0KLSAgICB2b2lkIGJlZ2luQXR0cmlidXRlTmFtZShpbnQgb2Zmc2V0KQotICAgIHsKLSAg
ICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX25hbWVSYW5nZS5tX3N0YXJ0ID0gb2Zmc2V0IC0g
bV9iYXNlT2Zmc2V0OwotICAgIH0KLQotICAgIHZvaWQgZW5kQXR0cmlidXRlTmFtZShpbnQgb2Zm
c2V0KQotICAgIHsKLSAgICAgICAgaW50IGluZGV4ID0gb2Zmc2V0IC0gbV9iYXNlT2Zmc2V0Owot
ICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fbmFtZVJhbmdlLm1fZW5kID0gaW5kZXg7Ci0g
ICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fc3RhcnQgPSBpbmRleDsK
LSAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlUmFuZ2UubV9lbmQgPSBpbmRleDsK
LSAgICB9Ci0KLSAgICB2b2lkIGJlZ2luQXR0cmlidXRlVmFsdWUoaW50IG9mZnNldCkKLSAgICB7
Ci0gICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fc3RhcnQgPSBvZmZz
ZXQgLSBtX2Jhc2VPZmZzZXQ7Ci0jaWZuZGVmIE5ERUJVRwotICAgICAgICBtX2N1cnJlbnRBdHRy
aWJ1dGUtPm1fdmFsdWVSYW5nZS5tX2VuZCA9IDA7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICB2b2lk
IGVuZEF0dHJpYnV0ZVZhbHVlKGludCBvZmZzZXQpCi0gICAgewotICAgICAgICBtX2N1cnJlbnRB
dHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX2VuZCA9IG9mZnNldCAtIG1fYmFzZU9mZnNldDsKLSAg
ICB9Ci0KLSAgICB2b2lkIGFwcGVuZFRvQXR0cmlidXRlTmFtZShVQ2hhciBjaGFyYWN0ZXIpCi0g
ICAgewotICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9
PSBUeXBlU2V0OjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gVHlwZVNldDo6RW5kVGFnKTsKLSAgICAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGFkZCB0aGUgZm9sbG93aW5nIEFTU0VS
VCBvbmNlIHdlIGZpeAotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjI5NzEKLSAgICAgICAgLy8gICBBU1NFUlQobV9jdXJyZW50QXR0cmlidXRlLT5t
X25hbWVSYW5nZS5tX3N0YXJ0KTsKLSAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX25hbWUu
YXBwZW5kKGNoYXJhY3Rlcik7Ci0gICAgfQotCi0gICAgdm9pZCBhcHBlbmRUb0F0dHJpYnV0ZVZh
bHVlKFVDaGFyIGNoYXJhY3RlcikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOwot
ICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBU
eXBlU2V0OjpFbmRUYWcpOwotICAgICAgICBBU1NFUlQobV9jdXJyZW50QXR0cmlidXRlLT5tX3Zh
bHVlUmFuZ2UubV9zdGFydCk7Ci0gICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZS5h
cHBlbmQoY2hhcmFjdGVyKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFwcGVuZFRvQXR0cmlidXRlVmFs
dWUoc2l6ZV90IGksIGNvbnN0IFN0cmluZyYgdmFsdWUpCi0gICAgewotICAgICAgICBBU1NFUlQo
IXZhbHVlLmlzRW1wdHkoKSk7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6U3Rh
cnRUYWcgfHwgbV90eXBlID09IFR5cGVTZXQ6OkVuZFRhZyk7Ci0gICAgICAgIG1fYXR0cmlidXRl
c1tpXS5tX3ZhbHVlLmFwcGVuZCh2YWx1ZS5jaGFyYWN0ZXJzKCksIHZhbHVlLmxlbmd0aCgpKTsK
LSAgICB9Ci0KLSAgICB0eXBlbmFtZSBUeXBlOjpUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBt
X3R5cGU7IH0KLQotICAgIGJvb2wgc2VsZkNsb3NpbmcoKSBjb25zdAotICAgIHsKLSAgICAgICAg
QVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gVHlwZVNldDo6
RW5kVGFnKTsKLSAgICAgICAgcmV0dXJuIG1fc2VsZkNsb3Npbmc7Ci0gICAgfQotCi0gICAgdm9p
ZCBzZXRTZWxmQ2xvc2luZygpCi0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVT
ZXQ6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBUeXBlU2V0OjpFbmRUYWcpOwotICAgICAgICBtX3Nl
bGZDbG9zaW5nID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBjb25zdCBBdHRyaWJ1dGVMaXN0JiBhdHRy
aWJ1dGVzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6
U3RhcnRUYWcgfHwgbV90eXBlID09IFR5cGVTZXQ6OkVuZFRhZyk7Ci0gICAgICAgIHJldHVybiBt
X2F0dHJpYnV0ZXM7Ci0gICAgfQotCi0gICAgdm9pZCBlcmFzZUNoYXJhY3RlcnMoKQotICAgIHsK
LSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpDaGFyYWN0ZXIpOwotICAgICAgICBt
X2RhdGEuY2xlYXIoKTsKLSAgICAgICAgbV9vckFsbERhdGEgPSAwOwotICAgIH0KLQotICAgIHZv
aWQgZXJhc2VWYWx1ZU9mQXR0cmlidXRlKHNpemVfdCBpKQotICAgIHsKLSAgICAgICAgQVNTRVJU
KG1fdHlwZSA9PSBUeXBlU2V0OjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gVHlwZVNldDo6RW5kVGFn
KTsKLSAgICAgICAgbV9hdHRyaWJ1dGVzW2ldLm1fdmFsdWUuY2xlYXIoKTsKLSAgICB9Ci0KLSAg
ICBjb25zdCBEYXRhVmVjdG9yJiBjaGFyYWN0ZXJzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChtX3R5cGUgPT0gVHlwZVNldDo6Q2hhcmFjdGVyKTsKLSAgICAgICAgcmV0dXJuIG1fZGF0
YTsKLSAgICB9Ci0KLSAgICBjb25zdCBEYXRhVmVjdG9yJiBjb21tZW50KCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6Q29tbWVudCk7Ci0gICAgICAgIHJl
dHVybiBtX2RhdGE7Ci0gICAgfQotCi0gICAgY29uc3QgRGF0YVZlY3RvciYgZGF0YSgpIGNvbnN0
Ci0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OkNoYXJhY3RlciB8fCBt
X3R5cGUgPT0gVHlwZVNldDo6Q29tbWVudCB8fCBtX3R5cGUgPT0gVHlwZVNldDo6U3RhcnRUYWcg
fHwgbV90eXBlID09IFR5cGVTZXQ6OkVuZFRhZyk7Ci0gICAgICAgIHJldHVybiBtX2RhdGE7Ci0g
ICAgfQotCi0gICAgYm9vbCBpc0FsbDhCaXREYXRhKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiAobV9vckFsbERhdGEgPD0gMHhmZik7Ci0gICAgfQotCi0gICAgY29uc3QgRGF0YVZlY3Rv
ciYgbmFtZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9kYXRhOwotICAgIH0KLQot
ICAgIFN0cmluZyBuYW1lU3RyaW5nKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICghbV9kYXRh
LnNpemUoKSkKLSAgICAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAgICAgICBpZiAo
aXNBbGw4Qml0RGF0YSgpKQotICAgICAgICAgICAgcmV0dXJuIFN0cmluZzo6bWFrZThCaXRGcm9t
MTZCaXRTb3VyY2UobV9kYXRhLmRhdGEoKSwgbV9kYXRhLnNpemUoKSk7Ci0gICAgICAgIHJldHVy
biBTdHJpbmcobV9kYXRhLmRhdGEoKSwgbV9kYXRhLnNpemUoKSk7Ci0gICAgfQotCi1wcm90ZWN0
ZWQ6Ci0KLSNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBwcmludFN0cmluZyhjb25zdCBEYXRhVmVj
dG9yJiBzdHJpbmcpIGNvbnN0Ci0gICAgewotICAgICAgICBEYXRhVmVjdG9yOjpjb25zdF9pdGVy
YXRvciBpdGVyID0gc3RyaW5nLmJlZ2luKCk7Ci0gICAgICAgIGZvciAoOyBpdGVyICE9IHN0cmlu
Zy5lbmQoKTsgKytpdGVyKQotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlbGMiLCB3Y2hh
cl90KCppdGVyKSk7Ci0gICAgfQotI2VuZGlmIC8vIE5ERUJVRwotCi0gICAgdm9pZCBhcHBlbmRU
b05hbWUoVUNoYXIgY2hhcmFjdGVyKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7
Ci0gICAgICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKLSAgICAgICAgbV9vckFsbERhdGEg
fD0gY2hhcmFjdGVyOwotICAgIH0KLQotICAgIHR5cGVuYW1lIFR5cGU6OlR5cGUgbV90eXBlOwot
ICAgIHR5cGVuYW1lIEF0dHJpYnV0ZTo6UmFuZ2UgbV9yYW5nZTsgLy8gQWx3YXlzIHN0YXJ0cyBh
dCB6ZXJvLgotICAgIGludCBtX2Jhc2VPZmZzZXQ7Ci0gICAgRGF0YVZlY3RvciBtX2RhdGE7Ci0g
ICAgVUNoYXIgbV9vckFsbERhdGE7Ci0KLSAgICAvLyBGb3IgU3RhcnRUYWcgYW5kIEVuZFRhZwot
ICAgIGJvb2wgbV9zZWxmQ2xvc2luZzsKLSAgICBBdHRyaWJ1dGVMaXN0IG1fYXR0cmlidXRlczsK
LQotICAgIC8vIEEgcG9pbnRlciBpbnRvIG1fYXR0cmlidXRlcyB1c2VkIGR1cmluZyBsZXhpbmcu
Ci0gICAgQXR0cmlidXRlKiBtX2N1cnJlbnRBdHRyaWJ1dGU7Ci19OwotCi19Ci0KLSNlbmRpZiAv
LyBNYXJrdXBUb2tlbkJhc2VfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187664</attachid>
            <date>2013-02-11 14:05:42 -0800</date>
            <delta_ts>2013-02-11 15:02:15 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-109483-20130211140213.patch</filename>
            <type>text/plain</type>
            <size>32221</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTZjNDE4ZjU0NTgzNzgz
NWQ4NmZlODU4OWI0MmU2YzljYWI0NTBmNy4uMDZlZTZiNzZiODhlNTg4NmUwMTRhODhjMzFjN2I0
MTE0YTgwYmZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDEzLTAyLTExICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBGb2xkIE1hcmt1cFRva2VuQmFz
ZSBpbnRvIEhUTUxUb2tlbiBub3cgdGhhdCBpdCBoYXMgbm8gb3RoZXIgc3ViY2xhc3NlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NDgzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBUaGlzIGRlbGV0ZXMgYW4g
ZXBpYyBhbW91bnQgb2YgdGVtcGxhdGUgeXVjaywgYXMgd2VsbCBhcyByZW1vdmVzCisgICAgICAg
IGEgdnRhYmxlICE/ISBmcm9tIEhUTUxUb2tlbi4KKworICAgICAgICBUaGlzIHBhdmVzIHRoZSB3
YXkgZm9yIGZ1cnRoZXIgY2xlYW51cCBvZiBIVE1MVG9rZW4gbm93IHRoYXQgd2UKKyAgICAgICAg
Y2FuIHNlZSB0aGUgd2hvbGUgb2JqZWN0IGF0IG9uY2UuCisgICAgICAgIFdlJ2xsIGFsc28gcHJv
YmFibHkgcmUtY3JlYXRlIGFuIEhUTUxUb2tlbi5jcHAgYWdhaW4sIG5vdyB0aGF0IHdlJ3JlCisg
ICAgICAgIGZyZWUgZnJvbSB0aGUgY2hhaW5zIG9mIHRlbXBsYXRlIG5vbnNlbnNlLgorCisgICAg
ICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
ajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAq
IFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRN
TFRva2VuLmg6CisgICAgICAgIChXZWJDb3JlOjpmaW5kQXR0cmlidXRlSW5WZWN0b3IpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChIVE1MVG9rZW4pOgorICAgICAgICAoQXR0cmlidXRl
KToKKyAgICAgICAgKFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6SFRNTFRv
a2VuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6Y2xlYXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRva2VuOjppc1VuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRva2VuOjp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6bWFrZUVuZE9mRmls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OnN0YXJ0SW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRva2VuOjplbmRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9r
ZW46OnNldEJhc2VPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjplbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUb2tlbjo6aXNBbGw4Qml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46Om5h
bWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjphcHBlbmRUb05hbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRva2VuOjpuYW1lU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUb2tlbjo6c2VsZkNsb3NpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpzZXRT
ZWxmQ2xvc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmJlZ2luU3RhcnRUYWcp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpiZWdpbkVuZFRhZyk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVG9rZW46OmFkZE5ld0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVG9rZW46OmJlZ2luQXR0cmlidXRlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9r
ZW46OmVuZEF0dHJpYnV0ZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpiZWdp
bkF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6ZW5kQXR0cmli
dXRlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjphcHBlbmRUb0F0dHJpYnV0
ZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjphcHBlbmRUb0F0dHJpYnV0ZVZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YXR0cmlidXRlcyk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVG9rZW46OmVyYXNlVmFsdWVPZkF0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVG9rZW46OmVuc3VyZUlzQ2hhcmFjdGVyVG9rZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRva2VuOjpjaGFyYWN0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tl
bjo6YXBwZW5kVG9DaGFyYWN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpjb21t
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YmVnaW5Db21tZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YXBwZW5kVG9Db21tZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUb2tlbjo6ZXJhc2VDaGFyYWN0ZXJzKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9I
VE1MVG9rZW5UeXBlcy5oOgorICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaDoKKyAg
ICAgICAgKiB4bWwvcGFyc2VyL01hcmt1cFRva2VuQmFzZS5oOiBSZW1vdmVkLgorCiAyMDEzLTAy
LTExICBDaHJpc3RvcGhlIER1bWV6ICA8Y2guZHVtZXpAc2lzYS5zYW1zdW5nLmNvbT4KIAogICAg
ICAgICBbRUZMXSBmYXN0L2Zvcm1zL251bWJlci9udW1iZXItbDEwbi1pbnB1dC5odG1sIGlzIGZh
aWxpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGE3MGE1YmJmYmM4ZWUwYmNh
NWM4NTgxMTYyZDcxZGQyMzMxOWQ5NjMuLjk0NjlhMjFhYTkzYzJkYmQzMmQ5MGQ4NDU2MmY0Mjhh
OTc2YWM3OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
KysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDcwOSw3ICs0NzA5
LDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clRocmVhZC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmggXAog
CVNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5l
cy5oIFwKLQlTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01hcmt1cFRva2VuQmFzZS5oIFwKIAlT
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01hcmt1cFRva2VuaXplckJhc2UuaCBcCiAJU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbml6ZXJJbmxpbmVzLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4
IDUwMTYzMDliODFhNDUwYTFiOTJjZTkxZTNiNDg0OTAzNmViMWYyMzguLjRlMDY4ZTJiYTM2ZDU0
OTA2OGYwNzZmNWUzYzViNDA2Mzg5NmQ3NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMjg1MCw3ICsyODUw
LDYgQEAgSEVBREVSUyArPSBcCiAgICAgd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaCBcCiAg
ICAgd29ya2Vycy9Xb3JrZXJUaHJlYWQuaCBcCiAgICAgeG1sL3BhcnNlci9DaGFyYWN0ZXJSZWZl
cmVuY2VQYXJzZXJJbmxpbmVzLmggXAotICAgIHhtbC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmgg
XAogICAgIHhtbC9wYXJzZXIvTWFya3VwVG9rZW5pemVyQmFzZS5oIFwKICAgICB4bWwvcGFyc2Vy
L01hcmt1cFRva2VuaXplcklubGluZXMuaCBcCiAgICAgeG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA1M2Q0MTg4MDA1YjFjMjZlYzMxYzMxOGY5MDlk
MWQ5ODgxOTlhMWY0Li41NWNjYWUxZTQ3ZDQ1MjU1ZGJkMjZjZDA4MmU4MjI3NjQ5ZjQyMDcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCkBAIC0yNjcwLDcgKzI2NzAsNiBAQAogICAgICAgICAgICAgJ3dvcmtl
cnMvY2hyb21pdW0vV29ya2VyQ29udGV4dFByb3h5Q2hyb21pdW0uY3BwJywKICAgICAgICAgICAg
ICd3b3JrZXJzL2Nocm9taXVtL1dvcmtlckNvbnRleHRQcm94eUNocm9taXVtLmgnLAogICAgICAg
ICAgICAgJ3htbC9wYXJzZXIvQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5lcy5oJywKLSAg
ICAgICAgICAgICd4bWwvcGFyc2VyL01hcmt1cFRva2VuQmFzZS5oJywKICAgICAgICAgICAgICd4
bWwvcGFyc2VyL01hcmt1cFRva2VuaXplckJhc2UuaCcsCiAgICAgICAgICAgICAneG1sL3BhcnNl
ci9NYXJrdXBUb2tlbml6ZXJJbmxpbmVzLmgnLAogICAgICAgICAgICAgJ3htbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXIuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKaW5kZXggZmY1OTMyYjg2MjQ1OTEzODcyZTQ2ZWY4Yzg5MDYzYmU1ZGQwZGNm
OC4uMzUzYWViODNhMDhhZjJjM2Q3ZjI4N2NkOGVjM2Y1OGRiOTQ3ZmM0NiAxMDA3NTUKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTQ5MDkwLDEwICs0OTA5
MCw2IEBACiAJCQkJTmFtZT0icGFyc2VyIgogCQkJCT4KIAkJCQk8RmlsZQotCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHhtbFxwYXJzZXJcTWFya3VwVG9rZW5CYXNlLmgiCi0JCQkJCT4KLQkJCQk8L0Zp
bGU+Ci0JCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlx4bWxccGFyc2VyXE1hcmt1cFRv
a2VuaXplckJhc2UuaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IGE2NDJhNWIzYjUxMGUxMGVmM2Y1
YTM4MTk3MWQyYTkxZDc1MTBhMWYuLjczZTE1MDMyOWM4ZmRkNzk3MDVkOGQ0NzlmZWNkN2I1ZGE1
OTI1ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvagpAQCAtNzUxMyw3ICs3NTEzLDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHht
bFxYU0xURXh0ZW5zaW9ucy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ceG1sXFhT
TFRQcm9jZXNzb3IuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHhtbFxYU0xUVW5p
Y29kZVNvcnQuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHhtbFxwYXJzZXJcTWFy
a3VwVG9rZW5CYXNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx4bWxccGFyc2Vy
XE1hcmt1cFRva2VuaXplckJhc2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHht
bFxwYXJzZXJcTWFya3VwVG9rZW5pemVySW5saW5lcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ceG1sXHBhcnNlclxYTUxEb2N1bWVudFBhcnNlci5oIiAvPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmlu
ZGV4IDhiZDk3YjNhY2RiMTRkZTA1ZTk2YTZkMTU3Nzc5NzVjZGVhNDc4MWMuLmM3OTJhZTAxNDA3
ZjNkOWZiNTY0NmI2NzdmZWE3MDYxNjIzMjQxZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTExMzEzLDkg
KzExMzEzLDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHhtbFxYU0xUVW5pY29kZVNv
cnQuaCI+CiAgICAgICA8RmlsdGVyPnhtbDwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ceG1sXHBhcnNlclxNYXJrdXBUb2tlbkJhc2UuaCI+Ci0g
ICAgICA8RmlsdGVyPnhtbFxwYXJzZXI8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHhtbFxwYXJzZXJcTWFya3VwVG9rZW5pemVyQmFzZS5oIj4K
ICAgICAgIDxGaWx0ZXI+eG1sXHBhcnNlcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGE0YzA2OWFkNTkxMTgxM2I4MWE4MzUxNTM4YmY0Y2FlYmY0MjE5ZDMuLjA3ZWUxNmQwNmQ4NTgz
N2VmNTgzODNmMzc4YmQ0ZDgxM2M5MGU3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ4LDcgKzQ4LDYgQEAKIAkJMDAxNDYy
OEExMDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vzc0VudHJ5LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwMTQ2Mjg4MTAzQ0QxREUwMDBCMjBE
QiAvKiBPcmlnaW5BY2Nlc3NFbnRyeS5jcHAgKi87IH07CiAJCTAwMTQ2MjhCMTAzQ0QxREUwMDBC
MjBEQiAvKiBPcmlnaW5BY2Nlc3NFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDAxNDYyODkxMDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFjY2Vz
c0VudHJ5LmggKi87IH07CiAJCTAwM0YxRkVBMTFFNkFCNDMwMDgyNThEOSAvKiBVc2VyQ29udGVu
dFR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
MDNGMUZFOTExRTZBQjQzMDA4MjU4RDkgLyogVXNlckNvbnRlbnRUeXBlcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTAwQTYyOUMxMTNEMEJFQzcw
MDUwQUM1MiAvKiBNYXJrdXBUb2tlbkJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDAwQTYyOUMwMTNEMEJFQzcwMDUwQUM1MiAvKiBNYXJrdXBUb2tl
bkJhc2UuaCAqLzsgfTsKIAkJMDBCOTMxODcxM0JBOERCMzAwMzVBOTQ4IC8qIFhNTERvY3VtZW50
UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDAwQjkzMTgxMTNCQTg2N0YwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlci5jcHAgKi87IH07
CiAJCTAwQjkzMTg4MTNCQThEQkEwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDBCOTMxODIxM0JBODY3
RjAwMzVBOTQ4IC8qIFhNTERvY3VtZW50UGFyc2VyLmggKi87IH07CiAJCTAwQjkzMTg5MTNCQThE
QkMwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDBCOTMxODMxM0JBODY3RjAwMzVBOTQ4
IC8qIFhNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgKi87IH07CkBAIC03Mjk0LDcgKzcyOTMs
NiBAQAogCQkwMDE0NjI4ODEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50cnkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT3JpZ2luQWNjZXNzRW50cnku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMDE0NjI4OTEwM0NEMURFMDAwQjIw
REIgLyogT3JpZ2luQWNjZXNzRW50cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gT3JpZ2luQWNjZXNzRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDAz
RjFGRTkxMUU2QUI0MzAwODI1OEQ5IC8qIFVzZXJDb250ZW50VHlwZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckNvbnRlbnRUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkwMEE2MjlDMDEzRDBCRUM3MDA1MEFDNTIgLyogTWFya3VwVG9rZW5CYXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmt1cFRva2VuQmFzZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMEI5MzE4MTEzQkE4NjdGMDAzNUE5NDggLyog
WE1MRG9jdW1lbnRQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gWE1MRG9jdW1lbnRQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
MEI5MzE4MjEzQkE4NjdGMDAzNUE5NDggLyogWE1MRG9jdW1lbnRQYXJzZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWE1MRG9jdW1lbnRQYXJzZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDBCOTMxODMxM0JBODY3RjAwMzVBOTQ4IC8qIFhNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBY
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTQ1NzEsNyArMTQ1NjksNiBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKIAkJCQk5N0I4RkZDRjE2QUU3RjkyMDAzODM4OEQgLyogQ2hhcmFjdGVyUmVmZXJlbmNlUGFy
c2VySW5saW5lcy5oICovLAotCQkJCTAwQTYyOUMwMTNEMEJFQzcwMDUwQUM1MiAvKiBNYXJrdXBU
b2tlbkJhc2UuaCAqLywKIAkJCQkwMEM2MEU0MTEzRDc5N0FFMDA5MkEyNzUgLyogTWFya3VwVG9r
ZW5pemVyQmFzZS5oICovLAogCQkJCTAwQzYwRTNFMTNENzZEN0UwMDkyQTI3NSAvKiBNYXJrdXBU
b2tlbml6ZXJJbmxpbmVzLmggKi8sCiAJCQkJMDBCOTMxODExM0JBODY3RjAwMzVBOTQ4IC8qIFhN
TERvY3VtZW50UGFyc2VyLmNwcCAqLywKQEAgLTI1MzAyLDcgKzI1Mjk5LDYgQEAKIAkJCQkxQThG
NkJDNjBEQjU1Q0RDMDAxREI3OTQgLyogTWFuaWZlc3RQYXJzZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTkzMzA5REY4MDk5RTY0OTIwMDU2RTU4MSAvKiBtYXJrdXAuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk3MjhDMzE0MTI2OEU0MzkwMDQxRTg5QiAvKiBNYXJrdXBBY2N1bXVsYXRvci5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJMDBBNjI5QzExM0QwQkVDNzAwNTBBQzUyIC8qIE1hcmt1cFRva2VuQmFz
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDBDNjBFNDIxM0Q3OTdBRTAwOTJBMjc1IC8qIE1hcmt1
cFRva2VuaXplckJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTAwQzYwRTNGMTNENzZEN0UwMDky
QTI3NSAvKiBNYXJrdXBUb2tlbml6ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQUJF
NzJGNTEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCmluZGV4IDRhZmExNjAxN2Y5MzczMzM4
NjJiOWI5MjcxNTMzZjY3ZWQzNGQzMzMuLmJmYmRlMjA0ODM0MjYxNTc3ZmU3ZGNkZWIzYzAwMDA1
ZDA3NjY0ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tl
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUsIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsOSArMjYs
OSBAQAogI2lmbmRlZiBIVE1MVG9rZW5faAogI2RlZmluZSBIVE1MVG9rZW5faAogCisjaW5jbHVk
ZSAiQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiQ29tcGFjdEhUTUxUb2tlbi5oIgogI2luY2x1ZGUg
IkhUTUxUb2tlblR5cGVzLmgiCi0jaW5jbHVkZSAiTWFya3VwVG9rZW5CYXNlLmgiCiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTUyLDIw
ICs1MiwxMTAgQEAgcHVibGljOgogICAgIGJvb2wgbV9mb3JjZVF1aXJrczsKIH07CiAKLWNsYXNz
IEhUTUxUb2tlbiA6IHB1YmxpYyBNYXJrdXBUb2tlbkJhc2U8SFRNTFRva2VuVHlwZXM+IHsKK3N0
YXRpYyBpbmxpbmUgQXR0cmlidXRlKiBmaW5kQXR0cmlidXRlSW5WZWN0b3IoVmVjdG9yPEF0dHJp
YnV0ZT4mIGF0dHJpYnV0ZXMsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCit7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGF0dHJpYnV0ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
aWYgKGF0dHJpYnV0ZXMuYXQoaSkubmFtZSgpLm1hdGNoZXMobmFtZSkpCisgICAgICAgICAgICBy
ZXR1cm4gJmF0dHJpYnV0ZXMuYXQoaSk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitjbGFz
cyBIVE1MVG9rZW4geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhUTUxUb2tlbik7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgdm9pZCBhcHBlbmRUb05hbWUo
VUNoYXIgY2hhcmFjdGVyKQorICAgIHR5cGVkZWYgSFRNTFRva2VuVHlwZXMgVHlwZTsKKworICAg
IGNsYXNzIEF0dHJpYnV0ZSB7CisgICAgcHVibGljOgorICAgICAgICBjbGFzcyBSYW5nZSB7Cisg
ICAgICAgIHB1YmxpYzoKKyAgICAgICAgICAgIGludCBtX3N0YXJ0OworICAgICAgICAgICAgaW50
IG1fZW5kOworICAgICAgICB9OworCisgICAgICAgIFJhbmdlIG1fbmFtZVJhbmdlOworICAgICAg
ICBSYW5nZSBtX3ZhbHVlUmFuZ2U7CisgICAgICAgIFdURjo6VmVjdG9yPFVDaGFyLCAzMj4gbV9u
YW1lOworICAgICAgICBXVEY6OlZlY3RvcjxVQ2hhciwgMzI+IG1fdmFsdWU7CisgICAgfTsKKwor
ICAgIHR5cGVkZWYgV1RGOjpWZWN0b3I8QXR0cmlidXRlLCAxMD4gQXR0cmlidXRlTGlzdDsKKyAg
ICB0eXBlZGVmIFdURjo6VmVjdG9yPFVDaGFyLCAxMDI0PiBEYXRhVmVjdG9yOworCisgICAgSFRN
TFRva2VuKCkgeyBjbGVhcigpOyB9CisKKyAgICB2b2lkIGNsZWFyKCkKICAgICB7Ci0gICAgICAg
IEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBI
VE1MVG9rZW5UeXBlczo6RW5kVGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQ
RSk7Ci0gICAgICAgIE1hcmt1cFRva2VuQmFzZTxIVE1MVG9rZW5UeXBlcz46OmFwcGVuZFRvTmFt
ZShjaGFyYWN0ZXIpOworICAgICAgICBtX3R5cGUgPSBUeXBlOjpVbmluaXRpYWxpemVkOworICAg
ICAgICBtX3JhbmdlLm1fc3RhcnQgPSAwOworICAgICAgICBtX3JhbmdlLm1fZW5kID0gMDsKKyAg
ICAgICAgbV9iYXNlT2Zmc2V0ID0gMDsKKyAgICAgICAgbV9kYXRhLmNsZWFyKCk7CisgICAgICAg
IG1fb3JBbGxEYXRhID0gMDsKKyAgICB9CisKKyAgICBib29sIGlzVW5pbml0aWFsaXplZCgpIHsg
cmV0dXJuIG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6VW5pbml0aWFsaXplZDsgfQorICAgIEhU
TUxUb2tlblR5cGVzOjpUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKworICAg
IHZvaWQgbWFrZUVuZE9mRmlsZSgpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IEhU
TUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkKTsKKyAgICAgICAgbV90eXBlID0gSFRNTFRva2Vu
VHlwZXM6OkVuZE9mRmlsZTsKKyAgICB9CisKKyAgICAvKiBSYW5nZSBhbmQgb2Zmc2V0IG1ldGhv
ZHMgZXhwb3NlZCBmb3IgSFRNTFNvdXJjZVRyYWNrZXIgYW5kIEhUTUxWaWV3U291cmNlUGFyc2Vy
ICovCisgICAgaW50IHN0YXJ0SW5kZXgoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlLm1fc3RhcnQ7
IH0KKyAgICBpbnQgZW5kSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlLm1fZW5kOyB9CisK
KyAgICB2b2lkIHNldEJhc2VPZmZzZXQoaW50IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fYmFz
ZU9mZnNldCA9IG9mZnNldDsKKyAgICB9CisKKyAgICB2b2lkIGVuZChpbnQgZW5kT2Zmc2V0KQor
ICAgIHsKKyAgICAgICAgbV9yYW5nZS5tX2VuZCA9IGVuZE9mZnNldCAtIG1fYmFzZU9mZnNldDsK
KyAgICB9CisKKyAgICBjb25zdCBEYXRhVmVjdG9yJiBkYXRhKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3RlciB8fCBtX3R5cGUg
PT0gSFRNTFRva2VuVHlwZXM6OkNvbW1lbnQgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpT
dGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CisgICAgICAgIHJl
dHVybiBtX2RhdGE7CisgICAgfQorCisgICAgYm9vbCBpc0FsbDhCaXREYXRhKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiAobV9vckFsbERhdGEgPD0gMHhmZik7CiAgICAgfQogCiAgICAg
Y29uc3QgRGF0YVZlY3RvciYgbmFtZSgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQobV90
eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlw
ZXM6OkVuZFRhZyB8fCBtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkRPQ1RZUEUpOwotICAgICAg
ICByZXR1cm4gTWFya3VwVG9rZW5CYXNlPEhUTUxUb2tlblR5cGVzPjo6bmFtZSgpOworICAgICAg
ICByZXR1cm4gbV9kYXRhOwogICAgIH0KIAorICAgIHZvaWQgYXBwZW5kVG9OYW1lKFVDaGFyIGNo
YXJhY3RlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6
OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnIHx8IG1fdHlwZSA9
PSBIVE1MVG9rZW5UeXBlczo6RE9DVFlQRSk7CisgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOwor
ICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rlcik7CisgICAgICAgIG1fb3JBbGxEYXRhIHw9
IGNoYXJhY3RlcjsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogUmVuYW1lIHRoaXMgdG8gY29weU5h
bWVBc1N0cmluZygpLgorICAgIFN0cmluZyBuYW1lU3RyaW5nKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIGlmICghbV9kYXRhLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygp
OworICAgICAgICBpZiAoaXNBbGw4Qml0RGF0YSgpKQorICAgICAgICAgICAgcmV0dXJuIFN0cmlu
Zzo6bWFrZThCaXRGcm9tMTZCaXRTb3VyY2UobV9kYXRhLmRhdGEoKSwgbV9kYXRhLnNpemUoKSk7
CisgICAgICAgIHJldHVybiBTdHJpbmcobV9kYXRhLmRhdGEoKSwgbV9kYXRhLnNpemUoKSk7Cisg
ICAgfQorCisgICAgLyogRE9DVFlQRSBUb2tlbnMgKi8KKwogICAgIGJvb2wgZm9yY2VRdWlya3Mo
KSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6
RE9DVFlQRSk7CkBAIC0xNDIsNyArMjMyLDIxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBt
X2RvY3R5cGVEYXRhLnJlbGVhc2UoKTsKICAgICB9CiAKKyAgICAvKiBTdGFydC9FbmQgVGFnIFRv
a2VucyAqLworCisgICAgYm9vbCBzZWxmQ2xvc2luZygpIGNvbnN0CisgICAgeworICAgICAgICBB
U1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRN
TFRva2VuVHlwZXM6OkVuZFRhZyk7CisgICAgICAgIHJldHVybiBtX3NlbGZDbG9zaW5nOworICAg
IH0KKworICAgIHZvaWQgc2V0U2VsZkNsb3NpbmcoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
dHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5
cGVzOjpFbmRUYWcpOworICAgICAgICBtX3NlbGZDbG9zaW5nID0gdHJ1ZTsKKyAgICB9CisKKyAg
ICB2b2lkIGJlZ2luU3RhcnRUYWcoVUNoYXIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKGNoYXJhY3Rlcik7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6
OlVuaW5pdGlhbGl6ZWQpOworICAgICAgICBtX3R5cGUgPSBIVE1MVG9rZW5UeXBlczo6U3RhcnRU
YWc7CisgICAgICAgIG1fc2VsZkNsb3NpbmcgPSBmYWxzZTsKKyAgICAgICAgbV9jdXJyZW50QXR0
cmlidXRlID0gMDsKKyAgICAgICAgbV9hdHRyaWJ1dGVzLmNsZWFyKCk7CisKKyAgICAgICAgbV9k
YXRhLmFwcGVuZChjaGFyYWN0ZXIpOworICAgICAgICBtX29yQWxsRGF0YSB8PSBjaGFyYWN0ZXI7
CisgICAgfQorCisgICAgdm9pZCBiZWdpbkVuZFRhZyhMQ2hhciBjaGFyYWN0ZXIpCisgICAgewor
ICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpVbmluaXRpYWxpemVkKTsK
KyAgICAgICAgbV90eXBlID0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZzsKKyAgICAgICAgbV9zZWxm
Q2xvc2luZyA9IGZhbHNlOworICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUgPSAwOworICAgICAg
ICBtX2F0dHJpYnV0ZXMuY2xlYXIoKTsKKworICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rl
cik7CisgICAgfQorCisgICAgdm9pZCBiZWdpbkVuZFRhZyhjb25zdCBWZWN0b3I8TENoYXIsIDMy
PiYgY2hhcmFjdGVycykKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2Vu
VHlwZXM6OlVuaW5pdGlhbGl6ZWQpOworICAgICAgICBtX3R5cGUgPSBIVE1MVG9rZW5UeXBlczo6
RW5kVGFnOworICAgICAgICBtX3NlbGZDbG9zaW5nID0gZmFsc2U7CisgICAgICAgIG1fY3VycmVu
dEF0dHJpYnV0ZSA9IDA7CisgICAgICAgIG1fYXR0cmlidXRlcy5jbGVhcigpOworCisgICAgICAg
IG1fZGF0YS5hcHBlbmRWZWN0b3IoY2hhcmFjdGVycyk7CisgICAgfQorCisgICAgdm9pZCBhZGRO
ZXdBdHRyaWJ1dGUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5U
eXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpFbmRUYWcpOworICAg
ICAgICBtX2F0dHJpYnV0ZXMuZ3JvdyhtX2F0dHJpYnV0ZXMuc2l6ZSgpICsgMSk7CisgICAgICAg
IG1fY3VycmVudEF0dHJpYnV0ZSA9ICZtX2F0dHJpYnV0ZXMubGFzdCgpOworI2lmbmRlZiBOREVC
VUcKKyAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX25hbWVSYW5nZS5tX3N0YXJ0ID0gMDsK
KyAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX25hbWVSYW5nZS5tX2VuZCA9IDA7CisgICAg
ICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fc3RhcnQgPSAwOworICAgICAg
ICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX2VuZCA9IDA7CisjZW5kaWYKKyAg
ICB9CisKKyAgICB2b2lkIGJlZ2luQXR0cmlidXRlTmFtZShpbnQgb2Zmc2V0KQorICAgIHsKKyAg
ICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX25hbWVSYW5nZS5tX3N0YXJ0ID0gb2Zmc2V0IC0g
bV9iYXNlT2Zmc2V0OworICAgIH0KKworICAgIHZvaWQgZW5kQXR0cmlidXRlTmFtZShpbnQgb2Zm
c2V0KQorICAgIHsKKyAgICAgICAgaW50IGluZGV4ID0gb2Zmc2V0IC0gbV9iYXNlT2Zmc2V0Owor
ICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fbmFtZVJhbmdlLm1fZW5kID0gaW5kZXg7Cisg
ICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fc3RhcnQgPSBpbmRleDsK
KyAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlUmFuZ2UubV9lbmQgPSBpbmRleDsK
KyAgICB9CisKKyAgICB2b2lkIGJlZ2luQXR0cmlidXRlVmFsdWUoaW50IG9mZnNldCkKKyAgICB7
CisgICAgICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fc3RhcnQgPSBvZmZz
ZXQgLSBtX2Jhc2VPZmZzZXQ7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBtX2N1cnJlbnRBdHRy
aWJ1dGUtPm1fdmFsdWVSYW5nZS5tX2VuZCA9IDA7CisjZW5kaWYKKyAgICB9CisKKyAgICB2b2lk
IGVuZEF0dHJpYnV0ZVZhbHVlKGludCBvZmZzZXQpCisgICAgeworICAgICAgICBtX2N1cnJlbnRB
dHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX2VuZCA9IG9mZnNldCAtIG1fYmFzZU9mZnNldDsKKyAg
ICB9CisKKyAgICB2b2lkIGFwcGVuZFRvQXR0cmlidXRlTmFtZShVQ2hhciBjaGFyYWN0ZXIpCisg
ICAgeworICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9
PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcgfHwgbV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpF
bmRUYWcpOworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gYWRkIHRoZSBm
b2xsb3dpbmcgQVNTRVJUIG9uY2Ugd2UgZml4CisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjk3MQorICAgICAgICAvLyAgIEFTU0VSVChtX2N1cnJl
bnRBdHRyaWJ1dGUtPm1fbmFtZVJhbmdlLm1fc3RhcnQpOworICAgICAgICBtX2N1cnJlbnRBdHRy
aWJ1dGUtPm1fbmFtZS5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVu
ZFRvQXR0cmlidXRlVmFsdWUoVUNoYXIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KGNoYXJhY3Rlcik7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0
YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6RW5kVGFnKTsKKyAgICAgICAgQVNT
RVJUKG1fY3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fc3RhcnQpOworICAgICAgICBt
X2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWUuYXBwZW5kKGNoYXJhY3Rlcik7CisgICAgfQorCisg
ICAgdm9pZCBhcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKHNpemVfdCBpLCBjb25zdCBTdHJpbmcmIHZh
bHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCF2YWx1ZS5pc0VtcHR5KCkpOworICAgICAgICBB
U1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5cGUgPT0gSFRN
TFRva2VuVHlwZXM6OkVuZFRhZyk7CisgICAgICAgIG1fYXR0cmlidXRlc1tpXS5tX3ZhbHVlLmFw
cGVuZCh2YWx1ZS5jaGFyYWN0ZXJzKCksIHZhbHVlLmxlbmd0aCgpKTsKKyAgICB9CisKKyAgICBj
b25zdCBBdHRyaWJ1dGVMaXN0JiBhdHRyaWJ1dGVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFT
U0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBIVE1M
VG9rZW5UeXBlczo6RW5kVGFnKTsKKyAgICAgICAgcmV0dXJuIG1fYXR0cmlidXRlczsKKyAgICB9
CisKKyAgICAvLyBVc2VkIGJ5IHRoZSBYU1NBdWRpdG9yIHRvIG51a2UgWFNTLWxhZGVuIGF0dHJp
YnV0ZXMuCisgICAgdm9pZCBlcmFzZVZhbHVlT2ZBdHRyaWJ1dGUoc2l6ZV90IGkpCisgICAgewor
ICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyB8fCBtX3R5
cGUgPT0gSFRNTFRva2VuVHlwZXM6OkVuZFRhZyk7CisgICAgICAgIG1fYXR0cmlidXRlc1tpXS5t
X3ZhbHVlLmNsZWFyKCk7CisgICAgfQorCisgICAgLyogQ2hhcmFjdGVyIFRva2VucyAqLworCisg
ICAgLy8gU3RhcnRpbmcgYSBjaGFyYWN0ZXIgdG9rZW4gd29ya3Mgc2xpZ2h0bHkgZGlmZmVyZW50
bHkgdGhhbiBzdGFydGluZworICAgIC8vIG90aGVyIHR5cGVzIG9mIHRva2VucyBiZWNhdXNlIHdl
IHdhbnQgdG8gc2F2ZSBhIHBlci1jaGFyYWN0ZXIgYnJhbmNoLgorICAgIHZvaWQgZW5zdXJlSXND
aGFyYWN0ZXJUb2tlbigpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IEhUTUxUb2tl
blR5cGVzOjpVbmluaXRpYWxpemVkIHx8IG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6Q2hhcmFj
dGVyKTsKKyAgICAgICAgbV90eXBlID0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3RlcjsKKyAgICB9
CisKKyAgICBjb25zdCBEYXRhVmVjdG9yJiBjaGFyYWN0ZXJzKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3Rlcik7CisgICAgICAg
IHJldHVybiBtX2RhdGE7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRUb0NoYXJhY3RlcihjaGFy
IGNoYXJhY3RlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlw
ZXM6OkNoYXJhY3Rlcik7CisgICAgICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICB9
CisKKyAgICB2b2lkIGFwcGVuZFRvQ2hhcmFjdGVyKFVDaGFyIGNoYXJhY3RlcikKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3Rlcik7CisgICAg
ICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICAgICAgbV9vckFsbERhdGEgfD0gY2hh
cmFjdGVyOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kVG9DaGFyYWN0ZXIoY29uc3QgVmVjdG9y
PExDaGFyLCAzMj4mIGNoYXJhY3RlcnMpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09
IEhUTUxUb2tlblR5cGVzOjpDaGFyYWN0ZXIpOworICAgICAgICBtX2RhdGEuYXBwZW5kVmVjdG9y
KGNoYXJhY3RlcnMpOworICAgIH0KKworICAgIC8qIENvbW1lbnQgVG9rZW5zICovCisKKyAgICBj
b25zdCBEYXRhVmVjdG9yJiBjb21tZW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCht
X3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNvbW1lbnQpOworICAgICAgICByZXR1cm4gbV9kYXRh
OworICAgIH0KKworICAgIHZvaWQgYmVnaW5Db21tZW50KCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OlVuaW5pdGlhbGl6ZWQpOworICAgICAgICBtX3R5
cGUgPSBIVE1MVG9rZW5UeXBlczo6Q29tbWVudDsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZFRv
Q29tbWVudChVQ2hhciBjaGFyYWN0ZXIpCisgICAgeworICAgICAgICBBU1NFUlQoY2hhcmFjdGVy
KTsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBIVE1MVG9rZW5UeXBlczo6Q29tbWVudCk7Cisg
ICAgICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICAgICAgbV9vckFsbERhdGEgfD0g
Y2hhcmFjdGVyOworICAgIH0KKworICAgIHZvaWQgZXJhc2VDaGFyYWN0ZXJzKCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSFRNTFRva2VuVHlwZXM6OkNoYXJhY3Rlcik7CisgICAg
ICAgIG1fZGF0YS5jbGVhcigpOworICAgICAgICBtX29yQWxsRGF0YSA9IDA7CisgICAgfQorCiBw
cml2YXRlOgorICAgIEhUTUxUb2tlblR5cGVzOjpUeXBlIG1fdHlwZTsKKyAgICBBdHRyaWJ1dGU6
OlJhbmdlIG1fcmFuZ2U7IC8vIEFsd2F5cyBzdGFydHMgYXQgemVyby4KKyAgICBpbnQgbV9iYXNl
T2Zmc2V0OworICAgIERhdGFWZWN0b3IgbV9kYXRhOworICAgIFVDaGFyIG1fb3JBbGxEYXRhOwor
CisgICAgLy8gRm9yIFN0YXJ0VGFnIGFuZCBFbmRUYWcKKyAgICBib29sIG1fc2VsZkNsb3Npbmc7
CisgICAgQXR0cmlidXRlTGlzdCBtX2F0dHJpYnV0ZXM7CisKKyAgICAvLyBBIHBvaW50ZXIgaW50
byBtX2F0dHJpYnV0ZXMgdXNlZCBkdXJpbmcgbGV4aW5nLgorICAgIEF0dHJpYnV0ZSogbV9jdXJy
ZW50QXR0cmlidXRlOworCiAgICAgLy8gRm9yIERPQ1RZUEUKICAgICBPd25QdHI8RG9jdHlwZURh
dGE+IG1fZG9jdHlwZURhdGE7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFRva2VuVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxU
b2tlblR5cGVzLmgKaW5kZXggMWFlZDIxYjE1MDZiOTQ2OGE4OWU2NDJiYjhhYmNjYWRmYTE0Y2Ri
Ny4uNDBiMjQzNWM2MWViNmFlYzJjOGM0MDA5MjA1MGZjZmMxYzlmNGQwZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuVHlwZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5UeXBlcy5oCkBAIC0yNiw5ICsyNiw2IEBACiAj
aWZuZGVmIEhUTUxUb2tlblR5cGVzX2gKICNkZWZpbmUgSFRNTFRva2VuVHlwZXNfaAogCi0jaW5j
bHVkZSAiTWFya3VwVG9rZW5CYXNlLmgiCi0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTFRva2VuVHlwZXMgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5oCmluZGV4IGRjN2U5MjlhOTRiZjZiYmJhMjZjMjI3
NWJlNGYwNDU1ZDQ0NWZhNjEuLjhkNDIzYWQ0ODkxMjViZDhiNGE1ZWQ1YjM0MTMzZWQyZjEzOThk
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmgKQEAgLTI4LDYgKzI4
LDcgQEAKIAogI2luY2x1ZGUgIkhUTUxUb2tlbi5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgi
CisjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlN1ZmZpeFRyZWUuaCIKICNpbmNsdWRlICJU
ZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9NYXJrdXBUb2tlbkJhc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5CYXNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDhkNzM5MDA5NDMzZjIyMzRlYTU3YTRkMDViNDg0MDllMmUxMmE4ZDEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUveG1s
L3BhcnNlci9NYXJrdXBUb2tlbkJhc2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDM1MCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBN
YXJrdXBUb2tlbkJhc2VfaAotI2RlZmluZSBNYXJrdXBUb2tlbkJhc2VfaAotCi0jaW5jbHVkZSAi
RWxlbWVudEF0dHJpYnV0ZURhdGEuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLSNpZm5k
ZWYgTkRFQlVHCi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLXN0YXRpYyBpbmxpbmUgQXR0cmlidXRlKiBmaW5kQXR0cmlidXRlSW5WZWN0b3IoVmVj
dG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCi17
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGF0dHJpYnV0ZXMuc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgaWYgKGF0dHJpYnV0ZXMuYXQoaSkubmFtZSgpLm1hdGNoZXMobmFtZSkpCi0gICAg
ICAgICAgICByZXR1cm4gJmF0dHJpYnV0ZXMuYXQoaSk7Ci0gICAgfQotICAgIHJldHVybiAwOwot
fQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlU2V0PgotY2xhc3MgTWFya3VwVG9rZW5CYXNlIHsK
LSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNYXJrdXBUb2tlbkJhc2UpOwotICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIHR5cGVkZWYgVHlwZVNldCBUeXBlOwotCi0g
ICAgY2xhc3MgQXR0cmlidXRlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIGNsYXNzIFJhbmdlIHsK
LSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgaW50IG1fc3RhcnQ7Ci0gICAgICAgICAgICBp
bnQgbV9lbmQ7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgUmFuZ2UgbV9uYW1lUmFuZ2U7Ci0gICAg
ICAgIFJhbmdlIG1fdmFsdWVSYW5nZTsKLSAgICAgICAgV1RGOjpWZWN0b3I8VUNoYXIsIDMyPiBt
X25hbWU7Ci0gICAgICAgIFdURjo6VmVjdG9yPFVDaGFyLCAzMj4gbV92YWx1ZTsKLSAgICB9Owot
Ci0gICAgdHlwZWRlZiBXVEY6OlZlY3RvcjxBdHRyaWJ1dGUsIDEwPiBBdHRyaWJ1dGVMaXN0Owot
ICAgIHR5cGVkZWYgV1RGOjpWZWN0b3I8VUNoYXIsIDEwMjQ+IERhdGFWZWN0b3I7Ci0KLSAgICBN
YXJrdXBUb2tlbkJhc2UoKSB7IGNsZWFyKCk7IH0KLSAgICB2aXJ0dWFsIH5NYXJrdXBUb2tlbkJh
c2UoKSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBjbGVhcigpCi0gICAgewotICAgICAgICBtX3R5
cGUgPSBUeXBlU2V0OjpVbmluaXRpYWxpemVkOwotICAgICAgICBtX3JhbmdlLm1fc3RhcnQgPSAw
OwotICAgICAgICBtX3JhbmdlLm1fZW5kID0gMDsKLSAgICAgICAgbV9iYXNlT2Zmc2V0ID0gMDsK
LSAgICAgICAgbV9kYXRhLmNsZWFyKCk7Ci0gICAgICAgIG1fb3JBbGxEYXRhID0gMDsKLSAgICB9
Ci0KLSAgICBib29sIGlzVW5pbml0aWFsaXplZCgpIHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlU2V0
OjpVbmluaXRpYWxpemVkOyB9Ci0KLSAgICBpbnQgc3RhcnRJbmRleCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmFuZ2UubV9zdGFydDsgfQotICAgIGludCBlbmRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmFuZ2UubV9lbmQ7IH0KLQotICAgIHZvaWQgc2V0QmFzZU9mZnNldChpbnQgb2Zmc2V0KQotICAg
IHsKLSAgICAgICAgbV9iYXNlT2Zmc2V0ID0gb2Zmc2V0OwotICAgIH0KLQotICAgIHZvaWQgZW5k
KGludCBlbmRPZmZzZXQpCi0gICAgewotICAgICAgICBtX3JhbmdlLm1fZW5kID0gZW5kT2Zmc2V0
IC0gbV9iYXNlT2Zmc2V0OwotICAgIH0KLQotICAgIHZvaWQgbWFrZUVuZE9mRmlsZSgpCi0gICAg
ewotICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OlVuaW5pdGlhbGl6ZWQpOwotICAg
ICAgICBtX3R5cGUgPSBUeXBlU2V0OjpFbmRPZkZpbGU7Ci0gICAgfQotCi0gICAgdm9pZCBiZWdp
blN0YXJ0VGFnKFVDaGFyIGNoYXJhY3RlcikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChjaGFyYWN0
ZXIpOwotICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OlVuaW5pdGlhbGl6ZWQpOwot
ICAgICAgICBtX3R5cGUgPSBUeXBlU2V0OjpTdGFydFRhZzsKLSAgICAgICAgbV9zZWxmQ2xvc2lu
ZyA9IGZhbHNlOwotICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUgPSAwOwotICAgICAgICBtX2F0
dHJpYnV0ZXMuY2xlYXIoKTsKLQotICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJhY3Rlcik7Ci0g
ICAgICAgIG1fb3JBbGxEYXRhIHw9IGNoYXJhY3RlcjsKLSAgICB9Ci0KLSAgICB2b2lkIGJlZ2lu
RW5kVGFnKExDaGFyIGNoYXJhY3RlcikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
VHlwZVNldDo6VW5pbml0aWFsaXplZCk7Ci0gICAgICAgIG1fdHlwZSA9IFR5cGVTZXQ6OkVuZFRh
ZzsKLSAgICAgICAgbV9zZWxmQ2xvc2luZyA9IGZhbHNlOwotICAgICAgICBtX2N1cnJlbnRBdHRy
aWJ1dGUgPSAwOwotICAgICAgICBtX2F0dHJpYnV0ZXMuY2xlYXIoKTsKLQotICAgICAgICBtX2Rh
dGEuYXBwZW5kKGNoYXJhY3Rlcik7Ci0gICAgfQotCi0gICAgdm9pZCBiZWdpbkVuZFRhZyhjb25z
dCBWZWN0b3I8TENoYXIsIDMyPiYgY2hhcmFjdGVycykKLSAgICB7Ci0gICAgICAgIEFTU0VSVCht
X3R5cGUgPT0gVHlwZVNldDo6VW5pbml0aWFsaXplZCk7Ci0gICAgICAgIG1fdHlwZSA9IFR5cGVT
ZXQ6OkVuZFRhZzsKLSAgICAgICAgbV9zZWxmQ2xvc2luZyA9IGZhbHNlOwotICAgICAgICBtX2N1
cnJlbnRBdHRyaWJ1dGUgPSAwOwotICAgICAgICBtX2F0dHJpYnV0ZXMuY2xlYXIoKTsKLQotICAg
ICAgICBtX2RhdGEuYXBwZW5kVmVjdG9yKGNoYXJhY3RlcnMpOwotICAgIH0KLQotICAgIC8vIFN0
YXJ0aW5nIGEgY2hhcmFjdGVyIHRva2VuIHdvcmtzIHNsaWdodGx5IGRpZmZlcmVudGx5IHRoYW4g
c3RhcnRpbmcKLSAgICAvLyBvdGhlciB0eXBlcyBvZiB0b2tlbnMgYmVjYXVzZSB3ZSB3YW50IHRv
IHNhdmUgYSBwZXItY2hhcmFjdGVyIGJyYW5jaC4KLSAgICB2b2lkIGVuc3VyZUlzQ2hhcmFjdGVy
VG9rZW4oKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpVbmluaXRp
YWxpemVkIHx8IG1fdHlwZSA9PSBUeXBlU2V0OjpDaGFyYWN0ZXIpOwotICAgICAgICBtX3R5cGUg
PSBUeXBlU2V0OjpDaGFyYWN0ZXI7Ci0gICAgfQotCi0gICAgdm9pZCBiZWdpbkNvbW1lbnQoKQot
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpVbmluaXRpYWxpemVkKTsK
LSAgICAgICAgbV90eXBlID0gVHlwZVNldDo6Q29tbWVudDsKLSAgICB9Ci0KLSAgICB2b2lkIGFw
cGVuZFRvQ2hhcmFjdGVyKGNoYXIgY2hhcmFjdGVyKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1f
dHlwZSA9PSBUeXBlU2V0OjpDaGFyYWN0ZXIpOwotICAgICAgICBtX2RhdGEuYXBwZW5kKGNoYXJh
Y3Rlcik7Ci0gICAgfQotCi0gICAgdm9pZCBhcHBlbmRUb0NoYXJhY3RlcihVQ2hhciBjaGFyYWN0
ZXIpCi0gICAgewotICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OkNoYXJhY3Rlcik7
Ci0gICAgICAgIG1fZGF0YS5hcHBlbmQoY2hhcmFjdGVyKTsKLSAgICAgICAgbV9vckFsbERhdGEg
fD0gY2hhcmFjdGVyOwotICAgIH0KLQotICAgIHZvaWQgYXBwZW5kVG9DaGFyYWN0ZXIoY29uc3Qg
VmVjdG9yPExDaGFyLCAzMj4mIGNoYXJhY3RlcnMpCi0gICAgewotICAgICAgICBBU1NFUlQobV90
eXBlID09IFR5cGVTZXQ6OkNoYXJhY3Rlcik7Ci0gICAgICAgIG1fZGF0YS5hcHBlbmRWZWN0b3Io
Y2hhcmFjdGVycyk7Ci0gICAgfQotCi0gICAgdm9pZCBhcHBlbmRUb0NvbW1lbnQoVUNoYXIgY2hh
cmFjdGVyKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7Ci0gICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gVHlwZVNldDo6Q29tbWVudCk7Ci0gICAgICAgIG1fZGF0YS5hcHBlbmQoY2hh
cmFjdGVyKTsKLSAgICAgICAgbV9vckFsbERhdGEgfD0gY2hhcmFjdGVyOwotICAgIH0KLQotICAg
IHZvaWQgYWRkTmV3QXR0cmlidXRlKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
VHlwZVNldDo6U3RhcnRUYWcgfHwgbV90eXBlID09IFR5cGVTZXQ6OkVuZFRhZyk7Ci0gICAgICAg
IG1fYXR0cmlidXRlcy5ncm93KG1fYXR0cmlidXRlcy5zaXplKCkgKyAxKTsKLSAgICAgICAgbV9j
dXJyZW50QXR0cmlidXRlID0gJm1fYXR0cmlidXRlcy5sYXN0KCk7Ci0jaWZuZGVmIE5ERUJVRwot
ICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fbmFtZVJhbmdlLm1fc3RhcnQgPSAwOwotICAg
ICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fbmFtZVJhbmdlLm1fZW5kID0gMDsKLSAgICAgICAg
bV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlUmFuZ2UubV9zdGFydCA9IDA7Ci0gICAgICAgIG1f
Y3VycmVudEF0dHJpYnV0ZS0+bV92YWx1ZVJhbmdlLm1fZW5kID0gMDsKLSNlbmRpZgotICAgIH0K
LQotICAgIHZvaWQgYmVnaW5BdHRyaWJ1dGVOYW1lKGludCBvZmZzZXQpCi0gICAgewotICAgICAg
ICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fbmFtZVJhbmdlLm1fc3RhcnQgPSBvZmZzZXQgLSBtX2Jh
c2VPZmZzZXQ7Ci0gICAgfQotCi0gICAgdm9pZCBlbmRBdHRyaWJ1dGVOYW1lKGludCBvZmZzZXQp
Ci0gICAgewotICAgICAgICBpbnQgaW5kZXggPSBvZmZzZXQgLSBtX2Jhc2VPZmZzZXQ7Ci0gICAg
ICAgIG1fY3VycmVudEF0dHJpYnV0ZS0+bV9uYW1lUmFuZ2UubV9lbmQgPSBpbmRleDsKLSAgICAg
ICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlUmFuZ2UubV9zdGFydCA9IGluZGV4OwotICAg
ICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVSYW5nZS5tX2VuZCA9IGluZGV4OwotICAg
IH0KLQotICAgIHZvaWQgYmVnaW5BdHRyaWJ1dGVWYWx1ZShpbnQgb2Zmc2V0KQotICAgIHsKLSAg
ICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlUmFuZ2UubV9zdGFydCA9IG9mZnNldCAt
IG1fYmFzZU9mZnNldDsKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgIG1fY3VycmVudEF0dHJpYnV0
ZS0+bV92YWx1ZVJhbmdlLm1fZW5kID0gMDsKLSNlbmRpZgotICAgIH0KLQotICAgIHZvaWQgZW5k
QXR0cmlidXRlVmFsdWUoaW50IG9mZnNldCkKLSAgICB7Ci0gICAgICAgIG1fY3VycmVudEF0dHJp
YnV0ZS0+bV92YWx1ZVJhbmdlLm1fZW5kID0gb2Zmc2V0IC0gbV9iYXNlT2Zmc2V0OwotICAgIH0K
LQotICAgIHZvaWQgYXBwZW5kVG9BdHRyaWJ1dGVOYW1lKFVDaGFyIGNoYXJhY3RlcikKLSAgICB7
Ci0gICAgICAgIEFTU0VSVChjaGFyYWN0ZXIpOwotICAgICAgICBBU1NFUlQobV90eXBlID09IFR5
cGVTZXQ6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBUeXBlU2V0OjpFbmRUYWcpOwotICAgICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gYWRkIHRoZSBmb2xsb3dpbmcgQVNTRVJUIG9u
Y2Ugd2UgZml4Ci0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02Mjk3MQotICAgICAgICAvLyAgIEFTU0VSVChtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fbmFt
ZVJhbmdlLm1fc3RhcnQpOwotICAgICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fbmFtZS5hcHBl
bmQoY2hhcmFjdGVyKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFwcGVuZFRvQXR0cmlidXRlVmFsdWUo
VUNoYXIgY2hhcmFjdGVyKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGNoYXJhY3Rlcik7Ci0gICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6U3RhcnRUYWcgfHwgbV90eXBlID09IFR5cGVT
ZXQ6OkVuZFRhZyk7Ci0gICAgICAgIEFTU0VSVChtX2N1cnJlbnRBdHRyaWJ1dGUtPm1fdmFsdWVS
YW5nZS5tX3N0YXJ0KTsKLSAgICAgICAgbV9jdXJyZW50QXR0cmlidXRlLT5tX3ZhbHVlLmFwcGVu
ZChjaGFyYWN0ZXIpOwotICAgIH0KLQotICAgIHZvaWQgYXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShz
aXplX3QgaSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghdmFs
dWUuaXNFbXB0eSgpKTsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpTdGFydFRh
ZyB8fCBtX3R5cGUgPT0gVHlwZVNldDo6RW5kVGFnKTsKLSAgICAgICAgbV9hdHRyaWJ1dGVzW2ld
Lm1fdmFsdWUuYXBwZW5kKHZhbHVlLmNoYXJhY3RlcnMoKSwgdmFsdWUubGVuZ3RoKCkpOwotICAg
IH0KLQotICAgIHR5cGVuYW1lIFR5cGU6OlR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZTsgfQotCi0gICAgYm9vbCBzZWxmQ2xvc2luZygpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NF
UlQobV90eXBlID09IFR5cGVTZXQ6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBUeXBlU2V0OjpFbmRU
YWcpOwotICAgICAgICByZXR1cm4gbV9zZWxmQ2xvc2luZzsKLSAgICB9Ci0KLSAgICB2b2lkIHNl
dFNlbGZDbG9zaW5nKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6
U3RhcnRUYWcgfHwgbV90eXBlID09IFR5cGVTZXQ6OkVuZFRhZyk7Ci0gICAgICAgIG1fc2VsZkNs
b3NpbmcgPSB0cnVlOwotICAgIH0KLQotICAgIGNvbnN0IEF0dHJpYnV0ZUxpc3QmIGF0dHJpYnV0
ZXMoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpTdGFy
dFRhZyB8fCBtX3R5cGUgPT0gVHlwZVNldDo6RW5kVGFnKTsKLSAgICAgICAgcmV0dXJuIG1fYXR0
cmlidXRlczsKLSAgICB9Ci0KLSAgICB2b2lkIGVyYXNlQ2hhcmFjdGVycygpCi0gICAgewotICAg
ICAgICBBU1NFUlQobV90eXBlID09IFR5cGVTZXQ6OkNoYXJhY3Rlcik7Ci0gICAgICAgIG1fZGF0
YS5jbGVhcigpOwotICAgICAgICBtX29yQWxsRGF0YSA9IDA7Ci0gICAgfQotCi0gICAgdm9pZCBl
cmFzZVZhbHVlT2ZBdHRyaWJ1dGUoc2l6ZV90IGkpCi0gICAgewotICAgICAgICBBU1NFUlQobV90
eXBlID09IFR5cGVTZXQ6OlN0YXJ0VGFnIHx8IG1fdHlwZSA9PSBUeXBlU2V0OjpFbmRUYWcpOwot
ICAgICAgICBtX2F0dHJpYnV0ZXNbaV0ubV92YWx1ZS5jbGVhcigpOwotICAgIH0KLQotICAgIGNv
bnN0IERhdGFWZWN0b3ImIGNoYXJhY3RlcnMoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJU
KG1fdHlwZSA9PSBUeXBlU2V0OjpDaGFyYWN0ZXIpOwotICAgICAgICByZXR1cm4gbV9kYXRhOwot
ICAgIH0KLQotICAgIGNvbnN0IERhdGFWZWN0b3ImIGNvbW1lbnQoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlU2V0OjpDb21tZW50KTsKLSAgICAgICAgcmV0dXJu
IG1fZGF0YTsKLSAgICB9Ci0KLSAgICBjb25zdCBEYXRhVmVjdG9yJiBkYXRhKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZVNldDo6Q2hhcmFjdGVyIHx8IG1fdHlw
ZSA9PSBUeXBlU2V0OjpDb21tZW50IHx8IG1fdHlwZSA9PSBUeXBlU2V0OjpTdGFydFRhZyB8fCBt
X3R5cGUgPT0gVHlwZVNldDo6RW5kVGFnKTsKLSAgICAgICAgcmV0dXJuIG1fZGF0YTsKLSAgICB9
Ci0KLSAgICBib29sIGlzQWxsOEJpdERhdGEoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IChtX29yQWxsRGF0YSA8PSAweGZmKTsKLSAgICB9Ci0KLSAgICBjb25zdCBEYXRhVmVjdG9yJiBu
YW1lKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2RhdGE7Ci0gICAgfQotCi0gICAg
U3RyaW5nIG5hbWVTdHJpbmcoKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKCFtX2RhdGEuc2l6
ZSgpKQotICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0gICAgICAgIGlmIChpc0Fs
bDhCaXREYXRhKCkpCi0gICAgICAgICAgICByZXR1cm4gU3RyaW5nOjptYWtlOEJpdEZyb20xNkJp
dFNvdXJjZShtX2RhdGEuZGF0YSgpLCBtX2RhdGEuc2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuIFN0
cmluZyhtX2RhdGEuZGF0YSgpLCBtX2RhdGEuc2l6ZSgpKTsKLSAgICB9Ci0KLXByb3RlY3RlZDoK
LQotI2lmbmRlZiBOREVCVUcKLSAgICB2b2lkIHByaW50U3RyaW5nKGNvbnN0IERhdGFWZWN0b3Im
IHN0cmluZykgY29uc3QKLSAgICB7Ci0gICAgICAgIERhdGFWZWN0b3I6OmNvbnN0X2l0ZXJhdG9y
IGl0ZXIgPSBzdHJpbmcuYmVnaW4oKTsKLSAgICAgICAgZm9yICg7IGl0ZXIgIT0gc3RyaW5nLmVu
ZCgpOyArK2l0ZXIpCi0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVsYyIsIHdjaGFyX3Qo
Kml0ZXIpKTsKLSAgICB9Ci0jZW5kaWYgLy8gTkRFQlVHCi0KLSAgICB2b2lkIGFwcGVuZFRvTmFt
ZShVQ2hhciBjaGFyYWN0ZXIpCi0gICAgewotICAgICAgICBBU1NFUlQoY2hhcmFjdGVyKTsKLSAg
ICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXIpOwotICAgICAgICBtX29yQWxsRGF0YSB8PSBj
aGFyYWN0ZXI7Ci0gICAgfQotCi0gICAgdHlwZW5hbWUgVHlwZTo6VHlwZSBtX3R5cGU7Ci0gICAg
dHlwZW5hbWUgQXR0cmlidXRlOjpSYW5nZSBtX3JhbmdlOyAvLyBBbHdheXMgc3RhcnRzIGF0IHpl
cm8uCi0gICAgaW50IG1fYmFzZU9mZnNldDsKLSAgICBEYXRhVmVjdG9yIG1fZGF0YTsKLSAgICBV
Q2hhciBtX29yQWxsRGF0YTsKLQotICAgIC8vIEZvciBTdGFydFRhZyBhbmQgRW5kVGFnCi0gICAg
Ym9vbCBtX3NlbGZDbG9zaW5nOwotICAgIEF0dHJpYnV0ZUxpc3QgbV9hdHRyaWJ1dGVzOwotCi0g
ICAgLy8gQSBwb2ludGVyIGludG8gbV9hdHRyaWJ1dGVzIHVzZWQgZHVyaW5nIGxleGluZy4KLSAg
ICBBdHRyaWJ1dGUqIG1fY3VycmVudEF0dHJpYnV0ZTsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIE1h
cmt1cFRva2VuQmFzZV9oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>