<?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>71422</bug_id>
          
          <creation_ts>2011-11-02 17:08:48 -0700</creation_ts>
          <short_desc>Change remaining callers of releaseRef to call leakRef</short_desc>
          <delta_ts>2011-11-03 16:05:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>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>41374</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>fishd</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>495074</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-11-02 17:08:48 -0700</bug_when>
    <thetext>Change remaining callers of releaseRef to call leakRef</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495076</commentid>
    <comment_count>1</comment_count>
      <attachid>113405</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-11-02 17:12:27 -0700</bug_when>
    <thetext>Created attachment 113405
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495079</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-02 17:16:01 -0700</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495083</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-11-02 17:19:39 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.

No, it doesn’t. It just touches some inlined function bodies in WebPrivatePtr.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495594</commentid>
    <comment_count>4</comment_count>
      <attachid>113405</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-03 10:22:13 -0700</bug_when>
    <thetext>Comment on attachment 113405
Patch

Rejecting attachment 113405 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;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/Source/JavaScriptCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/10290026</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495699</commentid>
    <comment_count>5</comment_count>
      <attachid>113405</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-11-03 12:10:34 -0700</bug_when>
    <thetext>Comment on attachment 113405
Patch

Attachment 113405 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/10285060</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495840</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-11-03 16:05:06 -0700</bug_when>
    <thetext>Committed r99239: &lt;http://trac.webkit.org/changeset/99239&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113405</attachid>
            <date>2011-11-02 17:12:27 -0700</date>
            <delta_ts>2011-11-03 12:10:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71422-20111102171226.patch</filename>
            <type>text/plain</type>
            <size>70487</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTkxMjMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTEgQEAK
KzIwMTEtMTEtMDIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIENo
YW5nZSByZW1haW5pbmcgY2FsbGVycyBvZiByZWxlYXNlUmVmIHRvIGNhbGwgbGVha1JlZgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE0MjIKKworICAg
ICAgICAqIHd0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHA6CisgICAgICAgIChXVEY6Okhhc2hBbmRV
VEY4Q2hhcmFjdGVyc1RyYW5zbGF0b3I6OnRyYW5zbGF0ZSk6IFVzZSBsZWFrUmVmLgorCiAyMDEx
LTExLTAyICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgRU5B
QkxFX0NTU19TSEFERVJTIGZsYWcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4
dC9BdG9taWNTdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCShyZXZpc2lvbiA5OTExNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTksNyArMTk5LDcgQEAgc3RydWN0IEhhc2hBbmRVVEY4Q2hhcmFjdGVyc1RyYW5zbGF0b3Igewog
ICAgIHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShTdHJpbmdJbXBsKiYgbG9jYXRpb24sIGNvbnN0IEhh
c2hBbmRVVEY4Q2hhcmFjdGVycyYgYnVmZmVyLCB1bnNpZ25lZCBoYXNoKQogICAgIHsKICAgICAg
ICAgVUNoYXIqIHRhcmdldDsKLSAgICAgICAgbG9jYXRpb24gPSBTdHJpbmdJbXBsOjpjcmVhdGVV
bmluaXRpYWxpemVkKGJ1ZmZlci51dGYxNkxlbmd0aCwgdGFyZ2V0KS5yZWxlYXNlUmVmKCk7Cisg
ICAgICAgIGxvY2F0aW9uID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChidWZmZXIu
dXRmMTZMZW5ndGgsIHRhcmdldCkubGVha1JlZigpOwogCiAgICAgICAgIGNvbnN0IGNoYXIqIHNv
dXJjZSA9IGJ1ZmZlci5jaGFyYWN0ZXJzOwogICAgICAgICBpZiAoY29udmVydFVURjhUb1VURjE2
KCZzb3VyY2UsIHNvdXJjZSArIGJ1ZmZlci5sZW5ndGgsICZ0YXJnZXQsIHRhcmdldCArIGJ1ZmZl
ci51dGYxNkxlbmd0aCkgIT0gY29udmVyc2lvbk9LKQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24g
OTkxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwzNSBAQAorMjAxMS0xMS0wMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQ2hhbmdlIHJlbWFpbmluZyBjYWxsZXJzIG9mIHJlbGVhc2VSZWYgdG8gY2FsbCBs
ZWFrUmVmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MTQyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
YmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW06CisgICAgICAgICgtW1dlYlNjcmlwdE9i
amVjdCBfc2V0SW1wOm9yaWdpblJvb3RPYmplY3Q6cm9vdE9iamVjdDpdKToKKyAgICAgICAgKC1b
V2ViU2NyaXB0T2JqZWN0IF9zZXRPcmlnaW5Sb290T2JqZWN0OmFuZFJvb3RPYmplY3Q6XSk6Cisg
ICAgICAgICogYnJpZGdlL05QX2pzb2JqZWN0LmNwcDoKKyAgICAgICAgKF9OUE5fQ3JlYXRlU2Ny
aXB0T2JqZWN0KToKKyAgICAgICAgKiBkb20vUXVhbGlmaWVkTmFtZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpRTmFtZUNvbXBvbmVudHNUcmFuc2xhdG9yOjp0cmFuc2xhdGUpOgorICAgICAgICAq
IGhpc3RvcnkvUGFnZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6YWRk
KToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRhYmxlRWxlbWVudDo6YWRkaXRpb25hbEF0dHJpYnV0ZVN0eWxlRGVjbHMpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudDo6YWRkU2hhcmVkQ2VsbEJvcmRlcnNEZWNs
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OmFkZFNoYXJlZEdyb3VwRGVj
bHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL0NvbnRleHRNZW51TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGV4dE1lbnU6OnJlbGVhc2VQbGF0Zm9ybURlc2NyaXB0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvU2hhcmVkQnVmZmVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpjcmVhdGVDRkRhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xz
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1SZXNvdXJjZSk6CisgICAg
ICAgIFVzZSBsZWFrUmVmLgorCiAyMDExLTExLTAyICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgZm9yY2UgaW5saW5lIGZsZXhpdGVtcyB0byBiZSB3cmFwcGVkIGlu
IGFub255bW91cyBibG9ja3MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2Vi
U2NyaXB0T2JqZWN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29i
amMvV2ViU2NyaXB0T2JqZWN0Lm1tCShyZXZpc2lvbiA5OTExNikKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMs
OCArMTQzLDggQEAgLSAodm9pZClfc2V0SW1wOihKU09iamVjdCopaW1wIG9yaWdpblJvbwogICAg
IEFTU0VSVChpbXApOwogCiAgICAgX3ByaXZhdGUtPmltcCA9IGltcDsKLSAgICBfcHJpdmF0ZS0+
cm9vdE9iamVjdCA9IHJvb3RPYmplY3QucmVsZWFzZVJlZigpOwotICAgIF9wcml2YXRlLT5vcmln
aW5Sb290T2JqZWN0ID0gb3JpZ2luUm9vdE9iamVjdC5yZWxlYXNlUmVmKCk7CisgICAgX3ByaXZh
dGUtPnJvb3RPYmplY3QgPSByb290T2JqZWN0LmxlYWtSZWYoKTsKKyAgICBfcHJpdmF0ZS0+b3Jp
Z2luUm9vdE9iamVjdCA9IG9yaWdpblJvb3RPYmplY3QubGVha1JlZigpOwogCiAgICAgV2ViQ29y
ZTo6YWRkSlNXcmFwcGVyKHNlbGYsIGltcCk7CiAKQEAgLTE2OCw4ICsxNjgsOCBAQCAtICh2b2lk
KV9zZXRPcmlnaW5Sb290T2JqZWN0OihQYXNzUmVmUHRyCiAgICAgaWYgKF9wcml2YXRlLT5vcmln
aW5Sb290T2JqZWN0KQogICAgICAgICBfcHJpdmF0ZS0+b3JpZ2luUm9vdE9iamVjdC0+ZGVyZWYo
KTsKIAotICAgIF9wcml2YXRlLT5yb290T2JqZWN0ID0gcm9vdE9iamVjdC5yZWxlYXNlUmVmKCk7
Ci0gICAgX3ByaXZhdGUtPm9yaWdpblJvb3RPYmplY3QgPSBvcmlnaW5Sb290T2JqZWN0LnJlbGVh
c2VSZWYoKTsKKyAgICBfcHJpdmF0ZS0+cm9vdE9iamVjdCA9IHJvb3RPYmplY3QubGVha1JlZigp
OworICAgIF9wcml2YXRlLT5vcmlnaW5Sb290T2JqZWN0ID0gb3JpZ2luUm9vdE9iamVjdC5sZWFr
UmVmKCk7CiB9CiAKIC0gKGlkKV9pbml0V2l0aEpTT2JqZWN0OihKU0M6OkpTT2JqZWN0KilpbXAg
b3JpZ2luUm9vdE9iamVjdDooUGFzc1JlZlB0cjxKU0M6OkJpbmRpbmdzOjpSb290T2JqZWN0Pilv
cmlnaW5Sb290T2JqZWN0IHJvb3RPYmplY3Q6KFBhc3NSZWZQdHI8SlNDOjpCaW5kaW5nczo6Um9v
dE9iamVjdD4pcm9vdE9iamVjdApJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL05QX2pzb2Jq
ZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3Qu
Y3BwCShyZXZpc2lvbiA5OTExNikKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVj
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw3ICsxNDgsNyBAQCBOUE9iamVjdCogX05QTl9D
cmVhdGVTY3JpcHRPYmplY3QoTlBQIG5wCiAKICAgICBKYXZhU2NyaXB0T2JqZWN0KiBvYmogPSBy
ZWludGVycHJldF9jYXN0PEphdmFTY3JpcHRPYmplY3QqPihfTlBOX0NyZWF0ZU9iamVjdChucHAs
IE5QU2NyaXB0T2JqZWN0Q2xhc3MpKTsKIAotICAgIG9iai0+cm9vdE9iamVjdCA9IHJvb3RPYmpl
Y3QucmVsZWFzZVJlZigpOworICAgIG9iai0+cm9vdE9iamVjdCA9IHJvb3RPYmplY3QubGVha1Jl
ZigpOwogCiAgICAgaWYgKG9iai0+cm9vdE9iamVjdCkgewogICAgICAgICBvYmotPnJvb3RPYmpl
Y3QtPmdjUHJvdGVjdChpbXApOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5h
bWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNw
cAkocmV2aXNpb24gOTkxMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RydWN0IFFOYW1lQ29tcG9uZW50
c1RyYW5zbGF0b3IgewogICAgIH0KICAgICBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoUXVhbGlmaWVk
TmFtZTo6UXVhbGlmaWVkTmFtZUltcGwqJiBsb2NhdGlvbiwgY29uc3QgUXVhbGlmaWVkTmFtZUNv
bXBvbmVudHMmIGNvbXBvbmVudHMsIHVuc2lnbmVkKQogICAgIHsKLSAgICAgICAgbG9jYXRpb24g
PSBRdWFsaWZpZWROYW1lOjpRdWFsaWZpZWROYW1lSW1wbDo6Y3JlYXRlKGNvbXBvbmVudHMubV9w
cmVmaXgsIGNvbXBvbmVudHMubV9sb2NhbE5hbWUsIGNvbXBvbmVudHMubV9uYW1lc3BhY2UpLnJl
bGVhc2VSZWYoKTsKKyAgICAgICAgbG9jYXRpb24gPSBRdWFsaWZpZWROYW1lOjpRdWFsaWZpZWRO
YW1lSW1wbDo6Y3JlYXRlKGNvbXBvbmVudHMubV9wcmVmaXgsIGNvbXBvbmVudHMubV9sb2NhbE5h
bWUsIGNvbXBvbmVudHMubV9uYW1lc3BhY2UpLmxlYWtSZWYoKTsKICAgICB9CiB9OwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCShyZXZpc2lvbiA5OTExNikKKysrIFNv
dXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ2
LDcgKzM0Niw3IEBAIHZvaWQgUGFnZUNhY2hlOjphZGQoUGFzc1JlZlB0cjxIaXN0b3J5SXQKICAg
ICBBU1NFUlQocGFnZSk7CiAgICAgQVNTRVJUKGNhbkNhY2hlKHBhZ2UpKTsKICAgICAKLSAgICBI
aXN0b3J5SXRlbSogaXRlbSA9IHBycEl0ZW0ucmVsZWFzZVJlZigpOyAvLyBCYWxhbmNlZCBpbiBy
ZW1vdmUoKS4KKyAgICBIaXN0b3J5SXRlbSogaXRlbSA9IHBycEl0ZW0ubGVha1JlZigpOyAvLyBC
YWxhbmNlZCBpbiByZW1vdmUoKS4KIAogICAgIC8vIFJlbW92ZSBzdGFsZSBjYWNoZSBlbnRyeSBp
ZiBuZWNlc3NhcnkuCiAgICAgaWYgKGl0ZW0tPm1fY2FjaGVkUGFnZSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAkocmV2aXNpb24gOTkxMTYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NTQsNyArNDU0LDcgQEAgdm9pZCBIVE1MVGFibGVFbGVtZW50OjphZGRpdGlvbmFsQXR0cmlidQog
ICAgIEF0b21pY1N0cmluZyBib3JkZXJWYWx1ZSA9IG1fYm9yZGVyQ29sb3JBdHRyID8gInNvbGlk
IiA6ICJvdXRzZXQiOwogICAgIENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uKiBkZWNsID0g
Z2V0TWFwcGVkQXR0cmlidXRlRGVjbChlUGVyc2lzdGVudCwgdGFibGVib3JkZXJBdHRyLCBib3Jk
ZXJWYWx1ZSk7CiAgICAgaWYgKCFkZWNsKSB7Ci0gICAgICAgIGRlY2wgPSBDU1NNYXBwZWRBdHRy
aWJ1dGVEZWNsYXJhdGlvbjo6Y3JlYXRlKCkucmVsZWFzZVJlZigpOyAvLyBUaGlzIHNpbmdsZSBy
ZWYgcGlucyB1cyBpbiB0aGUgdGFibGUgdW50aWwgdGhlIGRvY3VtZW50IGRpZXMuCisgICAgICAg
IGRlY2wgPSBDU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbjo6Y3JlYXRlKCkubGVha1JlZigp
OyAvLyBUaGlzIHNpbmdsZSByZWYgcGlucyB1cyBpbiB0aGUgdGFibGUgdW50aWwgdGhlIGRvY3Vt
ZW50IGRpZXMuCiAgICAgICAgIGRlY2wtPnNldFBhcmVudFN0eWxlU2hlZXQoZG9jdW1lbnQoKS0+
ZWxlbWVudFNoZWV0KCkpOwogICAgICAgICBkZWNsLT5zZXROb2RlKHRoaXMpOwogICAgICAgICBk
ZWNsLT5zZXRTdHJpY3RQYXJzaW5nKGZhbHNlKTsgLy8gTWFwcGVkIGF0dHJpYnV0ZXMgYXJlIGp1
c3QgYWx3YXlzIHF1aXJreS4KQEAgLTUxMiw3ICs1MTIsNyBAQCB2b2lkIEhUTUxUYWJsZUVsZW1l
bnQ6OmFkZFNoYXJlZENlbGxCb3JkCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBjZWxsYm9yZGVy
VmFsdWUgPSAqY2VsbEJvcmRlck5hbWVzW2JvcmRlcnNdOwogICAgIENTU01hcHBlZEF0dHJpYnV0
ZURlY2xhcmF0aW9uKiBkZWNsID0gZ2V0TWFwcGVkQXR0cmlidXRlRGVjbChlUGVyc2lzdGVudCwg
Y2VsbGJvcmRlckF0dHIsIGNlbGxib3JkZXJWYWx1ZSk7CiAgICAgaWYgKCFkZWNsKSB7Ci0gICAg
ICAgIGRlY2wgPSBDU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbjo6Y3JlYXRlKCkucmVsZWFz
ZVJlZigpOyAvLyBUaGlzIHNpbmdsZSByZWYgcGlucyB1cyBpbiB0aGUgdGFibGUgdW50aWwgdGhl
IGRvY3VtZW50IGRpZXMuCisgICAgICAgIGRlY2wgPSBDU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJh
dGlvbjo6Y3JlYXRlKCkubGVha1JlZigpOyAvLyBUaGlzIHNpbmdsZSByZWYgcGlucyB1cyBpbiB0
aGUgdGFibGUgdW50aWwgdGhlIGRvY3VtZW50IGRpZXMuCiAgICAgICAgIGRlY2wtPnNldFBhcmVu
dFN0eWxlU2hlZXQoZG9jdW1lbnQoKS0+ZWxlbWVudFNoZWV0KCkpOwogICAgICAgICBkZWNsLT5z
ZXROb2RlKHRoaXMpOwogICAgICAgICBkZWNsLT5zZXRTdHJpY3RQYXJzaW5nKGZhbHNlKTsgLy8g
TWFwcGVkIGF0dHJpYnV0ZXMgYXJlIGp1c3QgYWx3YXlzIHF1aXJreS4KQEAgLTU5OCw3ICs1OTgs
NyBAQCB2b2lkIEhUTUxUYWJsZUVsZW1lbnQ6OmFkZFNoYXJlZEdyb3VwRGVjCiAgICAgQXRvbWlj
U3RyaW5nIHJ1bGVzVmFsdWUgPSByb3dzID8gInJvd2dyb3VwcyIgOiAiY29sZ3JvdXBzIjsKICAg
ICBDU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbiogZGVjbCA9IGdldE1hcHBlZEF0dHJpYnV0
ZURlY2woZVBlcnNpc3RlbnQsIHJ1bGVzQXR0ciwgcnVsZXNWYWx1ZSk7CiAgICAgaWYgKCFkZWNs
KSB7Ci0gICAgICAgIGRlY2wgPSBDU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJhdGlvbjo6Y3JlYXRl
KCkucmVsZWFzZVJlZigpOyAvLyBUaGlzIHNpbmdsZSByZWYgcGlucyB1cyBpbiB0aGUgdGFibGUg
dW50aWwgdGhlIGRvY3VtZW50IGRpZXMuCisgICAgICAgIGRlY2wgPSBDU1NNYXBwZWRBdHRyaWJ1
dGVEZWNsYXJhdGlvbjo6Y3JlYXRlKCkubGVha1JlZigpOyAvLyBUaGlzIHNpbmdsZSByZWYgcGlu
cyB1cyBpbiB0aGUgdGFibGUgdW50aWwgdGhlIGRvY3VtZW50IGRpZXMuCiAgICAgICAgIGRlY2wt
PnNldFBhcmVudFN0eWxlU2hlZXQoZG9jdW1lbnQoKS0+ZWxlbWVudFNoZWV0KCkpOwogICAgICAg
ICBkZWNsLT5zZXROb2RlKHRoaXMpOwogICAgICAgICBkZWNsLT5zZXRTdHJpY3RQYXJzaW5nKGZh
bHNlKTsgLy8gTWFwcGVkIGF0dHJpYnV0ZXMgYXJlIGp1c3QgYWx3YXlzIHF1aXJreS4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291
cmNlQ0cuY3BwCShyZXZpc2lvbiA5OTExNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzgsMTUgKzI3
OCwxNSBAQCBDR0ltYWdlUmVmIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kCiAgICAgQ0ZT
dHJpbmdSZWYgaW1hZ2VVVEkgPSBDR0ltYWdlU291cmNlR2V0VHlwZShtX2RlY29kZXIpOwogICAg
IHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiB4Ym1VVEkgPSBDRlNUUigicHVibGljLnhiaXRtYXAt
aW1hZ2UiKTsKICAgICBpZiAoIWltYWdlVVRJIHx8ICFDRkVxdWFsKGltYWdlVVRJLCB4Ym1VVEkp
KQotICAgICAgICByZXR1cm4gaW1hZ2UucmVsZWFzZVJlZigpOworICAgICAgICByZXR1cm4gaW1h
Z2UubGVha1JlZigpOwogICAgIAogICAgIC8vIElmIGl0IGlzIGFuIHhibSBpbWFnZSwgbWFzayBv
dXQgYWxsIHRoZSB3aGl0ZSBhcmVhcyB0byByZW5kZXIgdGhlbSB0cmFuc3BhcmVudC4KICAgICBj
b25zdCBDR0Zsb2F0IG1hc2tpbmdDb2xvcnNbNl0gPSB7MjU1LCAyNTUsICAyNTUsIDI1NSwgMjU1
LCAyNTV9OwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtYXNrZWRJbWFnZShBZG9wdENGLCBD
R0ltYWdlQ3JlYXRlV2l0aE1hc2tpbmdDb2xvcnMoaW1hZ2UuZ2V0KCksIG1hc2tpbmdDb2xvcnMp
KTsKICAgICBpZiAoIW1hc2tlZEltYWdlKQotICAgICAgICByZXR1cm4gaW1hZ2UucmVsZWFzZVJl
ZigpOworICAgICAgICByZXR1cm4gaW1hZ2UubGVha1JlZigpOwogCi0gICAgcmV0dXJuIG1hc2tl
ZEltYWdlLnJlbGVhc2VSZWYoKTsKKyAgICByZXR1cm4gbWFza2VkSW1hZ2UubGVha1JlZigpOwog
fQogCiBib29sIEltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRl
eCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAJKHJldmlzaW9uIDk5MTE2KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNyArMTU5LDcgQEAgRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbQogICAgIH0KICNlbmRpZiAvLyAhZGVmaW5lZChC
VUlMRElOR19PTl9MRU9QQVJEKQogCi0gICAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogZm9udEN1
c3RvbVBsYXRmb3JtRGF0YSA9IG5ldyBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKGNvbnRhaW5lclJl
ZiwgY2dGb250UmVmLnJlbGVhc2VSZWYoKSk7CisgICAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSog
Zm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IG5ldyBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKGNvbnRh
aW5lclJlZiwgY2dGb250UmVmLmxlYWtSZWYoKSk7CiAjaWYgVVNFKFNLSUFfT05fTUFDX0NIUk9N
SVVNKQogICAgIFJlbW90ZUZvbnRTdHJlYW0qIHN0cmVhbSA9IG5ldyBSZW1vdGVGb250U3RyZWFt
KGJ1ZmZlcik7CiAgICAgZm9udEN1c3RvbVBsYXRmb3JtRGF0YS0+bV90eXBlZmFjZSA9IFNrVHlw
ZWZhY2U6OkNyZWF0ZUZyb21TdHJlYW0oc3RyZWFtKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9Db250ZXh0TWVudU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvQ29udGV4dE1lbnVNYWMubW0JKHJldmlzaW9uIDk5MTE2KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NvbnRleHRNZW51TWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC04MCw3ICs4MCw3IEBAIE5TTXV0YWJsZUFycmF5KiBDb250ZXh0TWVudTo6cGxhdGZvcm1E
ZXMKIAogTlNNdXRhYmxlQXJyYXkqIENvbnRleHRNZW51OjpyZWxlYXNlUGxhdGZvcm1EZXNjcmlw
dGlvbigpCiB7Ci0gICAgcmV0dXJuIG1fcGxhdGZvcm1EZXNjcmlwdGlvbi5yZWxlYXNlUmVmKCk7
CisgICAgcmV0dXJuIG1fcGxhdGZvcm1EZXNjcmlwdGlvbi5sZWFrUmVmKCk7CiB9CiAKIFZlY3Rv
cjxDb250ZXh0TWVudUl0ZW0+IGNvbnRleHRNZW51SXRlbVZlY3RvcihQbGF0Zm9ybU1lbnVEZXNj
cmlwdGlvbiBtZW51KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NoYXJlZEJ1
ZmZlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2hh
cmVkQnVmZmVyTWFjLm1tCShyZXZpc2lvbiA5OTExNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9TaGFyZWRCdWZmZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTExMCw3ICsxMTAs
NyBAQCBDRkRhdGFSZWYgU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKQogICAgICAgICByZXR1
cm4gbV9jZkRhdGEuZ2V0KCk7CiAgICAgfQogICAgIAotICAgIHJldHVybiAoQ0ZEYXRhUmVmKVJl
dGFpblB0cjxXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YT4oQWRvcHROUywgW1tXZWJDb3JlU2hhcmVk
QnVmZmVyRGF0YSBhbGxvY10gaW5pdFdpdGhTaGFyZWRCdWZmZXI6dGhpc10pLnJlbGVhc2VSZWYo
KTsKKyAgICByZXR1cm4gKENGRGF0YVJlZilSZXRhaW5QdHI8V2ViQ29yZVNoYXJlZEJ1ZmZlckRh
dGE+KEFkb3B0TlMsIFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGluaXRXaXRoU2hh
cmVkQnVmZmVyOnRoaXNdKS5sZWFrUmVmKCk7CiB9CiAjaWYgIShQTEFURk9STShRVCkgJiYgVVNF
KFFUS0lUKSkKIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHNDaHJvbWl1bS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHNDaHJvbWl1
bS5jcHAJKHJldmlzaW9uIDk5MTE2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck1lZGlhQ29udHJvbHNDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcg
QEAgc3RhdGljIEltYWdlKiBwbGF0Zm9ybVJlc291cmNlKGNvbnN0IGNoYQogICAgICAgICBnTWVk
aWFDb250cm9sSW1hZ2VNYXAgPSBuZXcgTWVkaWFDb250cm9sSW1hZ2VNYXAoKTsKICAgICBpZiAo
SW1hZ2UqIGltYWdlID0gZ01lZGlhQ29udHJvbEltYWdlTWFwLT5nZXQobmFtZSkpCiAgICAgICAg
IHJldHVybiBpbWFnZTsKLSAgICBpZiAoSW1hZ2UqIGltYWdlID0gSW1hZ2U6OmxvYWRQbGF0Zm9y
bVJlc291cmNlKG5hbWUpLnJlbGVhc2VSZWYoKSkgeworICAgIGlmIChJbWFnZSogaW1hZ2UgPSBJ
bWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UobmFtZSkubGVha1JlZigpKSB7CiAgICAgICAgIGdN
ZWRpYUNvbnRyb2xJbWFnZU1hcC0+c2V0KG5hbWUsIGltYWdlKTsKICAgICAgICAgcmV0dXJuIGlt
YWdlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5MTIzKQorKysgU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsOTYgQEAKKzIwMTEtMTEt
MDIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIENoYW5nZSByZW1h
aW5pbmcgY2FsbGVycyBvZiByZWxlYXNlUmVmIHRvIGNhbGwgbGVha1JlZgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE0MjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtL21hYy9Nb2R1bGVN
YWMubW06CisgICAgICAgIChXZWJLaXQ6Ok1vZHVsZTo6bG9hZCk6IFVzZSBsZWFrUmVmLgorICAg
ICAgICAoV2ViS2l0OjpNb2R1bGU6OnVubG9hZCk6IFVzZSBsZWFrUmVmLCBhbmQgY2FzdCB0byB2
b2lkCisgICAgICAgIHRvIGF2b2lkIHVudXNlZCByZXR1cm4gdmFsdWUgd2FybmluZy4KKworICAg
ICAgICAqIFNoYXJlZC9BUEkvYy9XS0FycmF5LmNwcDoKKyAgICAgICAgKFdLQXJyYXlDcmVhdGUp
OgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0RhdGEuY3BwOgorICAgICAgICAoV0tEYXRhQ3Jl
YXRlKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tEaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAg
KFdLRGljdGlvbmFyeUNvcHlLZXlzKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tHZW9tZXRy
eS5jcHA6CisgICAgICAgIChXS1BvaW50Q3JlYXRlKToKKyAgICAgICAgKFdLU2l6ZUNyZWF0ZSk6
CisgICAgICAgIChXS1JlY3RDcmVhdGUpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS011dGFi
bGVBcnJheS5jcHA6CisgICAgICAgIChXS011dGFibGVBcnJheUNyZWF0ZSk6CisgICAgICAgICog
U2hhcmVkL0FQSS9jL1dLTXV0YWJsZURpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV0tNdXRhYmxl
RGljdGlvbmFyeUNyZWF0ZSk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLTnVtYmVyLmNwcDoK
KyAgICAgICAgKFdLQm9vbGVhbkNyZWF0ZSk6CisgICAgICAgIChXS0RvdWJsZUNyZWF0ZSk6Cisg
ICAgICAgIChXS1VJbnQ2NENyZWF0ZSk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU2hhcmVk
QVBJQ2FzdC5oOgorICAgICAgICAoV2ViS2l0Ojp0b0NvcGllZEFQSSk6CisgICAgICAgIChXZWJL
aXQ6OnRvQ29waWVkVVJMQVBJKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvY2YvV0tFcnJvckNG
LmNwcDoKKyAgICAgICAgKFdLRXJyb3JDcmVhdGVXaXRoQ0ZFcnJvcik6CisgICAgICAgICogU2hh
cmVkL0FQSS9jL2NmL1dLVVJMUmVxdWVzdENGLmNwcDoKKyAgICAgICAgKFdLVVJMUmVxdWVzdENy
ZWF0ZVdpdGhDRlVSTFJlcXVlc3QpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9jZi9XS1VSTFJl
c3BvbnNlQ0YuY3BwOgorICAgICAgICAoV0tVUkxSZXNwb25zZUNyZWF0ZVdpdGhDRlVSTFJlc3Bv
bnNlKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvbWFjL1dLVVJMUmVxdWVzdE5TLm1tOgorICAg
ICAgICAoV0tVUkxSZXF1ZXN0Q3JlYXRlV2l0aE5TVVJMUmVxdWVzdCk6CisgICAgICAgICogU2hh
cmVkL0FQSS9jL21hYy9XS1VSTFJlc3BvbnNlTlMubW06CisgICAgICAgIChXS1VSTFJlc3BvbnNl
Q3JlYXRlV2l0aE5TVVJMUmVzcG9uc2UpOgorICAgICAgICAqIFNoYXJlZC9jZi9Bcmd1bWVudENv
ZGVyc0NGLmNwcDoKKyAgICAgICAgKENvcmVJUEM6OmRlY29kZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0LmNwcDoKKyAgICAgICAgKFdLQmFja0ZvcndhcmRM
aXN0Q29weUJhY2tMaXN0V2l0aExpbWl0KToKKyAgICAgICAgKFdLQmFja0ZvcndhcmRMaXN0Q29w
eUZvcndhcmRMaXN0V2l0aExpbWl0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmNwcDoKKyAgICAgICAgKFdLQ29udGV4dENyZWF0ZSk6CisgICAgICAgIChXS0NvbnRleHRD
cmVhdGVXaXRoSW5qZWN0ZWRCdW5kbGVQYXRoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tDcmVkZW50aWFsLmNwcDoKKyAgICAgICAgKFdLQ3JlZGVudGlhbENyZWF0ZSk6CisgICAgICAg
IChXS0NyZWRlbnRpYWxDcmVhdGVXaXRoQ2VydGlmaWNhdGVJbmZvKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tEYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tEYXRhYmFzZU1h
bmFnZXJHZXRPcmlnaW5LZXkpOgorICAgICAgICAoV0tEYXRhYmFzZU1hbmFnZXJHZXRPcmlnaW5R
dW90YUtleSk6CisgICAgICAgIChXS0RhdGFiYXNlTWFuYWdlckdldE9yaWdpblVzYWdlS2V5KToK
KyAgICAgICAgKFdLRGF0YWJhc2VNYW5hZ2VyR2V0RGF0YWJhc2VEZXRhaWxzS2V5KToKKyAgICAg
ICAgKFdLRGF0YWJhc2VNYW5hZ2VyR2V0RGF0YWJhc2VEZXRhaWxzTmFtZUtleSk6CisgICAgICAg
IChXS0RhdGFiYXNlTWFuYWdlckdldERhdGFiYXNlRGV0YWlsc0Rpc3BsYXlOYW1lS2V5KToKKyAg
ICAgICAgKFdLRGF0YWJhc2VNYW5hZ2VyR2V0RGF0YWJhc2VEZXRhaWxzRXhwZWN0ZWRVc2FnZUtl
eSk6CisgICAgICAgIChXS0RhdGFiYXNlTWFuYWdlckdldERhdGFiYXNlRGV0YWlsc0N1cnJlbnRV
c2FnZUtleSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuY3BwOgorICAgICAg
ICAoV0tGcmFtZUNvcHlDaGlsZEZyYW1lcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
R2VvbG9jYXRpb25Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXS0dlb2xvY2F0aW9uUG9zaXRpb25D
cmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0dyYW1tYXJEZXRhaWwuY3BwOgor
ICAgICAgICAoV0tHcmFtbWFyRGV0YWlsQ3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZUdldFNlc3Npb25IaXN0b3J5VVJMVmFsdWVU
eXBlKToKKyAgICAgICAgKFdLUGFnZUNvcHlTZXNzaW9uU3RhdGUpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNDcmVh
dGVXaXRoSWRlbnRpZmllcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL3dpbi9XS1ZpZXcu
Y3BwOgorICAgICAgICAoV0tWaWV3Q3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dl
YlVuZG9DbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVbmRvQ2xpZW50OjpyZWdpc3Rl
ckVkaXRDb21tYW5kKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlRnJhbWUuY3BwOgorICAgICAgICAoV0tCdW5kbGVGcmFtZUNvcHlDaGlsZEZyYW1l
cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5v
ZGVIYW5kbGUuY3BwOgorICAgICAgICAoV0tCdW5kbGVOb2RlSGFuZGxlQ3JlYXRlKToKKyAgICAg
ICAgKFdLQnVuZGxlTm9kZUhhbmRsZUNvcHlEb2N1bWVudCk6CisgICAgICAgIChXS0J1bmRsZU5v
ZGVIYW5kbGVDb3B5SFRNTFRhYmxlQ2VsbEVsZW1lbnRDZWxsQWJvdmUpOgorICAgICAgICAoV0tC
dW5kbGVOb2RlSGFuZGxlQ29weURvY3VtZW50RnJhbWUpOgorICAgICAgICAoV0tCdW5kbGVOb2Rl
SGFuZGxlQ29weUhUTUxGcmFtZUVsZW1lbnRDb250ZW50RnJhbWUpOgorICAgICAgICAoV0tCdW5k
bGVOb2RlSGFuZGxlQ29weUhUTUxJRnJhbWVFbGVtZW50Q29udGVudEZyYW1lKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAg
ICAgIChXS0J1bmRsZVBhZ2VDb3B5VHJhY2tlZFJlcGFpbnRSZWN0cyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVNjcmlwdFdvcmxkLmNwcDoKKyAg
ICAgICAgKFdLQnVuZGxlU2NyaXB0V29ybGRDcmVhdGVXb3JsZCk6CisgICAgICAgIFVzZSBsZWFr
UmVmLgorCiAyMDExLTExLTAyICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CiAKICAgICAgICAgRG9uJ3QgY2FsbCBOUFBfU2V0V2luZG93IGlmIHRoZSBwbHVnLWluIHNpemUg
b3IgY2xpcCByZWN0IGhhc24ndCBjaGFuZ2VkIGlmIHRoZSBwbHVnLWluIGlzbid0IHVzaW5nIHdp
bmRvdyByZWxhdGl2ZSBjb29yZGluYXRlcwpJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
bWFjL01vZHVsZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9t
YWMvTW9kdWxlTWFjLm1tCShyZXZpc2lvbiA5OTExNikKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL21hYy9Nb2R1bGVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgYm9v
bCBNb2R1bGU6OmxvYWQoKQogICAgIGlmICghQ0ZCdW5kbGVMb2FkRXhlY3V0YWJsZShidW5kbGUu
Z2V0KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2J1bmRsZS5hZG9wdENGKGJ1
bmRsZS5yZWxlYXNlUmVmKCkpOworICAgIG1fYnVuZGxlLmFkb3B0Q0YoYnVuZGxlLmxlYWtSZWYo
KSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBNb2R1bGU6
OnVubG9hZCgpCiAjZW5kaWYKIAogICAgIC8vIFNlZSB0aGUgY29tbWVudCBpbiBNb2R1bGUuaCBm
b3Igd2h5IHdlIGxlYWsgdGhlIGJ1bmRsZSBoZXJlLgotICAgIG1fYnVuZGxlLnJlbGVhc2VSZWYo
KTsKKyAgICAodm9pZCltX2J1bmRsZS5sZWFrUmVmKCk7CiB9CiAKIHZvaWQqIE1vZHVsZTo6cGxh
dGZvcm1GdW5jdGlvblBvaW50ZXIoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lKSBjb25zdApJbmRl
eDogU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQXJyYXkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0FycmF5LmNwcAkocmV2aXNpb24gOTkxMTYp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tBcnJheS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDcgKzM5LDcgQEAgV0tUeXBlSUQgV0tBcnJheUdldFR5cGVJRCgpCiBXS0FycmF5
UmVmIFdLQXJyYXlDcmVhdGUoV0tUeXBlUmVmKiB2YWx1ZXMsIHNpemVfdCBudW1iZXJPZlZhbHVl
cykKIHsKICAgICBSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IGFycmF5ID0gSW1tdXRhYmxlQXJyYXk6
OmNyZWF0ZShyZWludGVycHJldF9jYXN0PEFQSU9iamVjdCoqPihjb25zdF9jYXN0PHZvaWQqKj4o
dmFsdWVzKSksIG51bWJlck9mVmFsdWVzKTsKLSAgICByZXR1cm4gdG9BUEkoYXJyYXkucmVsZWFz
ZSgpLnJlbGVhc2VSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKGFycmF5LnJlbGVhc2UoKS5sZWFr
UmVmKCkpOwogfQogCiBXS1R5cGVSZWYgV0tBcnJheUdldEl0ZW1BdEluZGV4KFdLQXJyYXlSZWYg
YXJyYXlSZWYsIHNpemVfdCBpbmRleCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9XS0RhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9X
S0RhdGEuY3BwCShyZXZpc2lvbiA5OTExNikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9XS0RhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIFdLVHlwZUlEIFdL
RGF0YUdldFR5cGVJRCgpCiBXS0RhdGFSZWYgV0tEYXRhQ3JlYXRlKGNvbnN0IHVuc2lnbmVkIGNo
YXIqIGJ5dGVzLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBSZWZQdHI8V2ViRGF0YT4gZGF0YSA9IFdl
YkRhdGE6OmNyZWF0ZShieXRlcywgc2l6ZSk7Ci0gICAgcmV0dXJuIHRvQVBJKGRhdGEucmVsZWFz
ZSgpLnJlbGVhc2VSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKGRhdGEucmVsZWFzZSgpLmxlYWtS
ZWYoKSk7CiB9CiAKIGNvbnN0IHVuc2lnbmVkIGNoYXIqIFdLRGF0YUdldEJ5dGVzKFdLRGF0YVJl
ZiBkYXRhUmVmKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLRGljdGlvbmFy
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLRGljdGlv
bmFyeS5jcHAJKHJldmlzaW9uIDk5MTE2KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L1dLRGljdGlvbmFyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDUgKzUwLDUgQEAgc2l6ZV90
IFdLRGljdGlvbmFyeUdldFNpemUoV0tEaWN0aW9uYXJ5UgogV0tBcnJheVJlZiBXS0RpY3Rpb25h
cnlDb3B5S2V5cyhXS0RpY3Rpb25hcnlSZWYgZGljdGlvbmFyeVJlZikKIHsKICAgICBSZWZQdHI8
SW1tdXRhYmxlQXJyYXk+IGtleXMgPSB0b0ltcGwoZGljdGlvbmFyeVJlZiktPmtleXMoKTsKLSAg
ICByZXR1cm4gdG9BUEkoa2V5cy5yZWxlYXNlKCkucmVsZWFzZVJlZigpKTsKKyAgICByZXR1cm4g
dG9BUEkoa2V5cy5yZWxlYXNlKCkubGVha1JlZigpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvYy9XS0dlb21ldHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvV0tHZW9tZXRyeS5jcHAJKHJldmlzaW9uIDk5MTE2KQorKysgU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLR2VvbWV0cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OSwxOSArNDksMTkgQEAgV0tUeXBlSUQgV0tSZWN0R2V0VHlwZUlEKCkKIFdLUG9pbnRSZWYgV0tQ
b2ludENyZWF0ZShXS1BvaW50IHBvaW50KQogewogICAgIFJlZlB0cjxXZWJQb2ludD4gd2ViUG9p
bnQgPSBXZWJQb2ludDo6Y3JlYXRlKHBvaW50KTsKLSAgICByZXR1cm4gdG9BUEkod2ViUG9pbnQu
cmVsZWFzZSgpLnJlbGVhc2VSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKHdlYlBvaW50LnJlbGVh
c2UoKS5sZWFrUmVmKCkpOwogfQogCiBXS1NpemVSZWYgV0tTaXplQ3JlYXRlKFdLU2l6ZSBzaXpl
KQogewogICAgIFJlZlB0cjxXZWJTaXplPiB3ZWJTaXplID0gV2ViU2l6ZTo6Y3JlYXRlKHNpemUp
OwotICAgIHJldHVybiB0b0FQSSh3ZWJTaXplLnJlbGVhc2UoKS5yZWxlYXNlUmVmKCkpOworICAg
IHJldHVybiB0b0FQSSh3ZWJTaXplLnJlbGVhc2UoKS5sZWFrUmVmKCkpOwogfQogCiBXS1JlY3RS
ZWYgV0tSZWN0Q3JlYXRlKFdLUmVjdCByZWN0KQogewogICAgIFJlZlB0cjxXZWJSZWN0PiB3ZWJS
ZWN0ID0gV2ViUmVjdDo6Y3JlYXRlKHJlY3QpOwotICAgIHJldHVybiB0b0FQSSh3ZWJSZWN0LnJl
bGVhc2UoKS5yZWxlYXNlUmVmKCkpOworICAgIHJldHVybiB0b0FQSSh3ZWJSZWN0LnJlbGVhc2Uo
KS5sZWFrUmVmKCkpOwogfQogCiBXS1NpemUgV0tTaXplR2V0VmFsdWUoV0tTaXplUmVmIHNpemUp
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tNdXRhYmxlQXJyYXkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS011dGFibGVBcnJheS5j
cHAJKHJldmlzaW9uIDk5MTE2KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLTXV0
YWJsZUFycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwogV0tNdXRhYmxlQXJyYXlSZWYgV0tNdXRhYmxlQXJyYXlDcmVhdGUoKQog
ewogICAgIFJlZlB0cjxNdXRhYmxlQXJyYXk+IGFycmF5ID0gTXV0YWJsZUFycmF5OjpjcmVhdGUo
KTsKLSAgICByZXR1cm4gdG9BUEkoYXJyYXkucmVsZWFzZSgpLnJlbGVhc2VSZWYoKSk7CisgICAg
cmV0dXJuIHRvQVBJKGFycmF5LnJlbGVhc2UoKS5sZWFrUmVmKCkpOwogfQogCiBib29sIFdLQXJy
YXlJc011dGFibGUoV0tBcnJheVJlZiBhcnJheVJlZikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9XS011dGFibGVEaWN0aW9uYXJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tNdXRhYmxlRGljdGlvbmFyeS5jcHAJKHJldmlzaW9uIDk5
MTE2KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLTXV0YWJsZURpY3Rpb25hcnku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CiBXS011dGFibGVEaWN0aW9uYXJ5UmVmIFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKQog
ewogICAgIFJlZlB0cjxNdXRhYmxlRGljdGlvbmFyeT4gZGljdGlvbmFyeSA9IE11dGFibGVEaWN0
aW9uYXJ5OjpjcmVhdGUoKTsKLSAgICByZXR1cm4gdG9BUEkoZGljdGlvbmFyeS5yZWxlYXNlKCku
cmVsZWFzZVJlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoZGljdGlvbmFyeS5yZWxlYXNlKCkubGVh
a1JlZigpKTsKIH0KIAogYm9vbCBXS0RpY3Rpb25hcnlJc011dGFibGUoV0tEaWN0aW9uYXJ5UmVm
IGRpY3Rpb25hcnlSZWYpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tOdW1i
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS051bWJl
ci5jcHAJKHJldmlzaW9uIDk5MTE2KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dL
TnVtYmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBXS1R5cGVJRCBXS0Jv
b2xlYW5HZXRUeXBlSUQoKQogV0tCb29sZWFuUmVmIFdLQm9vbGVhbkNyZWF0ZShib29sIHZhbHVl
KQogewogICAgIFJlZlB0cjxXZWJCb29sZWFuPiBib29sZWFuT2JqZWN0ID0gV2ViQm9vbGVhbjo6
Y3JlYXRlKHZhbHVlKTsKLSAgICByZXR1cm4gdG9BUEkoYm9vbGVhbk9iamVjdC5yZWxlYXNlKCku
cmVsZWFzZVJlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoYm9vbGVhbk9iamVjdC5yZWxlYXNlKCku
bGVha1JlZigpKTsKIH0KIAogYm9vbCBXS0Jvb2xlYW5HZXRWYWx1ZShXS0Jvb2xlYW5SZWYgYm9v
bGVhblJlZikKQEAgLTU1LDcgKzU1LDcgQEAgV0tUeXBlSUQgV0tEb3VibGVHZXRUeXBlSUQoKQog
V0tEb3VibGVSZWYgV0tEb3VibGVDcmVhdGUoZG91YmxlIHZhbHVlKQogewogICAgIFJlZlB0cjxX
ZWJEb3VibGU+IGRvdWJsZU9iamVjdCA9IFdlYkRvdWJsZTo6Y3JlYXRlKHZhbHVlKTsKLSAgICBy
ZXR1cm4gdG9BUEkoZG91YmxlT2JqZWN0LnJlbGVhc2UoKS5yZWxlYXNlUmVmKCkpOworICAgIHJl
dHVybiB0b0FQSShkb3VibGVPYmplY3QucmVsZWFzZSgpLmxlYWtSZWYoKSk7CiB9CiAKIGRvdWJs
ZSBXS0RvdWJsZUdldFZhbHVlKFdLRG91YmxlUmVmIGRvdWJsZVJlZikKQEAgLTcxLDcgKzcxLDcg
QEAgV0tUeXBlSUQgV0tVSW50NjRHZXRUeXBlSUQoKQogV0tVSW50NjRSZWYgV0tVSW50NjRDcmVh
dGUodWludDY0X3QgdmFsdWUpCiB7CiAgICAgUmVmUHRyPFdlYlVJbnQ2ND4gdWludDY0T2JqZWN0
ID0gV2ViVUludDY0OjpjcmVhdGUodmFsdWUpOwotICAgIHJldHVybiB0b0FQSSh1aW50NjRPYmpl
Y3QucmVsZWFzZSgpLnJlbGVhc2VSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKHVpbnQ2NE9iamVj
dC5yZWxlYXNlKCkubGVha1JlZigpKTsKIH0KIAogdWludDY0X3QgV0tVSW50NjRHZXRWYWx1ZShX
S1VJbnQ2NFJlZiB1aW50NjRSZWYpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mv
V0tTaGFyZWRBUElDYXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SS9jL1dLU2hhcmVkQVBJQ2FzdC5oCShyZXZpc2lvbiA5OTExNikKKysrIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDcg
KzE0NSw3IEBAIGlubGluZSBQcm94eWluZ1JlZlB0cjxXZWJTdHJpbmc+IHRvQVBJKFMKIGlubGlu
ZSBXS1N0cmluZ1JlZiB0b0NvcGllZEFQSShjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBS
ZWZQdHI8V2ViU3RyaW5nPiB3ZWJTdHJpbmcgPSBXZWJTdHJpbmc6OmNyZWF0ZShzdHJpbmcpOwot
ICAgIHJldHVybiB0b0FQSSh3ZWJTdHJpbmcucmVsZWFzZSgpLnJlbGVhc2VSZWYoKSk7CisgICAg
cmV0dXJuIHRvQVBJKHdlYlN0cmluZy5yZWxlYXNlKCkubGVha1JlZigpKTsKIH0KIAogaW5saW5l
IFByb3h5aW5nUmVmUHRyPFdlYlVSTD4gdG9VUkxSZWYoU3RyaW5nSW1wbCogc3RyaW5nKQpAQCAt
MTYwLDcgKzE2MCw3IEBAIGlubGluZSBXS1VSTFJlZiB0b0NvcGllZFVSTEFQSShjb25zdCBTdHIK
ICAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuIDA7CiAgICAgUmVmUHRyPFdlYlVSTD4g
d2ViVVJMID0gV2ViVVJMOjpjcmVhdGUoc3RyaW5nKTsKLSAgICByZXR1cm4gdG9BUEkod2ViVVJM
LnJlbGVhc2UoKS5yZWxlYXNlUmVmKCkpOworICAgIHJldHVybiB0b0FQSSh3ZWJVUkwucmVsZWFz
ZSgpLmxlYWtSZWYoKSk7CiB9CiAKIGlubGluZSBTdHJpbmcgdG9XVEZTdHJpbmcoV0tTdHJpbmdS
ZWYgc3RyaW5nUmVmKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2NmL1dLRXJy
b3JDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2NmL1dL
RXJyb3JDRi5jcHAJKHJldmlzaW9uIDk5MTE2KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SS9jL2NmL1dLRXJyb3JDRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKIFdLRXJyb3JSZWYgV0tFcnJvckNyZWF0ZVdpdGhDRkVycm9y
KENGRXJyb3JSZWYgY2ZFcnJvcikKIHsKICAgICBSZWZQdHI8V2ViRXJyb3I+IGVycm9yID0gV2Vi
RXJyb3I6OmNyZWF0ZShSZXNvdXJjZUVycm9yKGNmRXJyb3IpKTsKLSAgICByZXR1cm4gdG9BUEko
ZXJyb3IucmVsZWFzZSgpLnJlbGVhc2VSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKGVycm9yLnJl
bGVhc2UoKS5sZWFrUmVmKCkpOwogfQogCiBDRkVycm9yUmVmIFdLRXJyb3JDb3B5Q0ZFcnJvcihD
RkFsbG9jYXRvclJlZiBhbGxvYywgV0tFcnJvclJlZiBlcnJvcikKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9jZi9XS1VSTFJlcXVlc3RDRi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2NmL1dLVVJMUmVxdWVzdENGLmNwcAkocmV2aXNpb24g
OTkxMTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2YvV0tVUkxSZXF1ZXN0Q0Yu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIFdLVVJMUmVxdWVzdFJlZiBXS1VS
TFJlcXVlc3RDcmVhdGVXaXRoQ0YKIHsKICAgICBDRlVSTFJlcXVlc3RSZWYgY29waWVkVVJMUmVx
dWVzdCA9IENGVVJMUmVxdWVzdENyZWF0ZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdXJsUmVx
dWVzdCk7CiAgICAgUmVmUHRyPFdlYlVSTFJlcXVlc3Q+IHJlcXVlc3QgPSBXZWJVUkxSZXF1ZXN0
OjpjcmVhdGUoY29waWVkVVJMUmVxdWVzdCk7Ci0gICAgcmV0dXJuIHRvQVBJKHJlcXVlc3QucmVs
ZWFzZSgpLnJlbGVhc2VSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKHJlcXVlc3QucmVsZWFzZSgp
LmxlYWtSZWYoKSk7CiB9CiAKIENGVVJMUmVxdWVzdFJlZiBXS1VSTFJlcXVlc3RDb3B5Q0ZVUkxS
ZXF1ZXN0KENGQWxsb2NhdG9yUmVmIGFsbG9jLCBXS1VSTFJlcXVlc3RSZWYgdXJsUmVxdWVzdCkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZi9XS1VSTFJlc3BvbnNlQ0YuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZi9XS1VSTFJlc3Bv
bnNlQ0YuY3BwCShyZXZpc2lvbiA5OTExNikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9jZi9XS1VSTFJlc3BvbnNlQ0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBA
IFdLVVJMUmVzcG9uc2VSZWYgV0tVUkxSZXNwb25zZUNyZWF0ZVdpdGgKIAogICAgIENGVVJMUmVz
cG9uc2VSZWYgY29waWVkVVJMUmVzcG9uc2UgPSBDRlVSTFJlc3BvbnNlQ3JlYXRlQ29weShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCB1cmxSZXNwb25zZSk7CiAgICAgUmVmUHRyPFdlYlVSTFJlc3BvbnNl
PiByZXNwb25zZSA9IFdlYlVSTFJlc3BvbnNlOjpjcmVhdGUoY29waWVkVVJMUmVzcG9uc2UpOwot
ICAgIHJldHVybiB0b0FQSShyZXNwb25zZS5yZWxlYXNlKCkucmVsZWFzZVJlZigpKTsKKyAgICBy
ZXR1cm4gdG9BUEkocmVzcG9uc2UucmVsZWFzZSgpLmxlYWtSZWYoKSk7CiB9CiAKIENGVVJMUmVz
cG9uc2VSZWYgV0tVUkxSZXNwb25zZUNvcHlDRlVSTFJlc3BvbnNlKENGQWxsb2NhdG9yUmVmIGFs
bG9jLCBXS1VSTFJlc3BvbnNlUmVmIHVybFJlc3BvbnNlKQpJbmRleDogU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL21hYy9XS1VSTFJlcXVlc3ROUy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLVVJMUmVxdWVzdE5TLm1tCShyZXZpc2lvbiA5OTEx
NikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tVUkxSZXF1ZXN0TlMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgV0tVUkxSZXF1ZXN0UmVmIFdLVVJMUmVx
dWVzdENyZWF0ZVdpdGhOUwogewogICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IGNvcGllZFVS
TFJlcXVlc3QoQWRvcHROUywgW3VybFJlcXVlc3QgY29weV0pOwogICAgIFJlZlB0cjxXZWJVUkxS
ZXF1ZXN0PiByZXF1ZXN0ID0gV2ViVVJMUmVxdWVzdDo6Y3JlYXRlKGNvcGllZFVSTFJlcXVlc3Qu
Z2V0KCkpOwotICAgIHJldHVybiB0b0FQSShyZXF1ZXN0LnJlbGVhc2UoKS5yZWxlYXNlUmVmKCkp
OworICAgIHJldHVybiB0b0FQSShyZXF1ZXN0LnJlbGVhc2UoKS5sZWFrUmVmKCkpOwogfQogCiBO
U1VSTFJlcXVlc3QqIFdLVVJMUmVxdWVzdENvcHlOU1VSTFJlcXVlc3QoV0tVUkxSZXF1ZXN0UmVm
IHVybFJlcXVlc3QpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLVVJM
UmVzcG9uc2VOUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mv
bWFjL1dLVVJMUmVzcG9uc2VOUy5tbQkocmV2aXNpb24gOTkxMTYpCisrKyBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvbWFjL1dLVVJMUmVzcG9uc2VOUy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzUsNyArMzUsNyBAQCBXS1VSTFJlc3BvbnNlUmVmIFdLVVJMUmVzcG9uc2VDcmVhdGVXaXRoCiB7
CiAgICAgUmV0YWluUHRyPE5TVVJMUmVzcG9uc2U+IGNvcGllZFVSTFJlc3BvbnNlKEFkb3B0TlMs
IFt1cmxSZXNwb25zZSBjb3B5XSk7CiAgICAgUmVmUHRyPFdlYlVSTFJlc3BvbnNlPiByZXNwb25z
ZSA9IFdlYlVSTFJlc3BvbnNlOjpjcmVhdGUoY29waWVkVVJMUmVzcG9uc2UuZ2V0KCkpOwotICAg
IHJldHVybiB0b0FQSShyZXNwb25zZS5yZWxlYXNlKCkucmVsZWFzZVJlZigpKTsKKyAgICByZXR1
cm4gdG9BUEkocmVzcG9uc2UucmVsZWFzZSgpLmxlYWtSZWYoKSk7CiB9CiAKIE5TVVJMUmVzcG9u
c2UqIFdLVVJMUmVzcG9uc2VDb3B5TlNVUkxSZXNwb25zZShXS1VSTFJlc3BvbnNlUmVmIHVybFJl
c3BvbnNlKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0Yu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9jZi9Bcmd1bWVudENvZGVy
c0NGLmNwcAkocmV2aXNpb24gOTkxMTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2YvQXJn
dW1lbnRDb2RlcnNDRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2Nyw3ICszNjcsNyBAQCBib29s
IGRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlCiAgICAgICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKGRpY3Rpb25hcnkuZ2V0KCksIGtleS5nZXQoKSwgdmFsdWUuZ2V0KCkpOwogICAg
IH0KIAotICAgIHJlc3VsdC5hZG9wdENGKGRpY3Rpb25hcnkucmVsZWFzZVJlZigpKTsKKyAgICBy
ZXN1bHQuYWRvcHRDRihkaWN0aW9uYXJ5LmxlYWtSZWYoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlz
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQmFj
a0ZvcndhcmRMaXN0LmNwcAkocmV2aXNpb24gOTkxMTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCwx
MCArNjgsMTAgQEAgdW5zaWduZWQgV0tCYWNrRm9yd2FyZExpc3RHZXRGb3J3YXJkTGlzdAogCiBX
S0FycmF5UmVmIFdLQmFja0ZvcndhcmRMaXN0Q29weUJhY2tMaXN0V2l0aExpbWl0KFdLQmFja0Zv
cndhcmRMaXN0UmVmIGxpc3RSZWYsIHVuc2lnbmVkIGxpbWl0KQogewotICAgIHJldHVybiB0b0FQ
SSh0b0ltcGwobGlzdFJlZiktPmJhY2tMaXN0QXNJbW11dGFibGVBcnJheVdpdGhMaW1pdChsaW1p
dCkucmVsZWFzZVJlZigpKTsKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGxpc3RSZWYpLT5iYWNr
TGlzdEFzSW1tdXRhYmxlQXJyYXlXaXRoTGltaXQobGltaXQpLmxlYWtSZWYoKSk7CiB9CiAKIFdL
QXJyYXlSZWYgV0tCYWNrRm9yd2FyZExpc3RDb3B5Rm9yd2FyZExpc3RXaXRoTGltaXQoV0tCYWNr
Rm9yd2FyZExpc3RSZWYgbGlzdFJlZiwgdW5zaWduZWQgbGltaXQpCiB7Ci0gICAgcmV0dXJuIHRv
QVBJKHRvSW1wbChsaXN0UmVmKS0+Zm9yd2FyZExpc3RBc0ltbXV0YWJsZUFycmF5V2l0aExpbWl0
KGxpbWl0KS5yZWxlYXNlUmVmKCkpOyAgICAKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGxpc3RS
ZWYpLT5mb3J3YXJkTGlzdEFzSW1tdXRhYmxlQXJyYXlXaXRoTGltaXQobGltaXQpLmxlYWtSZWYo
KSk7ICAgIAogfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dC5jcHAJKHJldmlzaW9uIDk5MTE2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDEzICs1MiwxMyBAQCBXS1R5
cGVJRCBXS0NvbnRleHRHZXRUeXBlSUQoKQogV0tDb250ZXh0UmVmIFdLQ29udGV4dENyZWF0ZSgp
CiB7CiAgICAgUmVmUHRyPFdlYkNvbnRleHQ+IGNvbnRleHQgPSBXZWJDb250ZXh0OjpjcmVhdGUo
U3RyaW5nKCkpOwotICAgIHJldHVybiB0b0FQSShjb250ZXh0LnJlbGVhc2UoKS5yZWxlYXNlUmVm
KCkpOworICAgIHJldHVybiB0b0FQSShjb250ZXh0LnJlbGVhc2UoKS5sZWFrUmVmKCkpOwogfQog
CiBXS0NvbnRleHRSZWYgV0tDb250ZXh0Q3JlYXRlV2l0aEluamVjdGVkQnVuZGxlUGF0aChXS1N0
cmluZ1JlZiBwYXRoUmVmKQogewogICAgIFJlZlB0cjxXZWJDb250ZXh0PiBjb250ZXh0ID0gV2Vi
Q29udGV4dDo6Y3JlYXRlKHRvSW1wbChwYXRoUmVmKS0+c3RyaW5nKCkpOwotICAgIHJldHVybiB0
b0FQSShjb250ZXh0LnJlbGVhc2UoKS5yZWxlYXNlUmVmKCkpOworICAgIHJldHVybiB0b0FQSShj
b250ZXh0LnJlbGVhc2UoKS5sZWFrUmVmKCkpOwogfQogCiBXS0NvbnRleHRSZWYgV0tDb250ZXh0
R2V0U2hhcmVkUHJvY2Vzc0NvbnRleHQoKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLQ3JlZGVudGlhbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLQ3JlZGVudGlhbC5jcHAJKHJldmlzaW9uIDk5MTE2KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ3JlZGVudGlhbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQxLDEzICs0MSwxMyBAQCBXS1R5cGVJRCBXS0NyZWRlbnRpYWxHZXRUeXBlSUQoKQogV0tD
cmVkZW50aWFsUmVmIFdLQ3JlZGVudGlhbENyZWF0ZShXS1N0cmluZ1JlZiB1c2VybmFtZSwgV0tT
dHJpbmdSZWYgcGFzc3dvcmQsIFdLQ3JlZGVudGlhbFBlcnNpc3RlbmNlIHBlcnNpc3RlbmNlKQog
ewogICAgIFJlZlB0cjxXZWJDcmVkZW50aWFsPiBjcmVkZW50aWFsID0gV2ViQ3JlZGVudGlhbDo6
Y3JlYXRlKHRvSW1wbCh1c2VybmFtZSksIHRvSW1wbChwYXNzd29yZCksIHRvQ3JlZGVudGlhbFBl
cnNpc3RlbmNlKHBlcnNpc3RlbmNlKSk7Ci0gICAgcmV0dXJuIHRvQVBJKGNyZWRlbnRpYWwucmVs
ZWFzZSgpLnJlbGVhc2VSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKGNyZWRlbnRpYWwucmVsZWFz
ZSgpLmxlYWtSZWYoKSk7CiB9CiAKIFdLQ3JlZGVudGlhbFJlZiBXS0NyZWRlbnRpYWxDcmVhdGVX
aXRoQ2VydGlmaWNhdGVJbmZvKFdLQ2VydGlmaWNhdGVJbmZvUmVmIGNlcnRpZmljYXRlSW5mbykK
IHsKICAgICBSZWZQdHI8V2ViQ3JlZGVudGlhbD4gY3JlZGVudGlhbCA9IFdlYkNyZWRlbnRpYWw6
OmNyZWF0ZSh0b0ltcGwoY2VydGlmaWNhdGVJbmZvKSk7Ci0gICAgcmV0dXJuIHRvQVBJKGNyZWRl
bnRpYWwucmVsZWFzZSgpLnJlbGVhc2VSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKGNyZWRlbnRp
YWwucmVsZWFzZSgpLmxlYWtSZWYoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLQ3JlZGVudGlhbENv
cHlVc2VyKFdLQ3JlZGVudGlhbFJlZiBjcmVkZW50aWFsUmVmKQpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLRGF0YWJhc2VNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tEYXRhYmFzZU1hbmFnZXIuY3BwCShyZXZp
c2lvbiA5OTExNikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0RhdGFiYXNl
TWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDQ5ICs0Miw0OSBAQCBXS1R5cGVJRCBX
S0RhdGFiYXNlTWFuYWdlckdldFR5cGVJRCgpCiAKIFdLU3RyaW5nUmVmIFdLRGF0YWJhc2VNYW5h
Z2VyR2V0T3JpZ2luS2V5KCkKIHsKLSAgICBzdGF0aWMgV2ViU3RyaW5nKiBrZXkgPSBXZWJTdHJp
bmc6OmNyZWF0ZShXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6b3JpZ2luS2V5KCkpLnJlbGVhc2VS
ZWYoKTsKKyAgICBzdGF0aWMgV2ViU3RyaW5nKiBrZXkgPSBXZWJTdHJpbmc6OmNyZWF0ZShXZWJE
YXRhYmFzZU1hbmFnZXJQcm94eTo6b3JpZ2luS2V5KCkpLmxlYWtSZWYoKTsKICAgICByZXR1cm4g
dG9BUEkoa2V5KTsKIH0KIAogV0tTdHJpbmdSZWYgV0tEYXRhYmFzZU1hbmFnZXJHZXRPcmlnaW5R
dW90YUtleSgpCiB7Ci0gICAgc3RhdGljIFdlYlN0cmluZyoga2V5ID0gV2ViU3RyaW5nOjpjcmVh
dGUoV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6Om9yaWdpblF1b3RhS2V5KCkpLnJlbGVhc2VSZWYo
KTsKKyAgICBzdGF0aWMgV2ViU3RyaW5nKiBrZXkgPSBXZWJTdHJpbmc6OmNyZWF0ZShXZWJEYXRh
YmFzZU1hbmFnZXJQcm94eTo6b3JpZ2luUXVvdGFLZXkoKSkubGVha1JlZigpOwogICAgIHJldHVy
biB0b0FQSShrZXkpOwogfQogCiBXS1N0cmluZ1JlZiBXS0RhdGFiYXNlTWFuYWdlckdldE9yaWdp
blVzYWdlS2V5KCkKIHsKLSAgICBzdGF0aWMgV2ViU3RyaW5nKiBrZXkgPSBXZWJTdHJpbmc6OmNy
ZWF0ZShXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6b3JpZ2luVXNhZ2VLZXkoKSkucmVsZWFzZVJl
ZigpOworICAgIHN0YXRpYyBXZWJTdHJpbmcqIGtleSA9IFdlYlN0cmluZzo6Y3JlYXRlKFdlYkRh
dGFiYXNlTWFuYWdlclByb3h5OjpvcmlnaW5Vc2FnZUtleSgpKS5sZWFrUmVmKCk7CiAgICAgcmV0
dXJuIHRvQVBJKGtleSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLRGF0YWJhc2VNYW5hZ2VyR2V0RGF0
YWJhc2VEZXRhaWxzS2V5KCkKIHsKLSAgICBzdGF0aWMgV2ViU3RyaW5nKiBrZXkgPSBXZWJTdHJp
bmc6OmNyZWF0ZShXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6ZGF0YWJhc2VEZXRhaWxzS2V5KCkp
LnJlbGVhc2VSZWYoKTsKKyAgICBzdGF0aWMgV2ViU3RyaW5nKiBrZXkgPSBXZWJTdHJpbmc6OmNy
ZWF0ZShXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6ZGF0YWJhc2VEZXRhaWxzS2V5KCkpLmxlYWtS
ZWYoKTsKICAgICByZXR1cm4gdG9BUEkoa2V5KTsKIH0KIAogV0tTdHJpbmdSZWYgV0tEYXRhYmFz
ZU1hbmFnZXJHZXREYXRhYmFzZURldGFpbHNOYW1lS2V5KCkKIHsKLSAgICBzdGF0aWMgV2ViU3Ry
aW5nKiBrZXkgPSBXZWJTdHJpbmc6OmNyZWF0ZShXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6ZGF0
YWJhc2VEZXRhaWxzTmFtZUtleSgpKS5yZWxlYXNlUmVmKCk7CisgICAgc3RhdGljIFdlYlN0cmlu
Zyoga2V5ID0gV2ViU3RyaW5nOjpjcmVhdGUoV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmRhdGFi
YXNlRGV0YWlsc05hbWVLZXkoKSkubGVha1JlZigpOwogICAgIHJldHVybiB0b0FQSShrZXkpOwog
fQogCiBXS1N0cmluZ1JlZiBXS0RhdGFiYXNlTWFuYWdlckdldERhdGFiYXNlRGV0YWlsc0Rpc3Bs
YXlOYW1lS2V5KCkKIHsKLSAgICBzdGF0aWMgV2ViU3RyaW5nKiBrZXkgPSBXZWJTdHJpbmc6OmNy
ZWF0ZShXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6ZGF0YWJhc2VEZXRhaWxzRGlzcGxheU5hbWVL
ZXkoKSkucmVsZWFzZVJlZigpOworICAgIHN0YXRpYyBXZWJTdHJpbmcqIGtleSA9IFdlYlN0cmlu
Zzo6Y3JlYXRlKFdlYkRhdGFiYXNlTWFuYWdlclByb3h5OjpkYXRhYmFzZURldGFpbHNEaXNwbGF5
TmFtZUtleSgpKS5sZWFrUmVmKCk7CiAgICAgcmV0dXJuIHRvQVBJKGtleSk7CiB9CiAKIFdLU3Ry
aW5nUmVmIFdLRGF0YWJhc2VNYW5hZ2VyR2V0RGF0YWJhc2VEZXRhaWxzRXhwZWN0ZWRVc2FnZUtl
eSgpCiB7Ci0gICAgc3RhdGljIFdlYlN0cmluZyoga2V5ID0gV2ViU3RyaW5nOjpjcmVhdGUoV2Vi
RGF0YWJhc2VNYW5hZ2VyUHJveHk6OmRhdGFiYXNlRGV0YWlsc0V4cGVjdGVkVXNhZ2VLZXkoKSku
cmVsZWFzZVJlZigpOworICAgIHN0YXRpYyBXZWJTdHJpbmcqIGtleSA9IFdlYlN0cmluZzo6Y3Jl
YXRlKFdlYkRhdGFiYXNlTWFuYWdlclByb3h5OjpkYXRhYmFzZURldGFpbHNFeHBlY3RlZFVzYWdl
S2V5KCkpLmxlYWtSZWYoKTsKICAgICByZXR1cm4gdG9BUEkoa2V5KTsKIH0KIAogV0tTdHJpbmdS
ZWYgV0tEYXRhYmFzZU1hbmFnZXJHZXREYXRhYmFzZURldGFpbHNDdXJyZW50VXNhZ2VLZXkoKQog
ewotICAgIHN0YXRpYyBXZWJTdHJpbmcqIGtleSA9IFdlYlN0cmluZzo6Y3JlYXRlKFdlYkRhdGFi
YXNlTWFuYWdlclByb3h5OjpkYXRhYmFzZURldGFpbHNDdXJyZW50VXNhZ2VLZXkoKSkucmVsZWFz
ZVJlZigpOworICAgIHN0YXRpYyBXZWJTdHJpbmcqIGtleSA9IFdlYlN0cmluZzo6Y3JlYXRlKFdl
YkRhdGFiYXNlTWFuYWdlclByb3h5OjpkYXRhYmFzZURldGFpbHNDdXJyZW50VXNhZ2VLZXkoKSku
bGVha1JlZigpOwogICAgIHJldHVybiB0b0FQSShrZXkpOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuY3BwCShyZXZpc2lvbiA5OTExNikKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTgsNyArOTgsNyBAQCBXS1BhZ2VSZWYgV0tGcmFtZUdldFBhZ2UoV0tGcmFtZVJlZiBmcmFt
CiAKIFdLQXJyYXlSZWYgV0tGcmFtZUNvcHlDaGlsZEZyYW1lcyhXS0ZyYW1lUmVmIGZyYW1lUmVm
KQogewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwoZnJhbWVSZWYpLT5jaGlsZEZyYW1lcygpLnJl
bGVhc2VSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChmcmFtZVJlZiktPmNoaWxkRnJh
bWVzKCkubGVha1JlZigpKTsKIH0KIAogV0tGcmFtZVJlZiBXS0ZyYW1lR2V0UGFyZW50RnJhbWUo
V0tGcmFtZVJlZiBmcmFtZVJlZikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0dlb2xvY2F0aW9uUG9zaXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uUG9zaXRpb24uY3BwCShyZXZpc2lvbiA5OTEx
NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uUG9zaXRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw1ICszOSw1IEBAIFdLVHlwZUlEIFdLR2VvbG9j
YXRpb25Qb3NpdGlvbkdldFR5cGVJRCgKIFdLR2VvbG9jYXRpb25Qb3NpdGlvblJlZiBXS0dlb2xv
Y2F0aW9uUG9zaXRpb25DcmVhdGUoZG91YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0dWRlLCBk
b3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpCiB7CiAgICAgUmVmUHRyPFdlYkdlb2xv
Y2F0aW9uUG9zaXRpb24+IHBvc2l0aW9uID0gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRl
KHRpbWVzdGFtcCwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kpOwotICAgIHJldHVybiB0
b0FQSShwb3NpdGlvbi5yZWxlYXNlKCkucmVsZWFzZVJlZigpKTsKKyAgICByZXR1cm4gdG9BUEko
cG9zaXRpb24ucmVsZWFzZSgpLmxlYWtSZWYoKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tHcmFtbWFyRGV0YWlsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tHcmFtbWFyRGV0YWlsLmNwcAkocmV2aXNpb24gOTkx
MTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tHcmFtbWFyRGV0YWlsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBXS1R5cGVJRCBXS0dyYW1tYXJEZXRh
aWxHZXRUeXBlSUQoKQogV0tHcmFtbWFyRGV0YWlsUmVmIFdLR3JhbW1hckRldGFpbENyZWF0ZShp
bnQgbG9jYXRpb24sIGludCBsZW5ndGgsIFdLQXJyYXlSZWYgZ3Vlc3NlcywgV0tTdHJpbmdSZWYg
dXNlckRlc2NyaXB0aW9uKQogewogICAgIFJlZlB0cjxXZWJHcmFtbWFyRGV0YWlsPiBkZXRhaWwg
PSBXZWJHcmFtbWFyRGV0YWlsOjpjcmVhdGUobG9jYXRpb24sIGxlbmd0aCwgdG9JbXBsKGd1ZXNz
ZXMpLCB0b1dURlN0cmluZyh1c2VyRGVzY3JpcHRpb24pKTsKLSAgICByZXR1cm4gdG9BUEkoZGV0
YWlsLnJlbGVhc2UoKS5yZWxlYXNlUmVmKCkpOworICAgIHJldHVybiB0b0FQSShkZXRhaWwucmVs
ZWFzZSgpLmxlYWtSZWYoKSk7CiB9CiAKIGludCBXS0dyYW1tYXJEZXRhaWxHZXRMb2NhdGlvbihX
S0dyYW1tYXJEZXRhaWxSZWYgZ3JhbW1hckRldGFpbFJlZikKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiA5OTExNikKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzks
MTMgKzIzOSwxMyBAQCB2b2lkIFdLUGFnZVRlcm1pbmF0ZShXS1BhZ2VSZWYgcGFnZVJlZikKIAog
V0tTdHJpbmdSZWYgV0tQYWdlR2V0U2Vzc2lvbkhpc3RvcnlVUkxWYWx1ZVR5cGUoKQogewotICAg
IHN0YXRpYyBXZWJTdHJpbmcqIHNlc3Npb25IaXN0b3J5VVJMVmFsdWVUeXBlID0gV2ViU3RyaW5n
OjpjcmVhdGUoIlNlc3Npb25IaXN0b3J5VVJMIikucmVsZWFzZVJlZigpOworICAgIHN0YXRpYyBX
ZWJTdHJpbmcqIHNlc3Npb25IaXN0b3J5VVJMVmFsdWVUeXBlID0gV2ViU3RyaW5nOjpjcmVhdGUo
IlNlc3Npb25IaXN0b3J5VVJMIikubGVha1JlZigpOwogICAgIHJldHVybiB0b0FQSShzZXNzaW9u
SGlzdG9yeVVSTFZhbHVlVHlwZSk7CiB9CiAKIFdLRGF0YVJlZiBXS1BhZ2VDb3B5U2Vzc2lvblN0
YXRlKFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkICpjb250ZXh0LCBXS1BhZ2VTZXNzaW9uU3RhdGVG
aWx0ZXJDYWxsYmFjayBmaWx0ZXIpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChwYWdlUmVm
KS0+c2Vzc2lvblN0YXRlRGF0YShmaWx0ZXIsIGNvbnRleHQpLnJlbGVhc2VSZWYoKSk7CisgICAg
cmV0dXJuIHRvQVBJKHRvSW1wbChwYWdlUmVmKS0+c2Vzc2lvblN0YXRlRGF0YShmaWx0ZXIsIGNv
bnRleHQpLmxlYWtSZWYoKSk7CiB9CiAKIHZvaWQgV0tQYWdlUmVzdG9yZUZyb21TZXNzaW9uU3Rh
dGUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLRGF0YVJlZiBzZXNzaW9uU3RhdGVEYXRhKQpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAko
cmV2aXNpb24gOTkxMTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVm
ZXJlbmNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgV0tQcmVmZXJlbmNl
c1JlZiBXS1ByZWZlcmVuY2VzQ3JlYXRlKCkKIFdLUHJlZmVyZW5jZXNSZWYgV0tQcmVmZXJlbmNl
c0NyZWF0ZVdpdGhJZGVudGlmaWVyKFdLU3RyaW5nUmVmIGlkZW50aWZpZXJSZWYpCiB7CiAgICAg
UmVmUHRyPFdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVh
dGUodG9XVEZTdHJpbmcoaWRlbnRpZmllclJlZikpOwotICAgIHJldHVybiB0b0FQSShwcmVmZXJl
bmNlcy5yZWxlYXNlKCkucmVsZWFzZVJlZigpKTsKKyAgICByZXR1cm4gdG9BUEkocHJlZmVyZW5j
ZXMucmVsZWFzZSgpLmxlYWtSZWYoKSk7CiB9CiAKIHZvaWQgV0tQcmVmZXJlbmNlc1NldEphdmFT
Y3JpcHRFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgamF2YVNj
cmlwdEVuYWJsZWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvd2luL1dL
Vmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3dp
bi9XS1ZpZXcuY3BwCShyZXZpc2lvbiA5OTExNikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy93aW4vV0tWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBX
S1R5cGVJRCBXS1ZpZXdHZXRUeXBlSUQoKQogV0tWaWV3UmVmIFdLVmlld0NyZWF0ZShSRUNUIHJl
Y3QsIFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYs
IEhXTkQgcGFyZW50V2luZG93KQogewogICAgIFJlZlB0cjxXZWJWaWV3PiB2aWV3ID0gV2ViVmll
dzo6Y3JlYXRlKHJlY3QsIHRvSW1wbChjb250ZXh0UmVmKSwgdG9JbXBsKHBhZ2VHcm91cFJlZiks
IHBhcmVudFdpbmRvdyk7Ci0gICAgcmV0dXJuIHRvQVBJKHZpZXcucmVsZWFzZSgpLnJlbGVhc2VS
ZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKHZpZXcucmVsZWFzZSgpLmxlYWtSZWYoKSk7CiB9CiAK
IEhXTkQgV0tWaWV3R2V0V2luZG93KFdLVmlld1JlZiB2aWV3UmVmKQpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3dpbi9XZWJVbmRvQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlVuZG9DbGllbnQuY3BwCShyZXZpc2lvbiA5OTEx
NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVW5kb0NsaWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgdm9pZCBXZWJVbmRvQ2xpZW50OjpyZWdpc3Rl
ckVkaXRDb21tYW5kKAogICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8V2ViRWRpdENvbW1h
bmRQcm94eT4gY29tbWFuZCA9IHBycENvbW1hbmQ7Ci0gICAgbV9jbGllbnQucmVnaXN0ZXJFZGl0
Q29tbWFuZCh0b0FQSSh2aWV3KSwgdG9BUEkoY29tbWFuZC5yZWxlYXNlKCkucmVsZWFzZVJlZigp
KSwgKHVuZG9PclJlZG8gPT0gV2ViUGFnZVByb3h5OjpVbmRvKSA/IGtXS1ZpZXdVbmRvIDoga1dL
Vmlld1JlZG8sIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LnJlZ2lzdGVyRWRp
dENvbW1hbmQodG9BUEkodmlldyksIHRvQVBJKGNvbW1hbmQucmVsZWFzZSgpLmxlYWtSZWYoKSks
ICh1bmRvT3JSZWRvID09IFdlYlBhZ2VQcm94eTo6VW5kbykgPyBrV0tWaWV3VW5kbyA6IGtXS1Zp
ZXdSZWRvLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBXZWJVbmRvQ2xpZW50Ojpj
bGVhckFsbEVkaXRDb21tYW5kcyhXZWJWaWV3KiB2aWV3KQpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlRnJhbWUuY3BwCShyZXZpc2lvbiA5OTExNikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgyLDcgKzgyLDcgQEAgV0tGcmFtZUxvYWRTdGF0ZSBXS0J1bmRsZUZyYW1lR2V0RnJh
bWVMbwogCiBXS0FycmF5UmVmIFdLQnVuZGxlRnJhbWVDb3B5Q2hpbGRGcmFtZXMoV0tCdW5kbGVG
cmFtZVJlZiBmcmFtZVJlZikKIHsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKGZyYW1lUmVmKS0+
Y2hpbGRGcmFtZXMoKS5yZWxlYXNlUmVmKCkpOyAgICAKKyAgICByZXR1cm4gdG9BUEkodG9JbXBs
KGZyYW1lUmVmKS0+Y2hpbGRGcmFtZXMoKS5sZWFrUmVmKCkpOyAgICAKIH0KIAogdW5zaWduZWQg
V0tCdW5kbGVGcmFtZUdldE51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhXS0J1bmRsZUZyYW1lUmVm
IGZyYW1lUmVmKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmNw
cAkocmV2aXNpb24gOTkxMTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQy
LDEzICs0MiwxMyBAQCBXS1R5cGVJRCBXS0J1bmRsZU5vZGVIYW5kbGVHZXRUeXBlSUQoKQogV0tC
dW5kbGVOb2RlSGFuZGxlUmVmIFdLQnVuZGxlTm9kZUhhbmRsZUNyZWF0ZShKU0NvbnRleHRSZWYg
Y29udGV4dFJlZiwgSlNPYmplY3RSZWYgb2JqZWN0UmVmKQogewogICAgIFJlZlB0cjxJbmplY3Rl
ZEJ1bmRsZU5vZGVIYW5kbGU+IG5vZGVIYW5kbGUgPSBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6
OmdldE9yQ3JlYXRlKGNvbnRleHRSZWYsIG9iamVjdFJlZik7Ci0gICAgcmV0dXJuIHRvQVBJKG5v
ZGVIYW5kbGUucmVsZWFzZSgpLnJlbGVhc2VSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKG5vZGVI
YW5kbGUucmVsZWFzZSgpLmxlYWtSZWYoKSk7CiB9CiAKIFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBX
S0J1bmRsZU5vZGVIYW5kbGVDb3B5RG9jdW1lbnQoV0tCdW5kbGVOb2RlSGFuZGxlUmVmIG5vZGVI
YW5kbGVSZWYpCiB7CiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhh
bmRsZSA9IHRvSW1wbChub2RlSGFuZGxlUmVmKS0+ZG9jdW1lbnQoKTsKLSAgICByZXR1cm4gdG9B
UEkobm9kZUhhbmRsZS5yZWxlYXNlKCkucmVsZWFzZVJlZigpKTsKKyAgICByZXR1cm4gdG9BUEko
bm9kZUhhbmRsZS5yZWxlYXNlKCkubGVha1JlZigpKTsKIH0KIAogV0tSZWN0IFdLQnVuZGxlTm9k
ZUhhbmRsZUdldFJlbmRlclJlY3QoV0tCdW5kbGVOb2RlSGFuZGxlUmVmIG5vZGVIYW5kbGVSZWYs
IGJvb2wqIGlzUmVwbGFjZWQpCkBAIC04OSwyMyArODksMjMgQEAgYm9vbCBXS0J1bmRsZU5vZGVI
YW5kbGVHZXRIVE1MVGV4dEFyZWFFbAogV0tCdW5kbGVOb2RlSGFuZGxlUmVmIFdLQnVuZGxlTm9k
ZUhhbmRsZUNvcHlIVE1MVGFibGVDZWxsRWxlbWVudENlbGxBYm92ZShXS0J1bmRsZU5vZGVIYW5k
bGVSZWYgaHRtbFRhYmxlQ2VsbEVsZW1lbnRIYW5kbGVSZWYpCiB7CiAgICAgUmVmUHRyPEluamVj
dGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRsZSA9IHRvSW1wbChodG1sVGFibGVDZWxsRWxl
bWVudEhhbmRsZVJlZiktPmh0bWxUYWJsZUNlbGxFbGVtZW50Q2VsbEFib3ZlKCk7Ci0gICAgcmV0
dXJuIHRvQVBJKG5vZGVIYW5kbGUucmVsZWFzZSgpLnJlbGVhc2VSZWYoKSk7CisgICAgcmV0dXJu
IHRvQVBJKG5vZGVIYW5kbGUucmVsZWFzZSgpLmxlYWtSZWYoKSk7CiB9CiAKIFdLQnVuZGxlRnJh
bWVSZWYgV0tCdW5kbGVOb2RlSGFuZGxlQ29weURvY3VtZW50RnJhbWUoV0tCdW5kbGVOb2RlSGFu
ZGxlUmVmIGRvY3VtZW50SGFuZGxlUmVmKQogewogICAgIFJlZlB0cjxXZWJGcmFtZT4gZnJhbWUg
PSB0b0ltcGwoZG9jdW1lbnRIYW5kbGVSZWYpLT5kb2N1bWVudEZyYW1lKCk7Ci0gICAgcmV0dXJu
IHRvQVBJKGZyYW1lLnJlbGVhc2UoKS5yZWxlYXNlUmVmKCkpOworICAgIHJldHVybiB0b0FQSShm
cmFtZS5yZWxlYXNlKCkubGVha1JlZigpKTsKIH0KIAogV0tCdW5kbGVGcmFtZVJlZiBXS0J1bmRs
ZU5vZGVIYW5kbGVDb3B5SFRNTEZyYW1lRWxlbWVudENvbnRlbnRGcmFtZShXS0J1bmRsZU5vZGVI
YW5kbGVSZWYgaHRtbEZyYW1lRWxlbWVudEhhbmRsZVJlZikKIHsKICAgICBSZWZQdHI8V2ViRnJh
bWU+IGZyYW1lID0gdG9JbXBsKGh0bWxGcmFtZUVsZW1lbnRIYW5kbGVSZWYpLT5odG1sRnJhbWVF
bGVtZW50Q29udGVudEZyYW1lKCk7Ci0gICAgcmV0dXJuIHRvQVBJKGZyYW1lLnJlbGVhc2UoKS5y
ZWxlYXNlUmVmKCkpOworICAgIHJldHVybiB0b0FQSShmcmFtZS5yZWxlYXNlKCkubGVha1JlZigp
KTsKIH0KIAogV0tCdW5kbGVGcmFtZVJlZiBXS0J1bmRsZU5vZGVIYW5kbGVDb3B5SFRNTElGcmFt
ZUVsZW1lbnRDb250ZW50RnJhbWUoV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGh0bWxJRnJhbWVFbGVt
ZW50SGFuZGxlUmVmKQogewogICAgIFJlZlB0cjxXZWJGcmFtZT4gZnJhbWUgPSB0b0ltcGwoaHRt
bElGcmFtZUVsZW1lbnRIYW5kbGVSZWYpLT5odG1sSUZyYW1lRWxlbWVudENvbnRlbnRGcmFtZSgp
OwotICAgIHJldHVybiB0b0FQSShmcmFtZS5yZWxlYXNlKCkucmVsZWFzZVJlZigpKTsKKyAgICBy
ZXR1cm4gdG9BUEkoZnJhbWUucmVsZWFzZSgpLmxlYWtSZWYoKSk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2UuY3BwCShyZXZpc2lvbiA5OTExNikKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjkzLDcgKzI5Myw3IEBAIHZvaWQgV0tCdW5kbGVQYWdlUmVzZXRUcmFja2Vk
UmVwYWludHMoV0sKIAogV0tBcnJheVJlZiBXS0J1bmRsZVBhZ2VDb3B5VHJhY2tlZFJlcGFpbnRS
ZWN0cyhXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKIHsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBs
KHBhZ2VSZWYpLT50cmFja2VkUmVwYWludFJlY3RzKCkucmVsZWFzZVJlZigpKTsKKyAgICByZXR1
cm4gdG9BUEkodG9JbXBsKHBhZ2VSZWYpLT50cmFja2VkUmVwYWludFJlY3RzKCkubGVha1JlZigp
KTsKIH0KIAogV0tTdHJpbmdSZWYgV0tCdW5kbGVQYWdlVmlld3BvcnRDb25maWd1cmF0aW9uQXNU
ZXh0KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBpbnQgZGV2aWNlRFBJLCBpbnQgZGV2aWNlV2lk
dGgsIGludCBkZXZpY2VIZWlnaHQsIGludCBhdmFpbGFibGVXaWR0aCwgaW50IGF2YWlsYWJsZUhl
aWdodCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVTY3JpcHRXb3JsZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVNjcmlwdFdvcmxkLmNwcAko
cmV2aXNpb24gOTkxMTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlU2NyaXB0V29ybGQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3
ICs0MCw3IEBAIFdLVHlwZUlEIFdLQnVuZGxlU2NyaXB0V29ybGRHZXRUeXBlSUQoKQogV0tCdW5k
bGVTY3JpcHRXb3JsZFJlZiBXS0J1bmRsZVNjcmlwdFdvcmxkQ3JlYXRlV29ybGQoKQogewogICAg
IFJlZlB0cjxJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiB3b3JsZCA9IEluamVjdGVkQnVuZGxl
U2NyaXB0V29ybGQ6OmNyZWF0ZSgpOwotICAgIHJldHVybiB0b0FQSSh3b3JsZC5yZWxlYXNlKCku
cmVsZWFzZVJlZigpKTsKKyAgICByZXR1cm4gdG9BUEkod29ybGQucmVsZWFzZSgpLmxlYWtSZWYo
KSk7CiB9CiAKIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgV0tCdW5kbGVTY3JpcHRXb3JsZE5vcm1h
bFdvcmxkKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5OTEyMykK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsNDMgQEAKKzIwMTEtMTEtMDIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgor
CisgICAgICAgIENoYW5nZSByZW1haW5pbmcgY2FsbGVycyBvZiByZWxlYXNlUmVmIHRvIGNhbGwg
bGVha1JlZgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzE0MjIKKworICAgICAgICAqIHB1YmxpYy9XZWJQcml2YXRlUHRyLmg6CisgICAgICAgIChXZWJL
aXQ6OldlYlByaXZhdGVQdHI6OldlYlByaXZhdGVQdHIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cml2YXRlUHRyOjpvcGVyYXRvcj0pOgorICAgICAgICAqIHNyYy9XZWJET01FdmVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkRPTUV2ZW50OjpXZWJET01FdmVudCk6CisgICAgICAgICogc3Jj
L1dlYkRhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhOjphc3NpZ24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJEYXRhOjpXZWJEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YTo6
b3BlcmF0b3I9KToKKyAgICAgICAgKiBzcmMvV2ViRHJhZ0RhdGEuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJEcmFnRGF0YTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdE
YXRhOjpXZWJEcmFnRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdEYXRhOjpvcGVyYXRv
cj0pOgorICAgICAgICAqIHNyYy9XZWJIVFRQQm9keS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkhUVFBCb2R5Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViSFRUUEJvZHk6Oldl
YkhUVFBCb2R5KToKKyAgICAgICAgKFdlYktpdDo6V2ViSFRUUEJvZHk6Om9wZXJhdG9yPSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkhUVFBCb2R5OjplbnN1cmVNdXRhYmxlKToKKyAgICAgICAgKiBz
cmMvV2ViTm9kZUNvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb2RlQ29sbGVj
dGlvbjo6V2ViTm9kZUNvbGxlY3Rpb24pOgorICAgICAgICAqIHNyYy9XZWJOb2RlTGlzdC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYk5vZGVMaXN0OjpXZWJOb2RlTGlzdCk6CisgICAgICAgICog
c3JjL1dlYk5vdGlmaWNhdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlv
bjo6V2ViTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uOjpv
cGVyYXRvcj0pOgorICAgICAgICAqIHNyYy9XZWJSYW5nZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlJhbmdlOjpXZWJSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJhbmdlOjpvcGVyYXRv
cj0pOgorICAgICAgICAqIHNyYy9XZWJTZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlNlY3VyaXR5T3JpZ2luOjpXZWJTZWN1cml0eU9yaWdpbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlNlY3VyaXR5T3JpZ2luOjpvcGVyYXRvcj0pOgorICAgICAgICAqIHNyYy9XZWJUaHJl
YWRTYWZlRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlRocmVhZFNhZmVEYXRhOjpXZWJU
aHJlYWRTYWZlRGF0YSk6CisgICAgICAgIFVzZSBsZWFrUmVmLgorCiAyMDExLTExLTAyICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBFeHBhbmQgRHJhZ0NvbnRyb2xsZXIg
dG8gcHJvdmlkZSBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkcmFnZ2luZyBzZXNzaW9uCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJQcml2YXRlUHRyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUHJpdmF0ZVB0ci5oCShy
ZXZpc2lvbiA5OTExNikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlByaXZh
dGVQdHIuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKICNpZiBX
RUJLSVRfSU1QTEVNRU5UQVRJT04KICAgICBXZWJQcml2YXRlUHRyKGNvbnN0IFBhc3NSZWZQdHI8
VD4mIHBycCkKLSAgICAgICAgOiBtX3B0cihwcnAucmVsZWFzZVJlZigpKQorICAgICAgICA6IG1f
cHRyKHBycC5sZWFrUmVmKCkpCiAgICAgewogICAgIH0KIApAQCAtNzAsNyArNzAsNyBAQCBwdWJs
aWM6CiAKICAgICBXZWJQcml2YXRlUHRyPFQ+JiBvcGVyYXRvcj0oY29uc3QgUGFzc1JlZlB0cjxU
PiYgcHJwKQogICAgIHsKLSAgICAgICAgYXNzaWduKHBycC5yZWxlYXNlUmVmKCkpOworICAgICAg
ICBhc3NpZ24ocHJwLmxlYWtSZWYoKSk7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRPTUV2ZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJET01FdmVudC5jcHAJKHJldmlz
aW9uIDk5MTE2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRE9NRXZlbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgV2ViRE9NRXZlbnQ6OmFzc2ln
bihXZWJET01FdmVudFByaXYKIH0KIAogV2ViRE9NRXZlbnQ6OldlYkRPTUV2ZW50KGNvbnN0IFdU
Rjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpFdmVudD4mIGV2ZW50KQotICAgIDogbV9wcml2YXRlKHN0
YXRpY19jYXN0PFdlYkRPTUV2ZW50UHJpdmF0ZSo+KGV2ZW50LnJlbGVhc2VSZWYoKSkpCisgICAg
OiBtX3ByaXZhdGUoc3RhdGljX2Nhc3Q8V2ViRE9NRXZlbnRQcml2YXRlKj4oZXZlbnQubGVha1Jl
ZigpKSkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGF0YS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGF0YS5jcHAJ
KHJldmlzaW9uIDk5MTE2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGF0YS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBXZWJEYXRhOjphc3NpZ24o
Y29uc3QgV2ViRGF0YSYgb3RoZQogdm9pZCBXZWJEYXRhOjphc3NpZ24oY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgYXNzaWduKHN0YXRpY19jYXN0PFdlYkRhdGFQcml2YXRl
Kj4oCi0gICAgICAgIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpLnJlbGVhc2VSZWYo
KSkpOworICAgICAgICBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKS5sZWFrUmVmKCkp
KTsKIH0KIAogc2l6ZV90IFdlYkRhdGE6OnNpemUoKSBjb25zdApAQCAtNzcsMTMgKzc3LDEzIEBA
IGNvbnN0IGNoYXIqIFdlYkRhdGE6OmRhdGEoKSBjb25zdAogfQogCiBXZWJEYXRhOjpXZWJEYXRh
KGNvbnN0IFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQotICAgIDogbV9wcml2YXRl
KHN0YXRpY19jYXN0PFdlYkRhdGFQcml2YXRlKj4oYnVmZmVyLnJlbGVhc2VSZWYoKSkpCisgICAg
OiBtX3ByaXZhdGUoc3RhdGljX2Nhc3Q8V2ViRGF0YVByaXZhdGUqPihidWZmZXIubGVha1JlZigp
KSkKIHsKIH0KIAogV2ViRGF0YSYgV2ViRGF0YTo6b3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewotICAgIGFzc2lnbihzdGF0aWNfY2FzdDxXZWJEYXRh
UHJpdmF0ZSo+KGJ1ZmZlci5yZWxlYXNlUmVmKCkpKTsKKyAgICBhc3NpZ24oc3RhdGljX2Nhc3Q8
V2ViRGF0YVByaXZhdGUqPihidWZmZXIubGVha1JlZigpKSk7CiAgICAgcmV0dXJuICp0aGlzOwog
fQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEcmFnRGF0YS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRHJhZ0RhdGEuY3BwCShy
ZXZpc2lvbiA5OTExNikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRyYWdEYXRh
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBjbGFzcyBXZWJEcmFnRGF0YVBy
aXZhdGUgOiBwdWJsaWMgQ2hyb21pCiAKIHZvaWQgV2ViRHJhZ0RhdGE6OmluaXRpYWxpemUoKQog
ewotICAgIGFzc2lnbihzdGF0aWNfY2FzdDxXZWJEcmFnRGF0YVByaXZhdGUqPihDaHJvbWl1bURh
dGFPYmplY3Q6OmNyZWF0ZShDbGlwYm9hcmQ6OkRyYWdBbmREcm9wKS5yZWxlYXNlUmVmKCkpKTsK
KyAgICBhc3NpZ24oc3RhdGljX2Nhc3Q8V2ViRHJhZ0RhdGFQcml2YXRlKj4oQ2hyb21pdW1EYXRh
T2JqZWN0OjpjcmVhdGUoQ2xpcGJvYXJkOjpEcmFnQW5kRHJvcCkubGVha1JlZigpKSk7CiB9CiAK
IHZvaWQgV2ViRHJhZ0RhdGE6OnJlc2V0KCkKQEAgLTIwNiwxMyArMjA2LDEzIEBAIHZvaWQgV2Vi
RHJhZ0RhdGE6OnNldEZpbGVDb250ZW50KGNvbnN0IFcKIH0KIAogV2ViRHJhZ0RhdGE6OldlYkRy
YWdEYXRhKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpDaHJvbWl1bURhdGFPYmplY3Q+
JiBkYXRhKQotICAgIDogbV9wcml2YXRlKHN0YXRpY19jYXN0PFdlYkRyYWdEYXRhUHJpdmF0ZSo+
KGRhdGEucmVsZWFzZVJlZigpKSkKKyAgICA6IG1fcHJpdmF0ZShzdGF0aWNfY2FzdDxXZWJEcmFn
RGF0YVByaXZhdGUqPihkYXRhLmxlYWtSZWYoKSkpCiB7CiB9CiAKIFdlYkRyYWdEYXRhJiBXZWJE
cmFnRGF0YTo6b3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpDaHJvbWl1
bURhdGFPYmplY3Q+JiBkYXRhKQogewotICAgIGFzc2lnbihzdGF0aWNfY2FzdDxXZWJEcmFnRGF0
YVByaXZhdGUqPihkYXRhLnJlbGVhc2VSZWYoKSkpOworICAgIGFzc2lnbihzdGF0aWNfY2FzdDxX
ZWJEcmFnRGF0YVByaXZhdGUqPihkYXRhLmxlYWtSZWYoKSkpOwogICAgIHJldHVybiAqdGhpczsK
IH0KIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSFRUUEJvZHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkhUVFBCb2R5LmNwcAko
cmV2aXNpb24gOTkxMTYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJIVFRQQm9k
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgV2ViSFRUUEJvZHlQ
cml2YXRlIDogcHVibGljIEZvcm1EYQogCiB2b2lkIFdlYkhUVFBCb2R5Ojppbml0aWFsaXplKCkK
IHsKLSAgICBhc3NpZ24oc3RhdGljX2Nhc3Q8V2ViSFRUUEJvZHlQcml2YXRlKj4oRm9ybURhdGE6
OmNyZWF0ZSgpLnJlbGVhc2VSZWYoKSkpOworICAgIGFzc2lnbihzdGF0aWNfY2FzdDxXZWJIVFRQ
Qm9keVByaXZhdGUqPihGb3JtRGF0YTo6Y3JlYXRlKCkubGVha1JlZigpKSk7CiB9CiAKIHZvaWQg
V2ViSFRUUEJvZHk6OnJlc2V0KCkKQEAgLTE1MSwxMyArMTUxLDEzIEBAIHZvaWQgV2ViSFRUUEJv
ZHk6OnNldElkZW50aWZpZXIobG9uZyBsb24KIH0KIAogV2ViSFRUUEJvZHk6OldlYkhUVFBCb2R5
KGNvbnN0IFBhc3NSZWZQdHI8Rm9ybURhdGE+JiBkYXRhKQotICAgIDogbV9wcml2YXRlKHN0YXRp
Y19jYXN0PFdlYkhUVFBCb2R5UHJpdmF0ZSo+KGRhdGEucmVsZWFzZVJlZigpKSkKKyAgICA6IG1f
cHJpdmF0ZShzdGF0aWNfY2FzdDxXZWJIVFRQQm9keVByaXZhdGUqPihkYXRhLmxlYWtSZWYoKSkp
CiB7CiB9CiAKIFdlYkhUVFBCb2R5JiBXZWJIVFRQQm9keTo6b3BlcmF0b3I9KGNvbnN0IFBhc3NS
ZWZQdHI8Rm9ybURhdGE+JiBkYXRhKQogewotICAgIGFzc2lnbihzdGF0aWNfY2FzdDxXZWJIVFRQ
Qm9keVByaXZhdGUqPihkYXRhLnJlbGVhc2VSZWYoKSkpOworICAgIGFzc2lnbihzdGF0aWNfY2Fz
dDxXZWJIVFRQQm9keVByaXZhdGUqPihkYXRhLmxlYWtSZWYoKSkpOwogICAgIHJldHVybiAqdGhp
czsKIH0KIApAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQgV2ViSFRUUEJvZHk6OmVuc3VyZU11dGFi
bGUoKQogewogICAgIEFTU0VSVCghaXNOdWxsKCkpOwogICAgIGlmICghbV9wcml2YXRlLT5oYXNP
bmVSZWYoKSkKLSAgICAgICAgYXNzaWduKHN0YXRpY19jYXN0PFdlYkhUVFBCb2R5UHJpdmF0ZSo+
KG1fcHJpdmF0ZS0+Y29weSgpLnJlbGVhc2VSZWYoKSkpOworICAgICAgICBhc3NpZ24oc3RhdGlj
X2Nhc3Q8V2ViSFRUUEJvZHlQcml2YXRlKj4obV9wcml2YXRlLT5jb3B5KCkubGVha1JlZigpKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViTm9kZUNvbGxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYk5vZGVDb2xsZWN0aW9uLmNwcAkocmV2aXNpb24gOTkxMTYpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJOb2RlQ29sbGVjdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBXZWJOb2RlQ29sbGVjdGlvbjo6YXNzaWduKGNv
bnN0IFdlYgogfQogCiBXZWJOb2RlQ29sbGVjdGlvbjo6V2ViTm9kZUNvbGxlY3Rpb24oY29uc3Qg
UGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4mIGNvbCkKLSAgICA6IG1fcHJpdmF0ZShzdGF0aWNf
Y2FzdDxIVE1MQ29sbGVjdGlvbio+KGNvbC5yZWxlYXNlUmVmKCkpKQorICAgIDogbV9wcml2YXRl
KHN0YXRpY19jYXN0PEhUTUxDb2xsZWN0aW9uKj4oY29sLmxlYWtSZWYoKSkpCiB7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk5vZGVMaXN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJOb2RlTGlzdC5jcHAJKHJldmlzaW9u
IDk5MTE2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTm9kZUxpc3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHZvaWQgV2ViTm9kZUxpc3Q6OmFzc2lnbihj
b25zdCBXZWJOb2RlTGkKIH0KIAogV2ViTm9kZUxpc3Q6OldlYk5vZGVMaXN0KGNvbnN0IFBhc3NS
ZWZQdHI8Tm9kZUxpc3Q+JiBjb2wpCi0gICAgOiBtX3ByaXZhdGUoc3RhdGljX2Nhc3Q8Tm9kZUxp
c3QqPihjb2wucmVsZWFzZVJlZigpKSkKKyAgICA6IG1fcHJpdmF0ZShzdGF0aWNfY2FzdDxOb2Rl
TGlzdCo+KGNvbC5sZWFrUmVmKCkpKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJOb3RpZmljYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYk5vdGlmaWNhdGlvbi5jcHAJKHJldmlzaW9uIDk5MTE2KQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTm90aWZpY2F0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQ5LDEzICsxNDksMTMgQEAgdm9pZCBXZWJOb3RpZmljYXRpb246OmRpc3BhdGNoRXZl
bnQoY29ucwogfQogCiBXZWJOb3RpZmljYXRpb246OldlYk5vdGlmaWNhdGlvbihjb25zdCBXVEY6
OlBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiYgbm90aWZpY2F0aW9uKQotICAgIDogbV9wcml2YXRl
KHN0YXRpY19jYXN0PFdlYk5vdGlmaWNhdGlvblByaXZhdGUqPihub3RpZmljYXRpb24ucmVsZWFz
ZVJlZigpKSkKKyAgICA6IG1fcHJpdmF0ZShzdGF0aWNfY2FzdDxXZWJOb3RpZmljYXRpb25Qcml2
YXRlKj4obm90aWZpY2F0aW9uLmxlYWtSZWYoKSkpCiB7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbiYg
V2ViTm90aWZpY2F0aW9uOjpvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRyPE5vdGlmaWNh
dGlvbj4mIG5vdGlmaWNhdGlvbikKIHsKLSAgICBhc3NpZ24oc3RhdGljX2Nhc3Q8V2ViTm90aWZp
Y2F0aW9uUHJpdmF0ZSo+KG5vdGlmaWNhdGlvbi5yZWxlYXNlUmVmKCkpKTsKKyAgICBhc3NpZ24o
c3RhdGljX2Nhc3Q8V2ViTm90aWZpY2F0aW9uUHJpdmF0ZSo+KG5vdGlmaWNhdGlvbi5sZWFrUmVm
KCkpKTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlJhbmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJSYW5nZS5jcHAJKHJldmlzaW9uIDk5MTE2KQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViUmFuZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsMTMgKzEwMCwxMyBA
QCBXZWJSYW5nZSBXZWJSYW5nZTo6ZnJvbURvY3VtZW50UmFuZ2UoV2ViCiB9CiAKIFdlYlJhbmdl
OjpXZWJSYW5nZShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+JiByYW5nZSkK
LSAgICA6IG1fcHJpdmF0ZShzdGF0aWNfY2FzdDxXZWJSYW5nZVByaXZhdGUqPihyYW5nZS5yZWxl
YXNlUmVmKCkpKQorICAgIDogbV9wcml2YXRlKHN0YXRpY19jYXN0PFdlYlJhbmdlUHJpdmF0ZSo+
KHJhbmdlLmxlYWtSZWYoKSkpCiB7CiB9CiAKIFdlYlJhbmdlJiBXZWJSYW5nZTo6b3BlcmF0b3I9
KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpSYW5nZT4mIHJhbmdlKQogewotICAgIGFz
c2lnbihzdGF0aWNfY2FzdDxXZWJSYW5nZVByaXZhdGUqPihyYW5nZS5yZWxlYXNlUmVmKCkpKTsK
KyAgICBhc3NpZ24oc3RhdGljX2Nhc3Q8V2ViUmFuZ2VQcml2YXRlKj4ocmFuZ2UubGVha1JlZigp
KSk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTZWN1cml0eU9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViU2VjdXJpdHlPcmlnaW4uY3BwCShyZXZpc2lvbiA5OTExNikKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTI4LDEzICsxMjgsMTMgQEAgYm9vbCBXZWJTZWN1cml0eU9yaWdpbjo6Y2FuQWNj
ZXNzUGFzc3dvcgogfQogCiBXZWJTZWN1cml0eU9yaWdpbjo6V2ViU2VjdXJpdHlPcmlnaW4oY29u
c3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYgb3JpZ2luKQotICAg
IDogbV9wcml2YXRlKHN0YXRpY19jYXN0PFdlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZSo+KG9yaWdp
bi5yZWxlYXNlUmVmKCkpKQorICAgIDogbV9wcml2YXRlKHN0YXRpY19jYXN0PFdlYlNlY3VyaXR5
T3JpZ2luUHJpdmF0ZSo+KG9yaWdpbi5sZWFrUmVmKCkpKQogewogfQogCiBXZWJTZWN1cml0eU9y
aWdpbiYgV2ViU2VjdXJpdHlPcmlnaW46Om9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiBvcmlnaW4pCiB7Ci0gICAgYXNzaWduKHN0YXRpY19j
YXN0PFdlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZSo+KG9yaWdpbi5yZWxlYXNlUmVmKCkpKTsKKyAg
ICBhc3NpZ24oc3RhdGljX2Nhc3Q8V2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlKj4ob3JpZ2luLmxl
YWtSZWYoKSkpOwogICAgIHJldHVybiAqdGhpczsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVGhyZWFkU2FmZURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRocmVhZFNhZmVEYXRhLmNwcAkocmV2aXNpb24gOTkxMTYp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUaHJlYWRTYWZlRGF0YS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAgY29uc3QgY2hhciogV2ViVGhyZWFkU2FmZURh
dGE6OmRhdGEoKSBjbwogfQogCiBXZWJUaHJlYWRTYWZlRGF0YTo6V2ViVGhyZWFkU2FmZURhdGEo
Y29uc3QgUGFzc1JlZlB0cjxSYXdEYXRhPiYgZGF0YSkKLSAgICA6IG1fcHJpdmF0ZShkYXRhLnJl
bGVhc2VSZWYoKSkKKyAgICA6IG1fcHJpdmF0ZShkYXRhLmxlYWtSZWYoKSkKIHsKIH0KIApJbmRl
eDogU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvZWZsL0NoYW5nZUxvZwkocmV2aXNpb24gOTkxMjMpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0xMS0wMiAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIHJlbWFpbmluZyBj
YWxsZXJzIG9mIHJlbGVhc2VSZWYgdG8gY2FsbCBsZWFrUmVmCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTQyMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZXdrL2V3a19oaXN0b3J5LmNwcDoKKyAgICAg
ICAgKGV3a19oaXN0b3J5X2l0ZW1fbmV3KTogVXNlIGxlYWtSZWYuCisKIDIwMTEtMTEtMDIgIFRv
bSBTZXBleiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgWFNTQXVkaXRvciBpcyBz
aWxlbnQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9yeS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0b3J5LmNwcAkocmV2aXNpb24g
OTkxMTYpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2hpc3RvcnkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNTgsNyArMjU4LDcgQEAgRXdrX0hpc3RvcnlfSXRlbSogZXdrX2hpc3Rvcnlf
aXRlbV9uZXcoYwogICAgIFdURjo6U3RyaW5nIHUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodXJp
KTsKICAgICBXVEY6OlN0cmluZyB0ID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHRpdGxlKTsKICAg
ICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gY29yZSA9IFdlYkNvcmU6Okhpc3Rv
cnlJdGVtOjpjcmVhdGUodSwgdCwgMCk7Ci0gICAgRXdrX0hpc3RvcnlfSXRlbSogaXRlbSA9IGV3
a19oaXN0b3J5X2l0ZW1fbmV3X2Zyb21fY29yZShjb3JlLnJlbGVhc2UoKS5yZWxlYXNlUmVmKCkp
OworICAgIEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0gPSBld2tfaGlzdG9yeV9pdGVtX25ld19mcm9t
X2NvcmUoY29yZS5yZWxlYXNlKCkubGVha1JlZigpKTsKICAgICByZXR1cm4gaXRlbTsKIH0KIApJ
bmRleDogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gOTkxMjMpCisrKyBTb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAxMS0xMS0wMiAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIHJlbWFpbmlu
ZyBjYWxsZXJzIG9mIHJlbGVhc2VSZWYgdG8gY2FsbCBsZWFrUmVmCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTQyMgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYmRhdGFzb3Vy
Y2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpraXROZXcpOgorICAgICAgICAqIHdlYmtpdC93ZWJr
aXR3ZWJoaXN0b3J5aXRlbS5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9u
ZXcpOgorICAgICAgICAod2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fbmV3X3dpdGhfZGF0YSk6Cisg
ICAgICAgICh3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9jb3B5KToKKyAgICAgICAgKFdlYktpdDo6
a2l0KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2VicmVzb3VyY2UuY3BwOgorICAgICAgICAo
d2Via2l0X3dlYl9yZXNvdXJjZV9uZXdfd2l0aF9jb3JlX3Jlc291cmNlKToKKyAgICAgICAgKHdl
YmtpdF93ZWJfcmVzb3VyY2VfaW5pdF93aXRoX2NvcmVfcmVzb3VyY2UpOgorICAgICAgICBVc2Ug
bGVha1JlZi4KKwogMjAxMS0xMS0wMiAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CiAKICAg
ICAgICAgRXhwYW5kIERyYWdDb250cm9sbGVyIHRvIHByb3ZpZGUgbW9yZSBpbmZvcm1hdGlvbiBh
Ym91dCB0aGUgZHJhZ2dpbmcgc2Vzc2lvbgpJbmRleDogU291cmNlL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYmRhdGFzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJkYXRhc291cmNlLmNwcAkocmV2aXNpb24gOTkxMTYpCisrKyBTb3Vy
Y2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZGF0YXNvdXJjZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQzNCw3ICs0MzQsNyBAQCBXZWJLaXRXZWJEYXRhU291cmNlKiBraXROZXcoUGFzc1Jl
ZlB0cjxXCiB7CiAgICAgV2ViS2l0V2ViRGF0YVNvdXJjZSogd2ViRGF0YVNvdXJjZSA9IFdFQktJ
VF9XRUJfREFUQV9TT1VSQ0UoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9EQVRBX1NPVVJD
RSwgTlVMTCkpOwogICAgIFdlYktpdFdlYkRhdGFTb3VyY2VQcml2YXRlKiBwcml2ID0gd2ViRGF0
YVNvdXJjZS0+cHJpdjsKLSAgICBwcml2LT5sb2FkZXIgPSBsb2FkZXIucmVsZWFzZVJlZigpOwor
ICAgIHByaXYtPmxvYWRlciA9IGxvYWRlci5sZWFrUmVmKCk7CiAKICAgICByZXR1cm4gd2ViRGF0
YVNvdXJjZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJoaXN0
b3J5aXRlbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYmhpc3RvcnlpdGVtLmNwcAkocmV2aXNpb24gOTkxMTYpCisrKyBTb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzgs
NyArMjc4LDcgQEAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYmtpdF93ZWJfaGlzdG9yeQogICAg
IFdlYktpdFdlYkhpc3RvcnlJdGVtUHJpdmF0ZSogcHJpdiA9IHdlYkhpc3RvcnlJdGVtLT5wcml2
OwogCiAgICAgUmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiBpdGVtID0gV2ViQ29yZTo6SGlz
dG9yeUl0ZW06OmNyZWF0ZSgpOwotICAgIHByaXYtPmhpc3RvcnlJdGVtID0gaXRlbS5yZWxlYXNl
KCkucmVsZWFzZVJlZigpOworICAgIHByaXYtPmhpc3RvcnlJdGVtID0gaXRlbS5yZWxlYXNlKCku
bGVha1JlZigpOwogICAgIHdlYmtpdF9oaXN0b3J5X2l0ZW1fYWRkKHdlYkhpc3RvcnlJdGVtLCBw
cml2LT5oaXN0b3J5SXRlbSk7CiAKICAgICByZXR1cm4gd2ViSGlzdG9yeUl0ZW07CkBAIC0zMDEs
NyArMzAxLDcgQEAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYmtpdF93ZWJfaGlzdG9yeQogICAg
IFdlYkNvcmU6OktVUkwgaGlzdG9yeVVyaShXZWJDb3JlOjpLVVJMKCksIHVyaSk7CiAgICAgV1RG
OjpTdHJpbmcgaGlzdG9yeVRpdGxlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHRpdGxlKTsKICAg
ICBSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+IGl0ZW0gPSBXZWJDb3JlOjpIaXN0b3J5SXRl
bTo6Y3JlYXRlKGhpc3RvcnlVcmksIGhpc3RvcnlUaXRsZSwgMCk7Ci0gICAgcHJpdi0+aGlzdG9y
eUl0ZW0gPSBpdGVtLnJlbGVhc2UoKS5yZWxlYXNlUmVmKCk7CisgICAgcHJpdi0+aGlzdG9yeUl0
ZW0gPSBpdGVtLnJlbGVhc2UoKS5sZWFrUmVmKCk7CiAgICAgd2Via2l0X2hpc3RvcnlfaXRlbV9h
ZGQod2ViSGlzdG9yeUl0ZW0sIHByaXYtPmhpc3RvcnlJdGVtKTsKIAogICAgIHJldHVybiB3ZWJI
aXN0b3J5SXRlbTsKQEAgLTQ1Miw3ICs0NTIsNyBAQCBXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2Vi
a2l0X3dlYl9oaXN0b3J5CiAgICAgcHJpdi0+dXJpID0gc2VsZlByaXZhdGUtPnVyaTsKICAgICBw
cml2LT5vcmlnaW5hbFVyaSA9IHNlbGZQcml2YXRlLT5vcmlnaW5hbFVyaTsKIAotICAgIHByaXYt
Pmhpc3RvcnlJdGVtID0gc2VsZlByaXZhdGUtPmhpc3RvcnlJdGVtLT5jb3B5KCkucmVsZWFzZVJl
ZigpOworICAgIHByaXYtPmhpc3RvcnlJdGVtID0gc2VsZlByaXZhdGUtPmhpc3RvcnlJdGVtLT5j
b3B5KCkubGVha1JlZigpOwogCiAgICAgcmV0dXJuIGl0ZW07CiB9CkBAIC01MjEsNyArNTIxLDcg
QEAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIFdlYktpdDo6a2l0KFBhc3NSZQogICAgICAgICB3ZWJI
aXN0b3J5SXRlbSA9IFdFQktJVF9XRUJfSElTVE9SWV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRf
VFlQRV9XRUJfSElTVE9SWV9JVEVNLCBOVUxMKSk7CiAgICAgICAgIFdlYktpdFdlYkhpc3RvcnlJ
dGVtUHJpdmF0ZSogcHJpdiA9IHdlYkhpc3RvcnlJdGVtLT5wcml2OwogCi0gICAgICAgIHByaXYt
Pmhpc3RvcnlJdGVtID0gaXRlbS5yZWxlYXNlKCkucmVsZWFzZVJlZigpOworICAgICAgICBwcml2
LT5oaXN0b3J5SXRlbSA9IGl0ZW0ucmVsZWFzZSgpLmxlYWtSZWYoKTsKICAgICAgICAgd2Via2l0
X2hpc3RvcnlfaXRlbV9hZGQod2ViSGlzdG9yeUl0ZW0sIHByaXYtPmhpc3RvcnlJdGVtKTsKICAg
ICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJyZXNvdXJjZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnJlc291
cmNlLmNwcAkocmV2aXNpb24gOTkxMTYpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2VicmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjMsNyArMjIzLDcgQEAgV2Vi
S2l0V2ViUmVzb3VyY2UqIHdlYmtpdF93ZWJfcmVzb3VyY2VfbgogewogICAgIFdlYktpdFdlYlJl
c291cmNlKiB3ZWJSZXNvdXJjZSA9IFdFQktJVF9XRUJfUkVTT1VSQ0UoZ19vYmplY3RfbmV3KFdF
QktJVF9UWVBFX1dFQl9SRVNPVVJDRSwgTlVMTCkpOwogICAgIFdlYktpdFdlYlJlc291cmNlUHJp
dmF0ZSogcHJpdiA9IHdlYlJlc291cmNlLT5wcml2OwotICAgIHByaXYtPnJlc291cmNlID0gcmVz
b3VyY2UucmVsZWFzZVJlZigpOworICAgIHByaXYtPnJlc291cmNlID0gcmVzb3VyY2UubGVha1Jl
ZigpOwogCiAgICAgcmV0dXJuIHdlYlJlc291cmNlOwogfQpAQCAtMjM3LDcgKzIzNyw3IEBAIHZv
aWQgd2Via2l0X3dlYl9yZXNvdXJjZV9pbml0X3dpdGhfY29yZV8KICAgICBpZiAocHJpdi0+cmVz
b3VyY2UpCiAgICAgICAgIHByaXYtPnJlc291cmNlLT5kZXJlZigpOwogCi0gICAgcHJpdi0+cmVz
b3VyY2UgPSByZXNvdXJjZS5yZWxlYXNlUmVmKCk7CisgICAgcHJpdi0+cmVzb3VyY2UgPSByZXNv
dXJjZS5sZWFrUmVmKCk7CiB9CiAKIC8qKgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24g
OTkxMjMpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyNiBAQAorMjAxMS0xMS0wMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgQ2hhbmdlIHJlbWFpbmluZyBjYWxsZXJzIG9mIHJlbGVhc2VSZWYgdG8gY2Fs
bCBsZWFrUmVmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MTQyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW06CisgICAgICAgICgtW1dlYkJhY2tGb3J3
YXJkTGlzdCBpbml0V2l0aEJhY2tGb3J3YXJkTGlzdDpdKToKKyAgICAgICAgKiBIaXN0b3J5L1dl
Ykhpc3RvcnlJdGVtLm1tOgorICAgICAgICAoLVtXZWJIaXN0b3J5SXRlbSBjb3B5V2l0aFpvbmU6
XSk6CisgICAgICAgICgtW1dlYkhpc3RvcnlJdGVtIGluaXRXaXRoV2ViQ29yZUhpc3RvcnlJdGVt
Ol0pOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmll
dy5tbToKKyAgICAgICAgKC1bV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3IGNyZWF0ZVBsdWdp
bl0pOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAg
ICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgY3JlYXRlUGx1Z2luXSk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIubW06CisgICAgICAgICogV2Vi
Vmlldy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIF9pbml0V2l0
aERvY3VtZW50TG9hZGVyOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06Cisg
ICAgICAgICgtW1dlYlJlc291cmNlUHJpdmF0ZSBpbml0V2l0aENvcmVSZXNvdXJjZTpdKToKKyAg
ICAgICAgVXNlIGxlYWtSZWYuCisKIDIwMTEtMTEtMDIgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZCBFTkFCTEVfQ1NTX1NIQURFUlMgZmxhZwpJbmRleDogU291
cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0JKHJldmlz
aW9uIDk5MTE2KQorKysgU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExp
c3QubW0JKHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDcgQEAgLSAoaWQpaW5pdFdpdGhCYWNr
Rm9yd2FyZExpc3Q6KFBhc3NSZWZQdAogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5p
bDsKIAotICAgIF9wcml2YXRlID0gcmVpbnRlcnByZXRfY2FzdDxXZWJCYWNrRm9yd2FyZExpc3RQ
cml2YXRlKj4oYmFja0ZvcndhcmRMaXN0LnJlbGVhc2VSZWYoKSk7CisgICAgX3ByaXZhdGUgPSBy
ZWludGVycHJldF9jYXN0PFdlYkJhY2tGb3J3YXJkTGlzdFByaXZhdGUqPihiYWNrRm9yd2FyZExp
c3QubGVha1JlZigpKTsKICAgICBiYWNrRm9yd2FyZExpc3RzKCkuc2V0KGNvcmUoc2VsZiksIHNl
bGYpOwogICAgIHJldHVybiBzZWxmOwogfQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvSGlzdG9y
eS9XZWJIaXN0b3J5SXRlbS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9IaXN0
b3J5L1dlYkhpc3RvcnlJdGVtLm1tCShyZXZpc2lvbiA5OTExNikKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0NCw3ICsx
NDQsNyBAQCAtIChpZCljb3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKICAgICBXZWJIaXN0b3J5
SXRlbSAqY29weSA9IChXZWJIaXN0b3J5SXRlbSAqKU5TQ29weU9iamVjdChzZWxmLCAwLCB6b25l
KTsKICAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IGl0ZW0gPSBjb3JlKF9wcml2YXRlKS0+Y29weSgp
OwogICAgIGNvcHktPl9wcml2YXRlID0ga2l0UHJpdmF0ZShpdGVtLmdldCgpKTsKLSAgICBoaXN0
b3J5SXRlbVdyYXBwZXJzKCkuc2V0KGl0ZW0ucmVsZWFzZSgpLnJlbGVhc2VSZWYoKSwgY29weSk7
CisgICAgaGlzdG9yeUl0ZW1XcmFwcGVycygpLnNldChpdGVtLnJlbGVhc2UoKS5sZWFrUmVmKCks
IGNvcHkpOwogICAgIAogICAgIHJldHVybiBjb3B5OwogfQpAQCAtMzA3LDcgKzMwNyw3IEBAIC0g
KGlkKWluaXRXaXRoV2ViQ29yZUhpc3RvcnlJdGVtOihQYXNzUmUKICAgICAKICAgICBzZWxmID0g
W3N1cGVyIGluaXRdOwogICAgIAotICAgIF9wcml2YXRlID0ga2l0UHJpdmF0ZShpdGVtLnJlbGVh
c2VSZWYoKSk7CisgICAgX3ByaXZhdGUgPSBraXRQcml2YXRlKGl0ZW0ubGVha1JlZigpKTsKICAg
ICBBU1NFUlQoIWhpc3RvcnlJdGVtV3JhcHBlcnMoKS5nZXQoY29yZShfcHJpdmF0ZSkpKTsKICAg
ICBoaXN0b3J5SXRlbVdyYXBwZXJzKCkuc2V0KGNvcmUoX3ByaXZhdGUpLCBzZWxmKTsKICAgICBy
ZXR1cm4gc2VsZjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2Vi
TmV0c2NhcGVQbHVnaW5WaWV3Lm1tCShyZXZpc2lvbiA5OTExNikKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTAwLDcgKzExMDAsNyBAQCAtIChCT09MKWNyZWF0ZVBsdWdpbgogI2lmbmRlZiBCVUlMRElOR19P
Tl9MRU9QQVJECiAgICAgICAgICAgICAgICAgLy8gU2luY2UgdGhpcyBsYXllciBpc24ndCBnb2lu
ZyB0byBiZSBpbnNlcnRlZCBpbnRvIGEgdmlldywgd2UgbmVlZCB0byBjcmVhdGUgYW5vdGhlciBs
YXllciBhbmQgZmxpcCBpdHMgZ2VvbWV0cnkKICAgICAgICAgICAgICAgICAvLyBpbiBvcmRlciB0
byBnZXQgdGhlIGNvb3JkaW5hdGUgc3lzdGVtIHJpZ2h0LgotICAgICAgICAgICAgICAgIFJldGFp
blB0cjxDQUxheWVyPiByZWFsUGx1Z2luTGF5ZXIoQWRvcHROUywgX3BsdWdpbkxheWVyLnJlbGVh
c2VSZWYoKSk7CisgICAgICAgICAgICAgICAgUmV0YWluUHRyPENBTGF5ZXI+IHJlYWxQbHVnaW5M
YXllcihBZG9wdE5TLCBfcGx1Z2luTGF5ZXIubGVha1JlZigpKTsKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBfcGx1Z2luTGF5ZXIuYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGlu
aXRdKTsKICAgICAgICAgICAgICAgICBfcGx1Z2luTGF5ZXIuZ2V0KCkuYm91bmRzID0gcmVhbFBs
dWdpbkxheWVyLmdldCgpLmJvdW5kczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
SG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcu
bW0JKHJldmlzaW9uIDk5MTE2KQorKysgU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQv
V2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNyAr
MTI2LDcgQEAgLSAoQk9PTCljcmVhdGVQbHVnaW4KICNpZm5kZWYgQlVJTERJTkdfT05fTEVPUEFS
RAogICAgICAgICAgICAgLy8gU2luY2UgdGhpcyBsYXllciBpc24ndCBnb2luZyB0byBiZSBpbnNl
cnRlZCBpbnRvIGEgdmlldywgd2UgbmVlZCB0byBjcmVhdGUgYW5vdGhlciBsYXllciBhbmQgZmxp
cCBpdHMgZ2VvbWV0cnkKICAgICAgICAgICAgIC8vIGluIG9yZGVyIHRvIGdldCB0aGUgY29vcmRp
bmF0ZSBzeXN0ZW0gcmlnaHQuCi0gICAgICAgICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gcmVhbFBs
dWdpbkxheWVyKEFkb3B0TlMsIF9wbHVnaW5MYXllci5yZWxlYXNlUmVmKCkpOworICAgICAgICAg
ICAgUmV0YWluUHRyPENBTGF5ZXI+IHJlYWxQbHVnaW5MYXllcihBZG9wdE5TLCBfcGx1Z2luTGF5
ZXIubGVha1JlZigpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgX3BsdWdpbkxheWVyLmFk
b3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7CiAgICAgICAgICAgICBfcGx1Z2luTGF5ZXIu
Z2V0KCkuYm91bmRzID0gcmVhbFBsdWdpbkxheWVyLmdldCgpLmJvdW5kczsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyLm1tCShyZXZpc2lvbiA5OTExNikKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIC0gKGlkKWluaXRXaXRoQ2hvb3NlcjooUGFzc1JlZlB0
cjxGaWxlQ2gKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKICAgICAg
ICAgcmV0dXJuIG5pbDsKLSAgICBfY2hvb3NlciA9IGNob29zZXIucmVsZWFzZVJlZigpOworICAg
IF9jaG9vc2VyID0gY2hvb3Nlci5sZWFrUmVmKCk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0JKHJldmlzaW9u
IDk5MTE2KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zNzQsNyArMzc0LDcgQEAgLSAoaWQpX2luaXRXaXRoRG9jdW1lbnRM
b2FkZXI6KFBhc3NSZWZQdAogICAgIAogICAgIF9wcml2YXRlID0gW1tXZWJEYXRhU291cmNlUHJp
dmF0ZSBhbGxvY10gaW5pdF07CiAgICAgCi0gICAgX3ByaXZhdGUtPmxvYWRlciA9IGxvYWRlci5y
ZWxlYXNlUmVmKCk7CisgICAgX3ByaXZhdGUtPmxvYWRlciA9IGxvYWRlci5sZWFrUmVmKCk7CiAg
ICAgICAgIAogICAgIExPRyhMb2FkaW5nLCAiY3JlYXRpbmcgZGF0YXNvdXJjZSBmb3IgJUAiLCBz
dGF0aWNfY2FzdDxOU1VSTCAqPihfcHJpdmF0ZS0+bG9hZGVyLT5yZXF1ZXN0KCkudXJsKCkpKTsK
IApJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCShyZXZpc2lv
biA5OTExNikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0JKHdv
cmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgLSAoaWQpaW5pdFdpdGhDb3JlUmVzb3VyY2U6
KFBhc3NSZWZQdHI8QQogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAv
LyBBY3F1aXJlIHRoZSBQYXNzUmVmUHRyPD4ncyByZWYgYXMgb3VyIG93biBtYW51YWwgcmVmCi0g
ICAgY29yZVJlc291cmNlID0gcGFzc2VkUmVzb3VyY2UucmVsZWFzZVJlZigpOworICAgIGNvcmVS
ZXNvdXJjZSA9IHBhc3NlZFJlc291cmNlLmxlYWtSZWYoKTsKICAgICByZXR1cm4gc2VsZjsKIH0K
IApJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gOTkxMjMpCisrKyBTb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAxMS0xMS0w
MiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIHJlbWFp
bmluZyBjYWxsZXJzIG9mIHJlbGVhc2VSZWYgdG8gY2FsbCBsZWFrUmVmCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTQyMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ2FjaGUuY3BwOgorICAgICAg
ICAoV2ViQ2FjaGU6OnN0YXRpc3RpY3MpOgorICAgICAgICAqIFdlYkRhdGFiYXNlTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJEYXRhYmFzZU1hbmFnZXI6Om9yaWdpbnMpOgorICAgICAgICAoV2Vi
RGF0YWJhc2VNYW5hZ2VyOjpkYXRhYmFzZXNXaXRoT3JpZ2luKToKKyAgICAgICAgKiBXZWJIaXN0
b3J5SXRlbS5jcHA6CisgICAgICAgIChXZWJIaXN0b3J5SXRlbTo6cmVkaXJlY3RVUkxzKToKKyAg
ICAgICAgKiBXZWJLaXRDbGFzc0ZhY3RvcnkuY3BwOgorICAgICAgICAobGVha1JlZkZyb21DcmVh
dGVJbnN0YW5jZSk6CisgICAgICAgIChXZWJLaXRDbGFzc0ZhY3Rvcnk6OkNyZWF0ZUluc3RhbmNl
KToKKyAgICAgICAgKiBXZWJTY3JpcHRXb3JsZC5jcHA6CisgICAgICAgIChXZWJTY3JpcHRXb3Js
ZDo6c3RhbmRhcmRXb3JsZCk6CisgICAgICAgIFVzZSBsZWFrUmVmLgorCiAyMDExLTExLTAyICBK
b24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBFeHBhbmQgRHJhZ0NvbnRyb2xs
ZXIgdG8gcHJvdmlkZSBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkcmFnZ2luZyBzZXNzaW9u
CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC93aW4vV2ViQ2FjaGUuY3BwCShyZXZpc2lvbiA5OTExNikKKysrIFNvdXJjZS9X
ZWJLaXQvd2luL1dlYkNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcgKzEyOCw3IEBA
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQ2FjaGU6OnN0YXQKIAogICAgIENPTVB0cjxD
RkRpY3Rpb25hcnlQcm9wZXJ0eUJhZz4gcHJvcEJhZyA9IENGRGljdGlvbmFyeVByb3BlcnR5QmFn
OjpjcmVhdGVJbnN0YW5jZSgpOwogICAgIHByb3BCYWctPnNldERpY3Rpb25hcnkoZGljdGlvbmFy
eS5nZXQoKSk7Ci0gICAgc1swXSA9IHByb3BCYWcucmVsZWFzZVJlZigpOworICAgIHNbMF0gPSBw
cm9wQmFnLmxlYWtSZWYoKTsKIAogICAgIGRpY3Rpb25hcnkuYWRvcHRDRihDRkRpY3Rpb25hcnlD
cmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5
cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIApAQCAtMTUwLDcgKzE1MCw3IEBAIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQ2FjaGU6OnN0YXQKIAogICAgIHByb3BCYWcgPSBDRkRp
Y3Rpb25hcnlQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoKTsKICAgICBwcm9wQmFnLT5zZXRE
aWN0aW9uYXJ5KGRpY3Rpb25hcnkuZ2V0KCkpOwotICAgIHNbMV0gPSBwcm9wQmFnLnJlbGVhc2VS
ZWYoKTsKKyAgICBzWzFdID0gcHJvcEJhZy5sZWFrUmVmKCk7CiAKICAgICBkaWN0aW9uYXJ5LmFk
b3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlL
ZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKQEAgLTE3
Miw3ICsxNzIsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkNhY2hlOjpzdGF0CiAK
ICAgICBwcm9wQmFnID0gQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKCk7
CiAgICAgcHJvcEJhZy0+c2V0RGljdGlvbmFyeShkaWN0aW9uYXJ5LmdldCgpKTsKLSAgICBzWzJd
ID0gcHJvcEJhZy5yZWxlYXNlUmVmKCk7CisgICAgc1syXSA9IHByb3BCYWcubGVha1JlZigpOwog
CiAgICAgZGljdGlvbmFyeS5hZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwg
JmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNh
bGxCYWNrcykpOwogCkBAIC0xOTQsNyArMTk0LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJDYWNoZTo6c3RhdAogCiAgICAgcHJvcEJhZyA9IENGRGljdGlvbmFyeVByb3BlcnR5QmFn
OjpjcmVhdGVJbnN0YW5jZSgpOwogICAgIHByb3BCYWctPnNldERpY3Rpb25hcnkoZGljdGlvbmFy
eS5nZXQoKSk7Ci0gICAgc1szXSA9IHByb3BCYWcucmVsZWFzZVJlZigpOworICAgIHNbM10gPSBw
cm9wQmFnLmxlYWtSZWYoKTsKIAogICAgIHJldHVybiBTX09LOwogfQpJbmRleDogU291cmNlL1dl
YktpdC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCShyZXZpc2lvbiA5OTExNikKKysrIFNvdXJj
ZS9XZWJLaXQvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIy
Myw3ICsyMjMsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRhdGFiYXNlTWFuCiAg
ICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkub3JpZ2lucyhvcmlnaW5zKTsKICAgICAgICAg
Q09NUHRyPENPTUVudW1WYXJpYW50PFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+ID4gPiA+
IGVudW1WYXJpYW50KEFkb3B0Q09NLCBDT01FbnVtVmFyaWFudDxWZWN0b3I8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiA+ID46OmFkb3B0KG9yaWdpbnMpKTsKIAotICAgICpyZXN1bHQgPSBlbnVtVmFy
aWFudC5yZWxlYXNlUmVmKCk7CisgICAgKnJlc3VsdCA9IGVudW1WYXJpYW50LmxlYWtSZWYoKTsK
ICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKQEAgLTI0OCw3ICsyNDgsNyBAQCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYkRhdGFiYXNlTWFuCiAKICAgICBDT01QdHI8Q09NRW51bVZhcmlh
bnQ8VmVjdG9yPFN0cmluZz4gPiA+IGVudW1WYXJpYW50KEFkb3B0Q09NLCBDT01FbnVtVmFyaWFu
dDxWZWN0b3I8U3RyaW5nPiA+OjphZG9wdChkYXRhYmFzZU5hbWVzKSk7CiAKLSAgICAqcmVzdWx0
ID0gZW51bVZhcmlhbnQucmVsZWFzZVJlZigpOworICAgICpyZXN1bHQgPSBlbnVtVmFyaWFudC5s
ZWFrUmVmKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2lu
L1dlYkhpc3RvcnlJdGVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJI
aXN0b3J5SXRlbS5jcHAJKHJldmlzaW9uIDk5MTE2KQorKysgU291cmNlL1dlYktpdC93aW4vV2Vi
SGlzdG9yeUl0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzcsNyArNDc3LDcgQEAgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5SXRlbQogICAgIH0KIAogICAgIENPTVB0cjxD
T01FbnVtVmFyaWFudDxWZWN0b3I8U3RyaW5nPiA+ID4gZW51bVZhcmlhbnQoQWRvcHRDT00sIENP
TUVudW1WYXJpYW50PFZlY3RvcjxTdHJpbmc+ID46OmNyZWF0ZUluc3RhbmNlKCp1cmxWZWN0b3Ip
KTsKLSAgICAqdXJscyA9IGVudW1WYXJpYW50LnJlbGVhc2VSZWYoKTsKKyAgICAqdXJscyA9IGVu
dW1WYXJpYW50LmxlYWtSZWYoKTsKIAogICAgIHJldHVybiBTX09LOwogfQpJbmRleDogU291cmNl
L1dlYktpdC93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJLaXRDbGFzc0ZhY3RvcnkuY3BwCShyZXZpc2lvbiA5OTExNikKKysrIFNv
dXJjZS9XZWJLaXQvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEzMCwxNSArMTMwLDE1IEBAIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFdlYktpdENsYXNzRmFj
dG8KIAogLy8gRklYTUU6IFJlbW92ZSB0aGVzZSBmdW5jdGlvbnMgb25jZSBhbGwgY3JlYXRlSW5z
dGFuY2UoKSBmdW5jdGlvbnMgcmV0dXJuIENPTVB0ci4KIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
c3RhdGljIFQqIHJlbGVhc2VSZWZGcm9tQ3JlYXRlSW5zdGFuY2UoVCogb2JqZWN0KQorc3RhdGlj
IFQqIGxlYWtSZWZGcm9tQ3JlYXRlSW5zdGFuY2UoVCogb2JqZWN0KQogewogICAgIHJldHVybiBv
YmplY3Q7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RhdGljIFQqIHJlbGVhc2VSZWZG
cm9tQ3JlYXRlSW5zdGFuY2UoQ09NUHRyPFQ+IG9iamVjdCkKK3N0YXRpYyBUKiBsZWFrUmVmRnJv
bUNyZWF0ZUluc3RhbmNlKENPTVB0cjxUPiBvYmplY3QpCiB7Ci0gICAgcmV0dXJuIG9iamVjdC5y
ZWxlYXNlUmVmKCk7CisgICAgcmV0dXJuIG9iamVjdC5sZWFrUmVmKCk7CiB9CiAKIC8vIElDbGFz
c0ZhY3RvcnkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KQEAgLTE1Myw3ICsxNTMsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYktpdENsYXNzRmFjCiAKICNkZWZpbmUgSU5JVElBTElaRV9JRl9DTEFTUyhjbHMpIFwK
ICAgICBpZiAoSXNFcXVhbEdVSUQobV90YXJnZXRDbGFzcywgQ0xTSURfIyNjbHMpKSBcCi0gICAg
ICAgIHVua25vd24gPSBzdGF0aWNfY2FzdDxJIyNjbHMqPihyZWxlYXNlUmVmRnJvbUNyZWF0ZUlu
c3RhbmNlKGNsczo6Y3JlYXRlSW5zdGFuY2UoKSkpOyBcCisgICAgICAgIHVua25vd24gPSBzdGF0
aWNfY2FzdDxJIyNjbHMqPihsZWFrUmVmRnJvbUNyZWF0ZUluc3RhbmNlKGNsczo6Y3JlYXRlSW5z
dGFuY2UoKSkpOyBcCiAgICAgZWxzZSBcCiAgICAgLy8gZW5kIG9mIG1hY3JvCiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd2luL1dlYlNjcmlwdFdvcmxkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJTY3JpcHRXb3JsZC5jcHAJKHJldmlzaW9uIDk5MTE2KQorKysgU291cmNl
L1dlYktpdC93aW4vV2ViU2NyaXB0V29ybGQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2
Myw3IEBAIFdlYlNjcmlwdFdvcmxkOjp+V2ViU2NyaXB0V29ybGQoKQogCiBXZWJTY3JpcHRXb3Js
ZCogV2ViU2NyaXB0V29ybGQ6OnN0YW5kYXJkV29ybGQoKQogewotICAgIHN0YXRpYyBXZWJTY3Jp
cHRXb3JsZCogc3RhbmRhcmRXb3JsZCA9IGNyZWF0ZUluc3RhbmNlKG1haW5UaHJlYWROb3JtYWxX
b3JsZCgpKS5yZWxlYXNlUmVmKCk7CisgICAgc3RhdGljIFdlYlNjcmlwdFdvcmxkKiBzdGFuZGFy
ZFdvcmxkID0gY3JlYXRlSW5zdGFuY2UobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLmxlYWtSZWYo
KTsKICAgICByZXR1cm4gc3RhbmRhcmRXb3JsZDsKIH0KIAo=
</data>
<flag name="review"
          id="111760"
          type_id="1"
          status="+"
          setter="fishd"
    />
    <flag name="commit-queue"
          id="111761"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>