<?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>160482</bug_id>
          
          <creation_ts>2016-08-02 18:02:10 -0700</creation_ts>
          <short_desc>Freeze the last of the Objective-C bindings</short_desc>
          <delta_ts>2016-08-03 09:54:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1216715</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-08-02 18:02:10 -0700</bug_when>
    <thetext>Freeze the last of the Objective-C bindings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216717</commentid>
    <comment_count>1</comment_count>
      <attachid>285173</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-08-02 18:07:01 -0700</bug_when>
    <thetext>Created attachment 285173
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216721</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-02 18:09:40 -0700</bug_when>
    <thetext>Attachment 285173 did not pass style-queue:


ERROR: Source/WebCore/bindings/objc/DOMElement.mm:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMElement.mm:38:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMElement.h:35:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMTextEvent.mm:29:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMText.mm:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMText.mm:32:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMNode.h:26:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMNode.h:37:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMNode.h:38:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMNode.h:39:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMNode.h:40:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMNode.h:41:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMNode.h:42:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMNode.h:43:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMNode.h:44:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMNode.h:45:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMNode.h:46:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMNode.h:47:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMNode.h:48:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMNode.h:49:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMNode.h:50:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMNode.h:51:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMNode.h:52:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMNode.h:53:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMNode.h:54:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/bindings/objc/DOMNamedNodeMap.mm:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMNamedNodeMap.mm:33:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMCharacterData.mm:29:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMAttr.mm:29:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMEntity.mm:30:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMProcessingInstruction.mm:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMProcessingInstruction.mm:33:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMNode.mm:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMNode.mm:43:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMCDATASection.mm:29:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMDOMImplementation.mm:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMDOMImplementation.mm:34:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMDocumentFragment.mm:33:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMEntityReference.mm:30:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebCore/ChangeLog:15:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/WebCore/bindings/objc/DOMNodeInternal.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/bindings/objc/DOMDocument.mm:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMDocument.mm:64:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMNodeList.mm:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMNodeList.mm:33:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMDocumentType.mm:31:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/objc/DOMComment.mm:29:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 47 in 54 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216964</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-08-03 09:54:37 -0700</bug_when>
    <thetext>Committed r204083: &lt;http://trac.webkit.org/changeset/204083&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285173</attachid>
            <date>2016-08-02 18:07:01 -0700</date>
            <delta_ts>2016-08-02 19:37:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160482-20160802180539.patch</filename>
            <type>text/plain</type>
            <size>229619</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTJmMzE4MGE5N2VjMjRi
ZGM5YzM5MmI4ZjAyODIyOGUyMjExMzJlMy4uZmExMDE0NDBiZWE5YjJmNTc4N2RlYzI0MGY4YWY1
MTUxZjAxYjAxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY3IEBACiAyMDE2LTA4LTAyICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgRnJlZXplIHRoZSBs
YXN0IG9mIHRoZSBPYmplY3RpdmUtQyBiaW5kaW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNDgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01BdHRyLmg6IEFkZGVkLgorICAgICAgICAq
IGJpbmRpbmdzL29iamMvRE9NQXR0ci5tbTogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvb2Jq
Yy9ET01BdHRySW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01D
REFUQVNlY3Rpb24uaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01DREFUQVNl
Y3Rpb24ubW06IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NQ0RBVEFTZWN0aW9u
SW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01DaGFyYWN0ZXJE
YXRhLmgKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUNoYXJhY3RlckRhdGEubW06IEFkZGVk
LgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NQ2hhcmFjdGVyRGF0YUludGVybmFsLmg6IEFk
ZGVkLgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NQ29tbWVudC5oOiBBZGRlZC4KKyAgICAg
ICAgKiBiaW5kaW5ncy9vYmpjL0RPTUNvbW1lbnQubW06IEFkZGVkLgorICAgICAgICAqIGJpbmRp
bmdzL29iamMvRE9NQ29tbWVudEludGVybmFsLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdz
L29iamMvRE9NRE9NSW1wbGVtZW50YXRpb24uaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mv
b2JqYy9ET01ET01JbXBsZW1lbnRhdGlvbi5tbTogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mv
b2JqYy9ET01ET01JbXBsZW1lbnRhdGlvbkludGVybmFsLmg6IEFkZGVkLgorICAgICAgICAqIGJp
bmRpbmdzL29iamMvRE9NRG9jdW1lbnQuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvb2Jq
Yy9ET01Eb2N1bWVudC5tbTogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01Eb2N1
bWVudEZyYWdtZW50Lmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NRG9jdW1l
bnRGcmFnbWVudC5tbTogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01Eb2N1bWVu
dEZyYWdtZW50SW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01E
b2N1bWVudEZyYWdtZW50UHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9vYmpj
L0RPTURvY3VtZW50SW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9E
T01Eb2N1bWVudFByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01E
b2N1bWVudFR5cGUuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01Eb2N1bWVu
dFR5cGUubW06IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NRG9jdW1lbnRUeXBl
SW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01FbGVtZW50Lmg6
IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NRWxlbWVudC5tbTogQWRkZWQuCisg
ICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01FbGVtZW50SW50ZXJuYWwuaDogQWRkZWQuCisgICAg
ICAgICogYmluZGluZ3Mvb2JqYy9ET01FbnRpdHkuaDogQWRkZWQuCisgICAgICAgICogYmluZGlu
Z3Mvb2JqYy9ET01FbnRpdHkubW06IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9N
RW50aXR5SW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01FbnRp
dHlSZWZlcmVuY2UuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01FbnRpdHlS
ZWZlcmVuY2UubW06IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NRW50aXR5UmVm
ZXJlbmNlSW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01OYW1l
ZE5vZGVNYXAuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01OYW1lZE5vZGVN
YXAubW06IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NTmFtZWROb2RlTWFwSW50
ZXJuYWwuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01Ob2RlLmg6IEFkZGVk
LgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NTm9kZS5tbTogQWRkZWQuCisgICAgICAgICog
YmluZGluZ3Mvb2JqYy9ET01Ob2RlSW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgICogYmluZGlu
Z3Mvb2JqYy9ET01Ob2RlTGlzdC5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RP
TU5vZGVMaXN0Lm1tOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTU5vZGVMaXN0
SW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01Ob2RlUHJpdmF0
ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTVByb2Nlc3NpbmdJbnN0cnVj
dGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTVByb2Nlc3NpbmdJbnN0
cnVjdGlvbi5tbTogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01Qcm9jZXNzaW5n
SW5zdHJ1Y3Rpb25JbnRlcm5hbC5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RP
TVRleHQuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01UZXh0Lm1tOiBBZGRl
ZC4KKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTVRleHRFdmVudC5tbToKKyAgICAgICAgKiBi
aW5kaW5ncy9vYmpjL0RPTVRleHRFdmVudEludGVybmFsLmg6CisgICAgICAgICogYmluZGluZ3Mv
b2JqYy9ET01UZXh0SW50ZXJuYWwuaDogQWRkZWQuCisKKzIwMTYtMDgtMDIgIEFuZGVycyBDYXJs
c3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKwogICAgICAgICBGcmVlemUgdGhlIE9iamVjdGl2
ZS1DIERPTSBFdmVudCBhbmQgQ1NTIGJpbmRpbmdzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA0NzYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZlZDVhM2M5MDI4ZDdhNjkwZjgx
YWRiOGUyOWM3MGI3NDkwN2JlNDkuLjEwNTg2YWM3YTdmNDA5ZDdjMDgxNDhiNGZmNGE2YWM0NTVm
MTVmOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTU2MCw3ICs1NjAsNiBAQAogCQkwRkVBM0U4ODE5MUIzQkQ3MDAwRjFCNTUg
LyogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQTNFODYxOTFCM0JENzAwMEYxQjU1IC8qIFNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkVGMjBDRTFCRDRBMjQxMDAxMjhFNUQgLyogTGVu
Z3RoU2l6ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkVGMjBDRDFCRDRBMjQxMDAxMjhFNUQgLyogTGVuZ3RoU2l6ZS5jcHAgKi87IH07CiAJCTBG
RUYyMEQwMUJENEE2NEYwMDEyOEU1RCAvKiBSZW5kZXJTdHlsZUNvbnN0YW50cy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVGMjBDRjFCRDRBNjRG
MDAxMjhFNUQgLyogUmVuZGVyU3R5bGVDb25zdGFudHMuY3BwICovOyB9OwotCQkwRkY1MDI2MzEw
MkJBOTJDMDA2NkYzOUEgLyogRE9NU3R5bGVNZWRpYUludGVybmFsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY1MDI2MjEwMkJBOTJCMDA2NkYzOUEg
LyogRE9NU3R5bGVNZWRpYUludGVybmFsLmggKi87IH07CiAJCTBGRjUwMjY5MTAyQkE5NDMwMDY2
RjM5QSAvKiBKU1N0eWxlTWVkaWEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZGNTAyNjcxMDJCQTk0MzAwNjZGMzlBIC8qIEpTU3R5bGVNZWRpYS5j
cHAgKi87IH07CiAJCTBGRjUwMjZBMTAyQkE5NDMwMDY2RjM5QSAvKiBKU1N0eWxlTWVkaWEuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjUwMjY4MTAy
QkE5NDMwMDY2RjM5QSAvKiBKU1N0eWxlTWVkaWEuaCAqLzsgfTsKIAkJMEZGNTAyNzExMDJCQTk2
QTAwNjZGMzlBIC8qIFN0eWxlTWVkaWEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZGNTAyNkUxMDJCQTk2NjAwNjZGMzlBIC8qIFN0eWxlTWVkaWEu
Y3BwICovOyB9OwpAQCAtNzgyNiw3ICs3ODI1LDYgQEAKIAkJMEZFQTNFODYxOTFCM0JENzAwMEYx
QjU1IC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkVGMjBDRDFCRDRBMjQxMDAxMjhFNUQgLyogTGVu
Z3RoU2l6ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMZW5ndGhT
aXplLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFRjIwQ0YxQkQ0QTY0RjAw
MTI4RTVEIC8qIFJlbmRlclN0eWxlQ29uc3RhbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlbmRlclN0eWxlQ29uc3RhbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMEZGNTAyNjIxMDJCQTkyQjAwNjZGMzlBIC8qIERPTVN0eWxlTWVkaWFJ
bnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01TdHlsZU1lZGlh
SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGNTAyNjcxMDJCQTk0
MzAwNjZGMzlBIC8qIEpTU3R5bGVNZWRpYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1N0eWxlTWVkaWEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRkY1MDI2ODEwMkJBOTQzMDA2NkYzOUEgLyogSlNTdHlsZU1lZGlhLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3R5bGVNZWRpYS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRkY1MDI2RTEwMkJBOTY2MDA2NkYzOUEgLyogU3R5bGVNZWRpYS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZU1lZGlhLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkxMTAsOCArOTEwOCw4IEBACiAJCTQ0MkFCQ0Q1MTdE
OTI2MkYwMEQzMDcxNSAvKiBTeW5jaHJvbm91c0xvYWRlckNsaWVudENGTmV0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50Q0ZO
ZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDJBRjdBNzEwMkNEREVBMDA4
RkQ0RDMgLyogUXVpY2tMb29rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1
aWNrTG9vay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDJBRjdBODEwMkNEREVB
MDA4RkQ0RDMgLyogUXVpY2tMb29rLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gUXVpY2tMb29rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NDMx
MUNENDEyRTRFMjJEMDAwQThEMTkgLyogRE9NRG9jdW1lbnRGcmFnbWVudFByaXZhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NRG9jdW1lbnRGcmFnbWVudFByaXZhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDQzMTFDRDUxMkU0RTIyRDAwMEE4RDE5
IC8qIERPTURvY3VtZW50UHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBET01Eb2N1bWVudFByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDQz
MTFDRDQxMkU0RTIyRDAwMEE4RDE5IC8qIERPTURvY3VtZW50RnJhZ21lbnRQcml2YXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBET01Eb2N1bWVu
dEZyYWdtZW50UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3Bl
Y2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLm9iamNwcDsgfTsKKwkJNDQzMTFDRDUx
MkU0RTIyRDAwMEE4RDE5IC8qIERPTURvY3VtZW50UHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gRE9NRG9jdW1lbnRQcml2YXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9
IHhjb2RlLmxhbmcub2JqY3BwOyB9OwogCQk0NDM4MTdGRDFBOTFCMkY4MDA2RTA0RjIgLyogQ29y
ZU1lZGlhU29mdExpbmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q29yZU1lZGlhU29mdExpbmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDM4
MTdGRTFBOTFCMkY4MDA2RTA0RjIgLyogQ29yZU1lZGlhU29mdExpbmsuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ29yZU1lZGlhU29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDQzOTE3RkQxQTkxQjJGODAwNkUwNEYyIC8qIFF1aWNrTG9va1NvZnRM
aW5rLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUXVpY2tMb29r
U29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDYxMCwxNCArMTA2
MDgsMTQgQEAKIAkJODUwODlDQzcwQTk4QzIyNjAwQTI3NUFBIC8qIENvbW1lbnQuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBDb21tZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODUwODlDQzkwQTk4QzJBQjAwQTI3NUFBIC8qIENEQVRBU2VjdGlvbi5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IENEQVRBU2VjdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg1MDg5Q0NCMEE5OEMzM0EwMEEyNzVBQSAvKiBFbnRpdHlSZWZlcmVuY2UuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFbnRpdHlSZWZlcmVuY2UuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk4NTA4OUNDRjBBOThDNDI3MDBBMjc1QUEgLyogRE9NQ0RBVEFT
ZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01DREFUQVNlY3Rp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODUwODlDRDAwQTk4QzQyNzAwQTI3
NUFBIC8qIERPTUNEQVRBU2VjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBET01DREFUQVNlY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTg1MDg5Q0QxMEE5OEM0MjcwMEEyNzVBQSAvKiBET01Db21tZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01Db21tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTg1MDg5Q0QyMEE5OEM0MjcwMEEyNzVBQSAvKiBET01Db21tZW50Lm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUNvbW1lbnQubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg1MDg5Q0QzMEE5OEM0MjgwMEEyNzVBQSAvKiBET01E
b2N1bWVudEZyYWdtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01E
b2N1bWVudEZyYWdtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg1MDg5Q0Q0
MEE5OEM0MjgwMEEyNzVBQSAvKiBET01Eb2N1bWVudEZyYWdtZW50Lm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTURvY3VtZW50RnJhZ21lbnQubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg1MDg5Q0Q1MEE5OEM0MjgwMEEyNzVBQSAvKiBET01F
bnRpdHlSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUVu
dGl0eVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4NTA4OUNENjBB
OThDNDI4MDBBMjc1QUEgLyogRE9NRW50aXR5UmVmZXJlbmNlLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUVudGl0eVJlZmVyZW5jZS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODUwODlDQ0YwQTk4QzQyNzAwQTI3NUFBIC8qIERPTUNEQVRB
U2VjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBsaW5lRW5kaW5nID0gMDsgcGF0
aCA9IERPTUNEQVRBU2VjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdl
U3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLm9iamNwcDsgfTsKKwkJODUwODlD
RDAwQTk4QzQyNzAwQTI3NUFBIC8qIERPTUNEQVRBU2VjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gRE9NQ0RBVEFTZWN0aW9u
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50
aWZpZXIgPSB4Y29kZS5sYW5nLm9iamNwcDsgfTsKKwkJODUwODlDRDEwQTk4QzQyNzAwQTI3NUFB
IC8qIERPTUNvbW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbGluZUVuZGluZyA9
IDA7IHBhdGggPSBET01Db21tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3Vh
Z2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9OworCQk4NTA4
OUNEMjBBOThDNDI3MDBBMjc1QUEgLyogRE9NQ29tbWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gRE9NQ29tbWVudC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0g
eGNvZGUubGFuZy5vYmpjcHA7IH07CisJCTg1MDg5Q0QzMEE5OEM0MjgwMEEyNzVBQSAvKiBET01E
b2N1bWVudEZyYWdtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcg
PSAwOyBwYXRoID0gRE9NRG9jdW1lbnRGcmFnbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLm9iamNwcDsg
fTsKKwkJODUwODlDRDQwQTk4QzQyODAwQTI3NUFBIC8qIERPTURvY3VtZW50RnJhZ21lbnQubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9
IERPTURvY3VtZW50RnJhZ21lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3Vh
Z2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9OworCQk4NTA4
OUNENTBBOThDNDI4MDBBMjc1QUEgLyogRE9NRW50aXR5UmVmZXJlbmNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gRE9NRW50aXR5UmVmZXJlbmNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRp
ZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9OworCQk4NTA4OUNENjBBOThDNDI4MDBBMjc1QUEg
LyogRE9NRW50aXR5UmVmZXJlbmNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBET01FbnRpdHlSZWZlcmVuY2UubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2Rl
Lmxhbmcub2JqY3BwOyB9OwogCQk4NTBCNDFDMDBBRDlFN0U3MDBBNkVENEYgLyogRE9NTm9kZUl0
ZXJhdG9ySW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTU5v
ZGVJdGVyYXRvckludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1MEI0
MUMxMEFEOUU3RTcwMEE2RUQ0RiAvKiBET01UcmVlV2Fsa2VySW50ZXJuYWwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVRyZWVXYWxrZXJJbnRlcm5hbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4NTE4M0IzODBBQTY5MjYxMDBGMTlGQTMgLyogRE9NSFRN
TEJSRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBsaW5lRW5kaW5nID0gMDsg
cGF0aCA9IERPTUhUTUxCUkVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5n
dWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5vYmpjcHA7IH07CkBAIC0x
MDYzMCwxMCArMTA2MjgsMTAgQEAKIAkJODUxODNCM0YwQUE2OTI2MTAwRjE5RkEzIC8qIERPTUhU
TUxQcmVFbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IERPTUhUTUxQcmVFbGVtZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NTE4
M0I0MDBBQTY5MjYxMDBGMTlGQTMgLyogRE9NSFRNTFF1b3RlRWxlbWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSFRNTFF1b3RlRWxlbWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4NTE4M0I0MTBBQTY5MjYxMDBGMTlGQTMgLyogRE9NSFRNTFF1
b3RlRWxlbWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBE
T01IVE1MUXVvdGVFbGVtZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4NTE4
RENFNzBBOUNDODBDMDA5MUI3QTYgLyogRE9NRE9NSW1wbGVtZW50YXRpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTURPTUltcGxlbWVudGF0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg1MThEQ0U4MEE5Q0M4MEQwMDkxQjdBNiAvKiBET01ET01J
bXBsZW1lbnRhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBET01ET01JbXBsZW1lbnRhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
ODUxOERENzYwQTlDRjMxQjAwOTFCN0E2IC8qIERPTU5hbWVkTm9kZU1hcC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NTmFtZWROb2RlTWFwLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTg1MThERDc3MEE5Q0YzMUIwMDkxQjdBNiAvKiBET01OYW1lZE5vZGVN
YXAubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NTmFtZWRO
b2RlTWFwLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NTE4RENFNzBBOUNDODBD
MDA5MUI3QTYgLyogRE9NRE9NSW1wbGVtZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBET01ET01JbXBsZW1lbnRhdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4
Y29kZS5sYW5nLm9iamNwcDsgfTsKKwkJODUxOERDRTgwQTlDQzgwRDAwOTFCN0E2IC8qIERPTURP
TUltcGxlbWVudGF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbGlu
ZUVuZGluZyA9IDA7IHBhdGggPSBET01ET01JbXBsZW1lbnRhdGlvbi5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFu
Zy5vYmpjcHA7IH07CisJCTg1MThERDc2MEE5Q0YzMUIwMDkxQjdBNiAvKiBET01OYW1lZE5vZGVN
YXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBE
T01OYW1lZE5vZGVNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNp
ZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5vYmpjcHA7IH07CisJCTg1MThERDc3MEE5
Q0YzMUIwMDkxQjdBNiAvKiBET01OYW1lZE5vZGVNYXAubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9IERPTU5hbWVkTm9kZU1hcC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVy
ID0geGNvZGUubGFuZy5vYmpjcHA7IH07CiAJCTg1MUVFODEwMEFCQ0EzOTYwMEE2QUEzMyAvKiBE
T01FdmVudEV4Y2VwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01F
dmVudEV4Y2VwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NTFFRTgyMDBB
QkNBNTgxMDBBNkFBMzMgLyogRE9NUmFuZ2VFeGNlcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRE9NUmFuZ2VFeGNlcHRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODUyMTdFMDAwQTVFQ0Q0NzAwREI4RDAwIC8qIFhTTEltcG9ydFJ1bGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhTTEltcG9ydFJ1bGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA2NDUsNyArMTA2NDMsNyBAQAogCQk4NTM4
RjA1OTBBRDcyMkYxMDA2QTgxRDEgLyogRE9NUmFuZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NUmFuZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg1MzhGMDVBMEFENzIyRjEwMDZBODFEMSAvKiBET01SYW5nZUludGVybmFsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01SYW5nZUludGVybmFsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg1MzhGMDg0MEFENzJDQjYwMDZBODFEMSAvKiBET01S
YW5nZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NUmFuZ2VzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg1M0JGNEQ5MEFCQjZCNTUwMDg2NDdCQiAvKiBE
T01Ob2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01Ob2RlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1M0JGNEQ5MEFCQjZCNTUwMDg2NDdCQiAvKiBE
T01Ob2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBwYXRo
ID0gRE9NTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNh
dGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLm9iamNwcDsgfTsKIAkJODUzQkY0REEwQUJCNkI1
NTAwODY0N0JCIC8qIERPTU5vZGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRE9NTm9kZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODU0MDc1
MUYwQUQ2QzVGQjAwNjIwQzU3IC8qIERPTUV2ZW50VGFyZ2V0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gRE9NRXZlbnRUYXJnZXQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNv
ZGUubGFuZy5vYmpjcHA7IH07CiAJCTg1NDA3NTI1MEFENkM2NjcwMDYyMEM1NyAvKiBET01Ob2Rl
RmlsdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01Ob2RlRmlsdGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDc0MiwxOCArMTA3NDAsMTggQEAK
IAkJODU5QTlDNDUwQUE1RTNCRDAwQjY5NEIyIC8qIERPTUhUTUxTdHlsZUVsZW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxTdHlsZUVsZW1lbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODU5QTlDNDYwQUE1RTNCRDAwQjY5NEIyIC8qIERP
TUhUTUxTdHlsZUVsZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gRE9NSFRNTFN0eWxlRWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODU5QjdGQjkwQThEMjg4ODAwQTVGMUVBIC8qIENvZGVHZW5lcmF0b3JPYmpDLnBtICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBDb2RlR2VuZXJhdG9yT2JqQy5wbTsgcGF0
aCA9IC4uL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwotCQk4NUFDQTk4NDBBOUI1MjAzMDA2
NzFFOTAgLyogRE9NQ2hhcmFjdGVyRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRE9NQ2hhcmFjdGVyRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4
NUFDQTk4NTBBOUI1MjAzMDA2NzFFOTAgLyogRE9NQ2hhcmFjdGVyRGF0YS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01DaGFyYWN0ZXJEYXRhLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUFDQTk4NDBBOUI1MjAzMDA2NzFFOTAgLyogRE9N
Q2hhcmFjdGVyRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBsaW5lRW5kaW5nID0g
MDsgcGF0aCA9IERPTUNoYXJhY3RlckRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNM
YW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5vYmpjcHA7IH07CisJ
CTg1QUNBOTg1MEE5QjUyMDMwMDY3MUU5MCAvKiBET01DaGFyYWN0ZXJEYXRhLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBET01DaGFy
YWN0ZXJEYXRhLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNh
dGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLm9iamNwcDsgfTsKIAkJODVBQ0E5OUEwQTlCNTc1
OTAwNjcxRTkwIC8qIERPTVRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERPTVRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODVBQ0E5OUIwQTlCNTc1
OTAwNjcxRTkwIC8qIERPTVRleHQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRE9NVGV4dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODVBQ0E5
QkUwQTlCNUZBNTAwNjcxRTkwIC8qIERPTUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERPTUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
ODVBQ0E5QkYwQTlCNUZBNTAwNjcxRTkwIC8qIERPTUVsZW1lbnQubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NRWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJODVBQ0E5QkUwQTlCNUZBNTAwNjcxRTkwIC8qIERPTUVsZW1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBET01FbGVt
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRl
bnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9OworCQk4NUFDQTlCRjBBOUI1RkE1MDA2NzFF
OTAgLyogRE9NRWxlbWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IGxp
bmVFbmRpbmcgPSAwOyBwYXRoID0gRE9NRWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5vYmpjcHA7
IH07CiAJCTg1QUNBOUY5MEE5QjYzMTAwMDY3MUU5MCAvKiBOYW1lZE5vZGVNYXAuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBOYW1lZE5vZGVNYXAuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4NUFDQTlGQTBBOUI2MzEwMDA2NzFFOTAgLyogTm9kZUxpc3QuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBOb2RlTGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg1QUNBQTg5MEE5Qjc1OUMwMDY3MUU5MCAvKiBET01Ob2RlTGlzdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NTm9kZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODVBQ0FBOEEwQTlCNzU5QzAwNjcxRTkwIC8qIERPTU5vZGVMaXN0Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTU5vZGVMaXN0Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4NUFDQUJBRTBBOUNBRjgwMDA2NzFFOTAg
LyogRE9NRG9jdW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTURv
Y3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg1QUNBQkFGMEE5Q0FGODAw
MDY3MUU5MCAvKiBET01Eb2N1bWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBET01Eb2N1bWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODVBQ0FCQUUwQTlDQUY4MDAwNjcxRTkwIC8qIERPTURvY3VtZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gRE9NRG9jdW1lbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNv
ZGUubGFuZy5vYmpjcHA7IH07CisJCTg1QUNBQkFGMEE5Q0FGODAwMDY3MUU5MCAvKiBET01Eb2N1
bWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IGxpbmVFbmRpbmcgPSAw
OyBwYXRoID0gRE9NRG9jdW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3Vh
Z2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9OwogCQk4NUFG
QTc0MTBBQUYyOTg0MDBFODQzMDUgLyogRXZlbnRMaXN0ZW5lci5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IEV2ZW50TGlzdGVuZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4NUFGQTc0MjBBQUYyOTg0MDBFODQzMDUgLyogRXZlbnRUYXJnZXQuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBFdmVudFRhcmdldC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTg1QUZBODIwMEFBRjUyOEEwMEU4NDMwNSAvKiBET01FdmVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9IERPTUV2ZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2Rl
Lmxhbmcub2JqY3BwOyB9OwpAQCAtMTA4MDYsMTMgKzEwODA0LDEzIEBACiAJCTg1QzdGNUNGMEFB
RkI4RDkwMDQwMTRERCAvKiBET01PdmVyZmxvd0V2ZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBET01PdmVyZmxvd0V2ZW50Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZp
ZXIgPSB4Y29kZS5sYW5nLm9iamNwcDsgfTsKIAkJODVDN0Y1RTUwQUFGQkFGQjAwNDAxNEREIC8q
IERPTVdoZWVsRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbGluZUVuZGluZyA9
IDA7IHBhdGggPSBET01XaGVlbEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFu
Z3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9OwogCQk4
NUM3RjVFNjBBQUZCQUZCMDA0MDE0REQgLyogRE9NV2hlZWxFdmVudC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gRE9NV2hlZWxFdmVu
dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVu
dGlmaWVyID0geGNvZGUubGFuZy5vYmpjcHA7IH07Ci0JCTg1Q0E5NkI2MEE5NjIxQTYwMDY5MEND
RiAvKiBET01FbnRpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUVu
dGl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4NUNBOTZCNzBBOTYyMUE2MDA2
OTBDQ0YgLyogRE9NRW50aXR5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IERPTUVudGl0eS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODVDQTk3
NUEwQTk2MkU1NDAwNjkwQ0NGIC8qIERPTURvY3VtZW50VHlwZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRE9NRG9jdW1lbnRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTg1Q0E5NzVCMEE5NjJFNTQwMDY5MENDRiAvKiBET01Eb2N1bWVudFR5cGUubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NRG9jdW1lbnRUeXBl
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NUNBOTZCNjBBOTYyMUE2MDA2OTBD
Q0YgLyogRE9NRW50aXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcg
PSAwOyBwYXRoID0gRE9NRW50aXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3Vh
Z2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9OworCQk4NUNB
OTZCNzBBOTYyMUE2MDA2OTBDQ0YgLyogRE9NRW50aXR5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBET01FbnRpdHkubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhj
b2RlLmxhbmcub2JqY3BwOyB9OworCQk4NUNBOTc1QTBBOTYyRTU0MDA2OTBDQ0YgLyogRE9NRG9j
dW1lbnRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBw
YXRoID0gRE9NRG9jdW1lbnRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3Vh
Z2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9OworCQk4NUNB
OTc1QjBBOTYyRTU0MDA2OTBDQ0YgLyogRE9NRG9jdW1lbnRUeXBlLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBET01Eb2N1bWVudFR5
cGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRl
bnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9OwogCQk4NUQyQUQ2NzBBQjFBNDBBMDBDMzEz
RUEgLyogRE9NRXZlbnRMaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBsaW5l
RW5kaW5nID0gMDsgcGF0aCA9IERPTUV2ZW50TGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5vYmpj
cHA7IH07Ci0JCTg1RDM4OUIwMEE5OTFBN0YwMDI4MjE0NSAvKiBET01BdHRyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01BdHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTg1RDM4OUIxMEE5OTFBN0YwMDI4MjE0NSAvKiBET01BdHRyLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUF0dHIubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTg1RDM4OUIwMEE5OTFBN0YwMDI4MjE0NSAvKiBET01BdHRyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gRE9NQXR0
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50
aWZpZXIgPSB4Y29kZS5sYW5nLm9iamNwcDsgfTsKKwkJODVEMzg5QjEwQTk5MUE3RjAwMjgyMTQ1
IC8qIERPTUF0dHIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBsaW5lRW5k
aW5nID0gMDsgcGF0aCA9IERPTUF0dHIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFu
Z3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9OwogCQk4
NURGMkMxMDBBQTM0MUY2MDBBRDY0QzUgLyogRE9NSFRNTEZvcm1FbGVtZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gRE9NSFRNTEZvcm1FbGVt
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRl
bnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9OwogCQk4NURGMkMxMTBBQTM0MUY2MDBBRDY0
QzUgLyogRE9NSFRNTEZvcm1FbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IERPTUhUTUxGb3JtRWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODVERjJFRUIwQUEzODdDQjAwQUQ2NEM1IC8qIERPTUhUTUxFbGVtZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gRE9NSFRNTEVs
ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25J
ZGVudGlmaWVyID0geGNvZGUubGFuZy5vYmpjcHA7IH07CkBAIC0xMDg0OSwyMCArMTA4NDcsMjAg
QEAKIAkJODVERjgyMUMwQUE3ODQ5RTAwNDg2QUQ3IC8qIERPTUhUTUxUYWJsZVNlY3Rpb25FbGVt
ZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTUhUTUxU
YWJsZVNlY3Rpb25FbGVtZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NURG
ODI2RTBBQTc4QjhBMDA0ODZBRDcgLyogRE9NSFRNTFRhYmxlRWxlbWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSFRNTFRhYmxlRWxlbWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4NURGODI2RjBBQTc4QjhBMDA0ODZBRDcgLyogRE9NSFRNTFRh
YmxlRWxlbWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBE
T01IVE1MVGFibGVFbGVtZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4NUU3
MTEzRTBBQzVENTM0MDA1MzI3MEYgLyogRE9NQXR0ckludGVybmFsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBET01BdHRySW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJODVFNzExM0YwQUM1RDUzNDAwNTMyNzBGIC8qIERPTUNEQVRBU2VjdGlvbklu
dGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01DREFUQVNlY3Rp
b25JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4NUU3MTE0MDBBQzVE
NTM0MDA1MzI3MEYgLyogRE9NQ2hhcmFjdGVyRGF0YUludGVybmFsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBET01DaGFyYWN0ZXJEYXRhSW50ZXJuYWwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODVFNzExNDEwQUM1RDUzNDAwNTMyNzBGIC8qIERPTUNvbW1l
bnRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NQ29tbWVu
dEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg1RTcxMTNFMEFDNUQ1
MzQwMDUzMjcwRiAvKiBET01BdHRySW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBET01BdHRySW50ZXJuYWwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFu
Zy5vYmpjcHA7IH07CisJCTg1RTcxMTNGMEFDNUQ1MzQwMDUzMjcwRiAvKiBET01DREFUQVNlY3Rp
b25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBsaW5lRW5kaW5nID0gMDsg
cGF0aCA9IERPTUNEQVRBU2VjdGlvbkludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9
OworCQk4NUU3MTE0MDBBQzVENTM0MDA1MzI3MEYgLyogRE9NQ2hhcmFjdGVyRGF0YUludGVybmFs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gRE9N
Q2hhcmFjdGVyRGF0YUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3Vh
Z2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9OworCQk4NUU3
MTE0MTBBQzVENTM0MDA1MzI3MEYgLyogRE9NQ29tbWVudEludGVybmFsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gRE9NQ29tbWVudEludGVybmFs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRp
ZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9OwogCQk4NUU3MTE0MjBBQzVENTM0MDA1MzI3MEYg
LyogRE9NQ291bnRlckludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGxpbmVF
bmRpbmcgPSAwOyBwYXRoID0gRE9NQ291bnRlckludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcub2Jq
Y3BwOyB9OwogCQk4NUU3MTE0MzBBQzVENTM0MDA1MzI3MEYgLyogRE9NQ1NTUnVsZUxpc3RJbnRl
cm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9
IERPTUNTU1J1bGVMaXN0SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5n
dWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5vYmpjcHA7IH07CiAJCTg1
RTcxMTQ0MEFDNUQ1MzQwMDUzMjcwRiAvKiBET01DU1NTdHlsZURlY2xhcmF0aW9uSW50ZXJuYWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBET01D
U1NTdHlsZURlY2xhcmF0aW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNM
YW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5vYmpjcHA7IH07Ci0J
CTg1RTcxMTQ1MEFDNUQ1MzQwMDUzMjcwRiAvKiBET01Eb2N1bWVudEZyYWdtZW50SW50ZXJuYWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTURvY3VtZW50RnJhZ21lbnRJ
bnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4NUU3MTE0NjBBQzVENTM0
MDA1MzI3MEYgLyogRE9NRG9jdW1lbnRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRE9NRG9jdW1lbnRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk4NUU3MTE0NzBBQzVENTM0MDA1MzI3MEYgLyogRE9NRG9jdW1lbnRUeXBlSW50ZXJu
YWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTURvY3VtZW50VHlwZUlu
dGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg1RTcxMTQ4MEFDNUQ1MzQw
MDUzMjcwRiAvKiBET01ET01JbXBsZW1lbnRhdGlvbkludGVybmFsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBET01ET01JbXBsZW1lbnRhdGlvbkludGVybmFsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg1RTcxMTQ5MEFDNUQ1MzQwMDUzMjcwRiAvKiBET01F
bGVtZW50SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUVs
ZW1lbnRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4NUU3MTE0QTBB
QzVENTM0MDA1MzI3MEYgLyogRE9NRW50aXR5SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERPTUVudGl0eUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTg1RTcxMTRCMEFDNUQ1MzQwMDUzMjcwRiAvKiBET01FbnRpdHlSZWZlcmVuY2VJ
bnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NRW50aXR5UmVm
ZXJlbmNlSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODVFNzExNDUw
QUM1RDUzNDAwNTMyNzBGIC8qIERPTURvY3VtZW50RnJhZ21lbnRJbnRlcm5hbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9IERPTURvY3VtZW50RnJh
Z21lbnRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lm
aWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLm9iamNwcDsgfTsKKwkJODVFNzExNDYwQUM1
RDUzNDAwNTMyNzBGIC8qIERPTURvY3VtZW50SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBET01Eb2N1bWVudEludGVybmFsLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9
IHhjb2RlLmxhbmcub2JqY3BwOyB9OworCQk4NUU3MTE0NzBBQzVENTM0MDA1MzI3MEYgLyogRE9N
RG9jdW1lbnRUeXBlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbGluZUVu
ZGluZyA9IDA7IHBhdGggPSBET01Eb2N1bWVudFR5cGVJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5n
Lm9iamNwcDsgfTsKKwkJODVFNzExNDgwQUM1RDUzNDAwNTMyNzBGIC8qIERPTURPTUltcGxlbWVu
dGF0aW9uSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbGluZUVuZGluZyA9
IDA7IHBhdGggPSBET01ET01JbXBsZW1lbnRhdGlvbkludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcu
b2JqY3BwOyB9OworCQk4NUU3MTE0OTBBQzVENTM0MDA1MzI3MEYgLyogRE9NRWxlbWVudEludGVy
bmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0g
RE9NRWxlbWVudEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VT
cGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9OworCQk4NUU3MTE0
QTBBQzVENTM0MDA1MzI3MEYgLyogRE9NRW50aXR5SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBET01FbnRpdHlJbnRlcm5hbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIg
PSB4Y29kZS5sYW5nLm9iamNwcDsgfTsKKwkJODVFNzExNEIwQUM1RDUzNDAwNTMyNzBGIC8qIERP
TUVudGl0eVJlZmVyZW5jZUludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGxp
bmVFbmRpbmcgPSAwOyBwYXRoID0gRE9NRW50aXR5UmVmZXJlbmNlSW50ZXJuYWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNv
ZGUubGFuZy5vYmpjcHA7IH07CiAJCTg1RTcxMTRDMEFDNUQ1MzQwMDUzMjcwRiAvKiBET01IVE1M
QW5jaG9yRWxlbWVudEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGxpbmVF
bmRpbmcgPSAwOyBwYXRoID0gRE9NSFRNTEFuY2hvckVsZW1lbnRJbnRlcm5hbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29k
ZS5sYW5nLm9iamNwcDsgfTsKIAkJODVFNzExNEQwQUM1RDUzNDAwNTMyNzBGIC8qIERPTUhUTUxB
cmVhRWxlbWVudEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGxpbmVFbmRp
bmcgPSAwOyBwYXRoID0gRE9NSFRNTEFyZWFFbGVtZW50SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFu
Zy5vYmpjcHA7IH07CiAJCTg1RTcxMTRFMEFDNUQ1MzQwMDUzMjcwRiAvKiBET01IVE1MQmFzZUVs
ZW1lbnRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBsaW5lRW5kaW5nID0g
MDsgcGF0aCA9IERPTUhUTUxCYXNlRWxlbWVudEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcub2Jq
Y3BwOyB9OwpAQCAtMTg1NTAsODYgKzE4NTQ4LDYxIEBACiAJCTg1NEYxMkFDMEE4RUJDMTgwMDA5
NDBCNSAvKiBDb3JlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
LQkJCQk4NTZDOEFFMjBBOTEyNjQ5MDA1QzY4N0IgLyogRE9NT2JqZWN0LmggKi8sCi0JCQkJODU2
QzhBRTMwQTkxMjY0OTAwNUM2ODdCIC8qIERPTU9iamVjdC5tbSAqLywKLQkJCSk7Ci0JCQluYW1l
ID0gQ29yZTsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0JCTg1OTY3RDlGMEFB
OEJCNTkwMDVGRURFRSAvKiBDb3JlICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGls
ZHJlbiA9ICgKIAkJCQk4NUQzODlCMDBBOTkxQTdGMDAyODIxNDUgLyogRE9NQXR0ci5oICovLAog
CQkJCTg1RDM4OUIxMEE5OTFBN0YwMDI4MjE0NSAvKiBET01BdHRyLm1tICovLAorCQkJCTg1RTcx
MTNFMEFDNUQ1MzQwMDUzMjcwRiAvKiBET01BdHRySW50ZXJuYWwuaCAqLywKIAkJCQk4NTA4OUND
RjBBOThDNDI3MDBBMjc1QUEgLyogRE9NQ0RBVEFTZWN0aW9uLmggKi8sCiAJCQkJODUwODlDRDAw
QTk4QzQyNzAwQTI3NUFBIC8qIERPTUNEQVRBU2VjdGlvbi5tbSAqLywKKwkJCQk4NUU3MTEzRjBB
QzVENTM0MDA1MzI3MEYgLyogRE9NQ0RBVEFTZWN0aW9uSW50ZXJuYWwuaCAqLywKIAkJCQk4NUFD
QTk4NDBBOUI1MjAzMDA2NzFFOTAgLyogRE9NQ2hhcmFjdGVyRGF0YS5oICovLAogCQkJCTg1QUNB
OTg1MEE5QjUyMDMwMDY3MUU5MCAvKiBET01DaGFyYWN0ZXJEYXRhLm1tICovLAorCQkJCTg1RTcx
MTQwMEFDNUQ1MzQwMDUzMjcwRiAvKiBET01DaGFyYWN0ZXJEYXRhSW50ZXJuYWwuaCAqLywKIAkJ
CQk4NTA4OUNEMTBBOThDNDI3MDBBMjc1QUEgLyogRE9NQ29tbWVudC5oICovLAogCQkJCTg1MDg5
Q0QyMEE5OEM0MjcwMEEyNzVBQSAvKiBET01Db21tZW50Lm1tICovLAorCQkJCTg1RTcxMTQxMEFD
NUQ1MzQwMDUzMjcwRiAvKiBET01Db21tZW50SW50ZXJuYWwuaCAqLywKIAkJCQk4NUFDQUJBRTBB
OUNBRjgwMDA2NzFFOTAgLyogRE9NRG9jdW1lbnQuaCAqLywKIAkJCQk4NUFDQUJBRjBBOUNBRjgw
MDA2NzFFOTAgLyogRE9NRG9jdW1lbnQubW0gKi8sCiAJCQkJODUwODlDRDMwQTk4QzQyODAwQTI3
NUFBIC8qIERPTURvY3VtZW50RnJhZ21lbnQuaCAqLywKIAkJCQk4NTA4OUNENDBBOThDNDI4MDBB
Mjc1QUEgLyogRE9NRG9jdW1lbnRGcmFnbWVudC5tbSAqLywKKwkJCQk4NUU3MTE0NTBBQzVENTM0
MDA1MzI3MEYgLyogRE9NRG9jdW1lbnRGcmFnbWVudEludGVybmFsLmggKi8sCiAJCQkJNDQzMTFD
RDQxMkU0RTIyRDAwMEE4RDE5IC8qIERPTURvY3VtZW50RnJhZ21lbnRQcml2YXRlLmggKi8sCisJ
CQkJODVFNzExNDYwQUM1RDUzNDAwNTMyNzBGIC8qIERPTURvY3VtZW50SW50ZXJuYWwuaCAqLywK
IAkJCQk0NDMxMUNENTEyRTRFMjJEMDAwQThEMTkgLyogRE9NRG9jdW1lbnRQcml2YXRlLmggKi8s
CiAJCQkJODVDQTk3NUEwQTk2MkU1NDAwNjkwQ0NGIC8qIERPTURvY3VtZW50VHlwZS5oICovLAog
CQkJCTg1Q0E5NzVCMEE5NjJFNTQwMDY5MENDRiAvKiBET01Eb2N1bWVudFR5cGUubW0gKi8sCisJ
CQkJODVFNzExNDcwQUM1RDUzNDAwNTMyNzBGIC8qIERPTURvY3VtZW50VHlwZUludGVybmFsLmgg
Ki8sCiAJCQkJODUxOERDRTcwQTlDQzgwQzAwOTFCN0E2IC8qIERPTURPTUltcGxlbWVudGF0aW9u
LmggKi8sCiAJCQkJODUxOERDRTgwQTlDQzgwRDAwOTFCN0E2IC8qIERPTURPTUltcGxlbWVudGF0
aW9uLm1tICovLAorCQkJCTg1RTcxMTQ4MEFDNUQ1MzQwMDUzMjcwRiAvKiBET01ET01JbXBsZW1l
bnRhdGlvbkludGVybmFsLmggKi8sCiAJCQkJODVBQ0E5QkUwQTlCNUZBNTAwNjcxRTkwIC8qIERP
TUVsZW1lbnQuaCAqLywKIAkJCQk4NUFDQTlCRjBBOUI1RkE1MDA2NzFFOTAgLyogRE9NRWxlbWVu
dC5tbSAqLywKKwkJCQk4NUU3MTE0OTBBQzVENTM0MDA1MzI3MEYgLyogRE9NRWxlbWVudEludGVy
bmFsLmggKi8sCiAJCQkJODVDQTk2QjYwQTk2MjFBNjAwNjkwQ0NGIC8qIERPTUVudGl0eS5oICov
LAogCQkJCTg1Q0E5NkI3MEE5NjIxQTYwMDY5MENDRiAvKiBET01FbnRpdHkubW0gKi8sCisJCQkJ
ODVFNzExNEEwQUM1RDUzNDAwNTMyNzBGIC8qIERPTUVudGl0eUludGVybmFsLmggKi8sCiAJCQkJ
ODUwODlDRDUwQTk4QzQyODAwQTI3NUFBIC8qIERPTUVudGl0eVJlZmVyZW5jZS5oICovLAogCQkJ
CTg1MDg5Q0Q2MEE5OEM0MjgwMEEyNzVBQSAvKiBET01FbnRpdHlSZWZlcmVuY2UubW0gKi8sCisJ
CQkJODVFNzExNEIwQUM1RDUzNDAwNTMyNzBGIC8qIERPTUVudGl0eVJlZmVyZW5jZUludGVybmFs
LmggKi8sCiAJCQkJODUxOERENzYwQTlDRjMxQjAwOTFCN0E2IC8qIERPTU5hbWVkTm9kZU1hcC5o
ICovLAogCQkJCTg1MThERDc3MEE5Q0YzMUIwMDkxQjdBNiAvKiBET01OYW1lZE5vZGVNYXAubW0g
Ki8sCisJCQkJODVFNzExODMwQUM1RDUzNTAwNTMyNzBGIC8qIERPTU5hbWVkTm9kZU1hcEludGVy
bmFsLmggKi8sCiAJCQkJODUzQkY0RDkwQUJCNkI1NTAwODY0N0JCIC8qIERPTU5vZGUuaCAqLywK
IAkJCQk4NTNCRjREQTBBQkI2QjU1MDA4NjQ3QkIgLyogRE9NTm9kZS5tbSAqLywKKwkJCQk4NUI0
OThGQTBBREIzNDAyMDA5MjVDQkIgLyogRE9NTm9kZUludGVybmFsLmggKi8sCiAJCQkJODVBQ0FB
ODkwQTlCNzU5QzAwNjcxRTkwIC8qIERPTU5vZGVMaXN0LmggKi8sCiAJCQkJODVBQ0FBOEEwQTlC
NzU5QzAwNjcxRTkwIC8qIERPTU5vZGVMaXN0Lm1tICovLAorCQkJCTg1RTcxMTg0MEFDNUQ1MzUw
MDUzMjcwRiAvKiBET01Ob2RlTGlzdEludGVybmFsLmggKi8sCiAJCQkJQTU0QTgyRUExNTIyOENB
MzAwQzcyQkE2IC8qIERPTU5vZGVQcml2YXRlLmggKi8sCisJCQkJODU2QzhBRTIwQTkxMjY0OTAw
NUM2ODdCIC8qIERPTU9iamVjdC5oICovLAorCQkJCTg1NkM4QUUzMEE5MTI2NDkwMDVDNjg3QiAv
KiBET01PYmplY3QubW0gKi8sCiAJCQkJODVGNTZBNzgwQTk4Q0UzNzAwQURCNjBBIC8qIERPTVBy
b2Nlc3NpbmdJbnN0cnVjdGlvbi5oICovLAogCQkJCTg1RjU2QTc5MEE5OENFMzcwMEFEQjYwQSAv
KiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW0gKi8sCisJCQkJODVFNzExODYwQUM1RDUzNTAw
NTMyNzBGIC8qIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbkludGVybmFsLmggKi8sCiAJCQkJODVB
Q0E5OUEwQTlCNTc1OTAwNjcxRTkwIC8qIERPTVRleHQuaCAqLywKIAkJCQk4NUFDQTk5QjBBOUI1
NzU5MDA2NzFFOTAgLyogRE9NVGV4dC5tbSAqLywKLQkJCSk7Ci0JCQluYW1lID0gQ29yZTsKLQkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0JCTg1QjIzMjI2MEE4QkYzQTEwMEZERjQ3
QiAvKiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxk
cmVuID0gKAotCQkJCTg1OTY3RDlGMEFBOEJCNTkwMDVGRURFRSAvKiBDb3JlICovLAotCQkJCTg1
RTcxMTNEMEFDNUQ0QTEwMDUzMjcwRiAvKiBJbnRlcm5hbCAqLywKLQkJCSk7Ci0JCQluYW1lID0g
IkRlcml2ZWQgU291cmNlcyI7Ci0JCQlwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZTsKLQkJ
CXNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7Ci0JCX07Ci0JCTg1RTcxMTNEMEFDNUQ0
QTEwMDUzMjcwRiAvKiBJbnRlcm5hbCAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hp
bGRyZW4gPSAoCi0JCQkJODVFNzExM0UwQUM1RDUzNDAwNTMyNzBGIC8qIERPTUF0dHJJbnRlcm5h
bC5oICovLAotCQkJCTg1RTcxMTNGMEFDNUQ1MzQwMDUzMjcwRiAvKiBET01DREFUQVNlY3Rpb25J
bnRlcm5hbC5oICovLAotCQkJCTg1RTcxMTQwMEFDNUQ1MzQwMDUzMjcwRiAvKiBET01DaGFyYWN0
ZXJEYXRhSW50ZXJuYWwuaCAqLywKLQkJCQk4NUU3MTE0MTBBQzVENTM0MDA1MzI3MEYgLyogRE9N
Q29tbWVudEludGVybmFsLmggKi8sCi0JCQkJODVFNzExNDUwQUM1RDUzNDAwNTMyNzBGIC8qIERP
TURvY3VtZW50RnJhZ21lbnRJbnRlcm5hbC5oICovLAotCQkJCTg1RTcxMTQ2MEFDNUQ1MzQwMDUz
MjcwRiAvKiBET01Eb2N1bWVudEludGVybmFsLmggKi8sCi0JCQkJODVFNzExNDcwQUM1RDUzNDAw
NTMyNzBGIC8qIERPTURvY3VtZW50VHlwZUludGVybmFsLmggKi8sCi0JCQkJODVFNzExNDgwQUM1
RDUzNDAwNTMyNzBGIC8qIERPTURPTUltcGxlbWVudGF0aW9uSW50ZXJuYWwuaCAqLywKLQkJCQk4
NUU3MTE0OTBBQzVENTM0MDA1MzI3MEYgLyogRE9NRWxlbWVudEludGVybmFsLmggKi8sCi0JCQkJ
ODVFNzExNEEwQUM1RDUzNDAwNTMyNzBGIC8qIERPTUVudGl0eUludGVybmFsLmggKi8sCi0JCQkJ
ODVFNzExNEIwQUM1RDUzNDAwNTMyNzBGIC8qIERPTUVudGl0eVJlZmVyZW5jZUludGVybmFsLmgg
Ki8sCi0JCQkJODVFNzExODMwQUM1RDUzNTAwNTMyNzBGIC8qIERPTU5hbWVkTm9kZU1hcEludGVy
bmFsLmggKi8sCi0JCQkJODVCNDk4RkEwQURCMzQwMjAwOTI1Q0JCIC8qIERPTU5vZGVJbnRlcm5h
bC5oICovLAotCQkJCTg1RTcxMTg0MEFDNUQ1MzUwMDUzMjcwRiAvKiBET01Ob2RlTGlzdEludGVy
bmFsLmggKi8sCi0JCQkJODVFNzExODYwQUM1RDUzNTAwNTMyNzBGIC8qIERPTVByb2Nlc3NpbmdJ
bnN0cnVjdGlvbkludGVybmFsLmggKi8sCi0JCQkJMEZGNTAyNjIxMDJCQTkyQjAwNjZGMzlBIC8q
IERPTVN0eWxlTWVkaWFJbnRlcm5hbC5oICovLAogCQkJCTg1RTcxMThBMEFDNUQ1MzUwMDUzMjcw
RiAvKiBET01UZXh0SW50ZXJuYWwuaCAqLywKIAkJCSk7Ci0JCQluYW1lID0gSW50ZXJuYWw7CisJ
CQluYW1lID0gQ29yZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CiAJCTg5ODc4
NTc2MTIyQ0ExREEwMDNBQUJEQSAvKiBGaWxlQVBJICovID0gewpAQCAtMjIyMjgsNyArMjIyMDEs
NiBAQAogCQkJCTg1NEYxMkFDMEE4RUJDMTgwMDA5NDBCNSAvKiBDb3JlICovLAogCQkJCTg1NDA3
NTQyMEFENkM3M0UwMDYyMEM1NyAvKiBET01FeGNlcHRpb25zICovLAogCQkJCTFBRDJEMTVDMUQ0
RkQ2QjIwMEI3REUzNiAvKiBIVE1MICovLAotCQkJCTg1QjIzMjI2MEE4QkYzQTEwMEZERjQ3QiAv
KiBEZXJpdmVkIFNvdXJjZXMgKi8sCiAJCQkJQkNEMEZCQ0UwREJENjI0MTAwQjJGNjMwIC8qIFZp
ZXdzICovLAogCQkJCTFBQ0YzRkI1MUQ1MDEyNDQwMDYzQUVGQiAvKiBYUGF0aCAqLywKIAkJCQk4
NTlCN0ZCOTBBOEQyODg4MDBBNUYxRUEgLyogQ29kZUdlbmVyYXRvck9iakMucG0gKi8sCkBAIC0y
NTcwMyw3ICsyNTY3NSw2IEBACiAJCQkJNEFDQkMwQzQxMjcxM0NDQTAwOTRGOUIyIC8qIERPTVNl
dHRhYmxlVG9rZW5MaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTQ0Mjc0QjExQTU3RTdBMDA2
M0E3NDkgLyogRE9NU3RyaW5nTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2NDY0MEExMUQ3
RjMwNDAwNjQ1NUIwIC8qIERPTVN0cmluZ01hcC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEZGNTAy
NjMxMDJCQTkyQzAwNjZGMzlBIC8qIERPTVN0eWxlTWVkaWFJbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODUwNjU3MDAwQUFCNDc2MzAwMkQxNUMwIC8qIERPTVN0eWxlU2hlZXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg1QjQ5OEZGMEFEQjM0ODEwMDkyNUNCQiAvKiBET01TdHlsZVNoZWV0
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDY1NzAyMEFBQjQ3NjMwMDJEMTVDMCAv
KiBET01TdHlsZVNoZWV0TGlzdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUF0dHIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NQXR0ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1YjU3ZjRiMjcxMzFjNjUwOWI1NjA3Y2EyODMz
MGY1MGQyYTA1MWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTUF0dHIuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJDb3JlL0RPTU5vZGUuaD4KKwor
QGNsYXNzIERPTUNTU1N0eWxlRGVjbGFyYXRpb247CitAY2xhc3MgRE9NRWxlbWVudDsKK0BjbGFz
cyBOU1N0cmluZzsKKworV0VCS0lUX0NMQVNTX0FWQUlMQUJMRV9NQUMoMTBfNCkKK1dFQkNPUkVf
RVhQT1JUIEBpbnRlcmZhY2UgRE9NQXR0ciA6IERPTU5vZGUKK0Bwcm9wZXJ0eSAocmVhZG9ubHks
IGNvcHkpIE5TU3RyaW5nICpuYW1lOworQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBzcGVjaWZp
ZWQ7CitAcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICp2YWx1ZTsKK0Bwcm9wZXJ0eSAocmVhZG9u
bHksIHN0cm9uZykgRE9NRWxlbWVudCAqb3duZXJFbGVtZW50OworQHByb3BlcnR5IChyZWFkb25s
eSwgc3Ryb25nKSBET01DU1NTdHlsZURlY2xhcmF0aW9uICpzdHlsZSBXRUJLSVRfQVZBSUxBQkxF
X01BQygxMF81KTsKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NQXR0ci5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQXR0ci5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44NWM1NzFiMzU2MjkwZDUyNjQ0NGVjOWRhNDc1OTA3NWZhYWU0YzY5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01BdHRyLm1tCkBA
IC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkRPTUF0dHJJbnRlcm5hbC5o
IgorCisjaW1wb3J0ICJBdHRyLmgiCisjaW1wb3J0ICJDU1NTdHlsZURlY2xhcmF0aW9uLmgiCisj
aW1wb3J0ICJET01DU1NTdHlsZURlY2xhcmF0aW9uSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTUVs
ZW1lbnRJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCisjaW1wb3J0ICJF
bGVtZW50LmgiCisjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgorI2ltcG9ydCAiSlNNYWlu
VGhyZWFkRXhlY1N0YXRlLmgiCisjaW1wb3J0ICJTdHlsZVByb3BlcnRpZXMuaCIKKyNpbXBvcnQg
IlRocmVhZENoZWNrLmgiCisjaW1wb3J0ICJVUkwuaCIKKyNpbXBvcnQgIldlYlNjcmlwdE9iamVj
dFByaXZhdGUuaCIKKyNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKworI2RlZmluZSBJTVBMIHN0YXRp
Y19jYXN0PFdlYkNvcmU6OkF0dHIqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihf
aW50ZXJuYWwpKQorCitAaW1wbGVtZW50YXRpb24gRE9NQXR0cgorCistIChOU1N0cmluZyAqKW5h
bWUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0
dXJuIElNUEwtPm5hbWUoKTsKK30KKworLSAoQk9PTClzcGVjaWZpZWQKK3sKKyAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPnNwZWNpZmll
ZCgpOworfQorCistIChOU1N0cmluZyAqKXZhbHVlCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT52YWx1ZUZvckJpbmRpbmdzKCk7
Cit9CisKKy0gKHZvaWQpc2V0VmFsdWU6KE5TU3RyaW5nICopbmV3VmFsdWUKK3sKKyAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgSU1QTC0+c2V0VmFsdWVGb3JC
aW5kaW5ncyhuZXdWYWx1ZSk7Cit9CisKKy0gKERPTUVsZW1lbnQgKilvd25lckVsZW1lbnQKK3sK
KyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIGtp
dChXVEY6OmdldFB0cihJTVBMLT5vd25lckVsZW1lbnQoKSkpOworfQorCistIChCT09MKWlzSWQK
K3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJu
IElNUEwtPmlzSWQoKTsKK30KKworLSAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKXN0eWxlCit7
CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBr
aXQoV1RGOjpnZXRQdHIoSU1QTC0+c3R5bGUoKSkpOworfQorCitAZW5kCisKK1dlYkNvcmU6OkF0
dHIqIGNvcmUoRE9NQXR0ciAqd3JhcHBlcikKK3sKKyAgICByZXR1cm4gd3JhcHBlciA/IHJlaW50
ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6QXR0cio+KHdyYXBwZXItPl9pbnRlcm5hbCkgOiAwOworfQor
CitET01BdHRyICpraXQoV2ViQ29yZTo6QXR0ciogdmFsdWUpCit7CisgICAgV2ViQ29yZVRocmVh
ZFZpb2xhdGlvbkNoZWNrUm91bmRPbmUoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NQXR0
cio+KGtpdChzdGF0aWNfY2FzdDxXZWJDb3JlOjpOb2RlKj4odmFsdWUpKSk7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUF0dHJJbnRlcm5hbC5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01BdHRySW50ZXJuYWwuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
MGE4OWVlNDM5MzBhOTQ3MTBjYjI2ZjZmMDdhNzk4YzM1YjMwNGE2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01BdHRySW50ZXJuYWwuaApAQCAtMCww
ICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0IDxXZWJDb3JlL0RPTUF0dHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Y2xhc3MgQXR0cjsKK30KKworV0VCQ09SRV9FWFBPUlQgV2ViQ29yZTo6QXR0ciogY29yZShET01B
dHRyICopOworV0VCQ09SRV9FWFBPUlQgRE9NQXR0ciAqa2l0KFdlYkNvcmU6OkF0dHIqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ0RBVEFTZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNEQVRBU2VjdGlvbi5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmNmZWJiNTM3MTVlMjE3NTE1NzBhOTVkMWViYzQ2ZGZhZTVjNzA5NmQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNEQVRBU2VjdGlvbi5oCkBA
IC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRE9NVGV4dC5oPgorCitXRUJLSVRfQ0xBU1NfQVZB
SUxBQkxFX01BQygxMF80KQorV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBET01DREFUQVNlY3Rp
b24gOiBET01UZXh0CitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTUNEQVRBU2VjdGlvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
Q0RBVEFTZWN0aW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0ZWYwMThlNzkyMGJhOGY2YWQ1YTcxN2Q5NjNk
NzkyZTJjZjJjMGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTUNEQVRBU2VjdGlvbi5tbQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIkRPTUNEQVRBU2VjdGlvbkludGVybmFsLmgiCisKKyNpbXBvcnQgIkNEQVRBU2VjdGlv
bi5oIgorI2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCisjaW1wb3J0ICJFeGNlcHRpb25IYW5k
bGVycy5oIgorI2ltcG9ydCAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCisjaW1wb3J0ICJUaHJl
YWRDaGVjay5oIgorI2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgorI2ltcG9ydCA8
d3RmL0dldFB0ci5oPgorCisjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q0RBVEFT
ZWN0aW9uKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKKwor
QGltcGxlbWVudGF0aW9uIERPTUNEQVRBU2VjdGlvbgorCitAZW5kCisKK1dlYkNvcmU6OkNEQVRB
U2VjdGlvbiogY29yZShET01DREFUQVNlY3Rpb24gKndyYXBwZXIpCit7CisgICAgcmV0dXJuIHdy
YXBwZXIgPyByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkNEQVRBU2VjdGlvbio+KHdyYXBwZXIt
Pl9pbnRlcm5hbCkgOiAwOworfQorCitET01DREFUQVNlY3Rpb24gKmtpdChXZWJDb3JlOjpDREFU
QVNlY3Rpb24qIHZhbHVlKQoreworICAgIFdlYkNvcmVUaHJlYWRWaW9sYXRpb25DaGVja1JvdW5k
T25lKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTUNEQVRBU2VjdGlvbio+KGtpdChzdGF0
aWNfY2FzdDxXZWJDb3JlOjpOb2RlKj4odmFsdWUpKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNEQVRBU2VjdGlvbkludGVybmFsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNEQVRBU2VjdGlvbkludGVybmFsLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTgzZGQ4N2VhNDFiZjY5NWM4MTVkMTA2MWQ5OTVlYzI0ODY2ZjFhYQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ0RBVEFTZWN0aW9uSW50ZXJu
YWwuaApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJDb3JlL0RPTUNEQVRBU2VjdGlvbi5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDREFUQVNlY3Rpb247Cit9CisKK1dFQkNPUkVfRVhQ
T1JUIFdlYkNvcmU6OkNEQVRBU2VjdGlvbiogY29yZShET01DREFUQVNlY3Rpb24gKik7CitXRUJD
T1JFX0VYUE9SVCBET01DREFUQVNlY3Rpb24gKmtpdChXZWJDb3JlOjpDREFUQVNlY3Rpb24qKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ2hhcmFjdGVyRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DaGFyYWN0ZXJEYXRhLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzA2MDU4OTM5ZDI0NmRkM2JkMzRjMmE4ZmJmMmFiMDBlNTUyNjlhZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ2hhcmFjdGVyRGF0
YS5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRE9NTm9kZS5oPgorCitAY2xhc3MgTlNT
dHJpbmc7CisKK1dFQktJVF9DTEFTU19BVkFJTEFCTEVfTUFDKDEwXzQpCitXRUJDT1JFX0VYUE9S
VCBAaW50ZXJmYWNlIERPTUNoYXJhY3RlckRhdGEgOiBET01Ob2RlCitAcHJvcGVydHkgKGNvcHkp
IE5TU3RyaW5nICpkYXRhOworQHByb3BlcnR5IChyZWFkb25seSkgdW5zaWduZWQgbGVuZ3RoOwor
CistIChOU1N0cmluZyAqKXN1YnN0cmluZ0RhdGE6KHVuc2lnbmVkKW9mZnNldCBsZW5ndGg6KHVu
c2lnbmVkKWxlbmd0aCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKKy0gKHZvaWQpYXBwZW5k
RGF0YTooTlNTdHJpbmcgKilkYXRhOworLSAodm9pZClpbnNlcnREYXRhOih1bnNpZ25lZClvZmZz
ZXQgZGF0YTooTlNTdHJpbmcgKilkYXRhIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOworLSAo
dm9pZClkZWxldGVEYXRhOih1bnNpZ25lZClvZmZzZXQgbGVuZ3RoOih1bnNpZ25lZClsZW5ndGgg
V0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7CistICh2b2lkKXJlcGxhY2VEYXRhOih1bnNpZ25l
ZClvZmZzZXQgbGVuZ3RoOih1bnNpZ25lZClsZW5ndGggZGF0YTooTlNTdHJpbmcgKilkYXRhIFdF
QktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOworQGVuZAorCitAaW50ZXJmYWNlIERPTUNoYXJhY3Rl
ckRhdGEgKERPTUNoYXJhY3RlckRhdGFEZXByZWNhdGVkKQorLSAoTlNTdHJpbmcgKilzdWJzdHJp
bmdEYXRhOih1bnNpZ25lZClvZmZzZXQgOih1bnNpZ25lZClsZW5ndGggV0VCS0lUX0RFUFJFQ0FU
RURfTUFDKDEwXzQsIDEwXzUpOworLSAodm9pZClpbnNlcnREYXRhOih1bnNpZ25lZClvZmZzZXQg
OihOU1N0cmluZyAqKWRhdGEgV0VCS0lUX0RFUFJFQ0FURURfTUFDKDEwXzQsIDEwXzUpOworLSAo
dm9pZClkZWxldGVEYXRhOih1bnNpZ25lZClvZmZzZXQgOih1bnNpZ25lZClsZW5ndGggV0VCS0lU
X0RFUFJFQ0FURURfTUFDKDEwXzQsIDEwXzUpOworLSAodm9pZClyZXBsYWNlRGF0YToodW5zaWdu
ZWQpb2Zmc2V0IDoodW5zaWduZWQpbGVuZ3RoIDooTlNTdHJpbmcgKilkYXRhIFdFQktJVF9ERVBS
RUNBVEVEX01BQygxMF80LCAxMF81KTsKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL29iamMvRE9NQ2hhcmFjdGVyRGF0YS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NQ2hhcmFjdGVyRGF0YS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNmJmZTA0M2UzMGM1MzZi
MzM3MTNmOWQxYTJjOWI5ZDVlMDZiYzA2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvb2JqYy9ET01DaGFyYWN0ZXJEYXRhLm1tCkBAIC0wLDAgKzEsMTY1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIkRPTUNoYXJhY3RlckRhdGFJbnRlcm5hbC5oIgorCisjaW1w
b3J0ICJDaGFyYWN0ZXJEYXRhLmgiCisjaW1wb3J0ICJET01FbGVtZW50SW50ZXJuYWwuaCIKKyNp
bXBvcnQgIkRPTU5vZGVJbnRlcm5hbC5oIgorI2ltcG9ydCAiRWxlbWVudC5oIgorI2ltcG9ydCAi
RXhjZXB0aW9uSGFuZGxlcnMuaCIKKyNpbXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgor
I2ltcG9ydCAiVGhyZWFkQ2hlY2suaCIKKyNpbXBvcnQgIlVSTC5oIgorI2ltcG9ydCAiV2ViU2Ny
aXB0T2JqZWN0UHJpdmF0ZS5oIgorI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorCisjZGVmaW5lIElN
UEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q2hhcmFjdGVyRGF0YSo+KHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCisKK0BpbXBsZW1lbnRhdGlvbiBET01DaGFyYWN0
ZXJEYXRhCisKKy0gKE5TU3RyaW5nICopZGF0YQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+ZGF0YSgpOworfQorCistICh2b2lk
KXNldERhdGE6KE5TU3RyaW5nICopbmV3RGF0YQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBJTVBMLT5zZXREYXRhKG5ld0RhdGEpOworfQorCistICh1
bnNpZ25lZClsZW5ndGgKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7CisgICAgcmV0dXJuIElNUEwtPmxlbmd0aCgpOworfQorCistIChET01FbGVtZW50ICopcHJl
dmlvdXNFbGVtZW50U2libGluZworeworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKKyAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPnByZXZpb3VzRWxlbWVu
dFNpYmxpbmcoKSkpOworfQorCistIChET01FbGVtZW50ICopbmV4dEVsZW1lbnRTaWJsaW5nCit7
CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBr
aXQoV1RGOjpnZXRQdHIoSU1QTC0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpKTsKK30KKworLSAoTlNT
dHJpbmcgKilzdWJzdHJpbmdEYXRhOih1bnNpZ25lZClvZmZzZXQgbGVuZ3RoOih1bnNpZ25lZClp
bkxlbmd0aAoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAg
ICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBOU1N0cmluZyAqcmVzdWx0ID0g
SU1QTC0+c3Vic3RyaW5nRGF0YShvZmZzZXQsIGluTGVuZ3RoLCBlYyk7CisgICAgV2ViQ29yZTo6
cmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCistIChOU1N0cmlu
ZyAqKXN1YnN0cmluZ0RhdGE6KHVuc2lnbmVkKW9mZnNldCA6KHVuc2lnbmVkKWluTGVuZ3RoCit7
CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIE5TU3RyaW5nICpyZXN1bHQgPSBJTVBMLT5zdWJz
dHJpbmdEYXRhKG9mZnNldCwgaW5MZW5ndGgsIGVjKTsKKyAgICBXZWJDb3JlOjpyYWlzZU9uRE9N
RXJyb3IoZWMpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy0gKHZvaWQpYXBwZW5kRGF0YToo
TlNTdHJpbmcgKilpbkRhdGEKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7CisgICAgSU1QTC0+YXBwZW5kRGF0YShpbkRhdGEpOworfQorCistICh2b2lkKWluc2Vy
dERhdGE6KHVuc2lnbmVkKW9mZnNldCBkYXRhOihOU1N0cmluZyAqKWluRGF0YQoreworICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpFeGNlcHRp
b25Db2RlIGVjID0gMDsKKyAgICBJTVBMLT5pbnNlcnREYXRhKG9mZnNldCwgaW5EYXRhLCBlYyk7
CisgICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKK30KKworLSAodm9pZClpbnNlcnRE
YXRhOih1bnNpZ25lZClvZmZzZXQgOihOU1N0cmluZyAqKWluRGF0YQoreworICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2Rl
IGVjID0gMDsKKyAgICBJTVBMLT5pbnNlcnREYXRhKG9mZnNldCwgaW5EYXRhLCBlYyk7CisgICAg
V2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKK30KKworLSAodm9pZClkZWxldGVEYXRhOih1
bnNpZ25lZClvZmZzZXQgbGVuZ3RoOih1bnNpZ25lZClpbkxlbmd0aAoreworICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2Rl
IGVjID0gMDsKKyAgICBJTVBMLT5kZWxldGVEYXRhKG9mZnNldCwgaW5MZW5ndGgsIGVjKTsKKyAg
ICBXZWJDb3JlOjpyYWlzZU9uRE9NRXJyb3IoZWMpOworfQorCistICh2b2lkKWRlbGV0ZURhdGE6
KHVuc2lnbmVkKW9mZnNldCA6KHVuc2lnbmVkKWluTGVuZ3RoCit7CisgICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMg
PSAwOworICAgIElNUEwtPmRlbGV0ZURhdGEob2Zmc2V0LCBpbkxlbmd0aCwgZWMpOworICAgIFdl
YkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7Cit9CisKKy0gKHZvaWQpcmVwbGFjZURhdGE6KHVu
c2lnbmVkKW9mZnNldCBsZW5ndGg6KHVuc2lnbmVkKWluTGVuZ3RoIGRhdGE6KE5TU3RyaW5nICop
aW5EYXRhCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAg
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIElNUEwtPnJlcGxhY2VEYXRhKG9m
ZnNldCwgaW5MZW5ndGgsIGluRGF0YSwgZWMpOworICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJv
cihlYyk7Cit9CisKKy0gKHZvaWQpcmVwbGFjZURhdGE6KHVuc2lnbmVkKW9mZnNldCA6KHVuc2ln
bmVkKWluTGVuZ3RoIDooTlNTdHJpbmcgKilpbkRhdGEKK3sKKyAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgSU1QTC0+cmVwbGFjZURhdGEob2Zmc2V0LCBpbkxlbmd0aCwgaW5EYXRhLCBlYyk7Cisg
ICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKK30KKworLSAodm9pZClyZW1vdmUKK3sK
KyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgSU1QTC0+cmVtb3ZlKGVjKTsKKyAgICBXZWJDb3Jl
OjpyYWlzZU9uRE9NRXJyb3IoZWMpOworfQorCitAZW5kCisKK1dlYkNvcmU6OkNoYXJhY3RlckRh
dGEqIGNvcmUoRE9NQ2hhcmFjdGVyRGF0YSAqd3JhcHBlcikKK3sKKyAgICByZXR1cm4gd3JhcHBl
ciA/IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Q2hhcmFjdGVyRGF0YSo+KHdyYXBwZXItPl9p
bnRlcm5hbCkgOiAwOworfQorCitET01DaGFyYWN0ZXJEYXRhICpraXQoV2ViQ29yZTo6Q2hhcmFj
dGVyRGF0YSogdmFsdWUpCit7CisgICAgV2ViQ29yZVRocmVhZFZpb2xhdGlvbkNoZWNrUm91bmRP
bmUoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NQ2hhcmFjdGVyRGF0YSo+KGtpdChzdGF0
aWNfY2FzdDxXZWJDb3JlOjpOb2RlKj4odmFsdWUpKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNoYXJhY3RlckRhdGFJbnRlcm5hbC5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DaGFyYWN0ZXJEYXRhSW50ZXJuYWwuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kNjRiN2QwMjM4ZGFlOTI3YjNkMTBlNWIzMjU3MzdlMDQxYzgyZDNiCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01DaGFyYWN0ZXJEYXRhSW50
ZXJuYWwuaApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJDb3JlL0RPTUNoYXJhY3RlckRhdGEuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ2hhcmFjdGVyRGF0YTsKK30KKworV0VCQ09S
RV9FWFBPUlQgV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YSogY29yZShET01DaGFyYWN0ZXJEYXRhICop
OworV0VCQ09SRV9FWFBPUlQgRE9NQ2hhcmFjdGVyRGF0YSAqa2l0KFdlYkNvcmU6OkNoYXJhY3Rl
ckRhdGEqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ29t
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Db21tZW50LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzY5M2Q2NWQwMzhiMDE5ZWJjN2Y0NDEwMGUxOTY5NGI2ZDJlNzIwZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ29tbWVudC5oCkBAIC0w
LDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRE9NQ2hhcmFjdGVyRGF0YS5oPgorCitXRUJLSVRfQ0xB
U1NfQVZBSUxBQkxFX01BQygxMF80KQorV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBET01Db21t
ZW50IDogRE9NQ2hhcmFjdGVyRGF0YQorQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET01Db21tZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9ET01Db21tZW50Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3Y2Q2ZTNjY2UwOWUxMWUzNTQ5ZjhhZDQ1MThk
ZWEzNjVjNDQ3NjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTUNvbW1lbnQubW0KQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0
ICJET01Db21tZW50SW50ZXJuYWwuaCIKKworI2ltcG9ydCAiQ29tbWVudC5oIgorI2ltcG9ydCAi
RE9NTm9kZUludGVybmFsLmgiCisjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgorI2ltcG9y
dCAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCisjaW1wb3J0ICJUaHJlYWRDaGVjay5oIgorI2lt
cG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgorI2ltcG9ydCA8d3RmL0dldFB0ci5oPgor
CisjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29tbWVudCo+KHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCisKK0BpbXBsZW1lbnRhdGlvbiBET01D
b21tZW50CisKK0BlbmQKKworV2ViQ29yZTo6Q29tbWVudCogY29yZShET01Db21tZW50ICp3cmFw
cGVyKQoreworICAgIHJldHVybiB3cmFwcGVyID8gcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpD
b21tZW50Kj4od3JhcHBlci0+X2ludGVybmFsKSA6IDA7Cit9CisKK0RPTUNvbW1lbnQgKmtpdChX
ZWJDb3JlOjpDb21tZW50KiB2YWx1ZSkKK3sKKyAgICBXZWJDb3JlVGhyZWFkVmlvbGF0aW9uQ2hl
Y2tSb3VuZE9uZSgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01Db21tZW50Kj4oa2l0KHN0
YXRpY19jYXN0PFdlYkNvcmU6Ok5vZGUqPih2YWx1ZSkpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NQ29tbWVudEludGVybmFsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTUNvbW1lbnRJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxMzMz
ODM5MTk4NzA4ZDRiZmNkYzA0Y2RiMzYwZTc5YjdhNjJjNjQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUNvbW1lbnRJbnRlcm5hbC5oCkBAIC0wLDAg
KzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgPFdlYkNvcmUvRE9NQ29tbWVudC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBDb21tZW50OworfQorCitXRUJDT1JFX0VYUE9SVCBXZWJDb3JlOjpDb21tZW50KiBj
b3JlKERPTUNvbW1lbnQgKik7CitXRUJDT1JFX0VYUE9SVCBET01Db21tZW50ICpraXQoV2ViQ29y
ZTo6Q29tbWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T01ET01JbXBsZW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01E
T01JbXBsZW1lbnRhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxMGVhOWUzYjgwOWRmMjM0NzQ5MjgzZmRi
YjdhNGI5MDQ2Zjc1ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9vYmpjL0RPTURPTUltcGxlbWVudGF0aW9uLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViQ29y
ZS9ET01PYmplY3QuaD4KKworQGNsYXNzIERPTUNTU1N0eWxlU2hlZXQ7CitAY2xhc3MgRE9NRG9j
dW1lbnQ7CitAY2xhc3MgRE9NRG9jdW1lbnRUeXBlOworQGNsYXNzIERPTUhUTUxEb2N1bWVudDsK
K0BjbGFzcyBOU1N0cmluZzsKKworV0VCS0lUX0NMQVNTX0FWQUlMQUJMRV9NQUMoMTBfNCkKK1dF
QkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgRE9NSW1wbGVtZW50YXRpb24gOiBET01PYmplY3QKKy0g
KEJPT0wpaGFzRmVhdHVyZTooTlNTdHJpbmcgKilmZWF0dXJlIHZlcnNpb246KE5TU3RyaW5nICop
dmVyc2lvbiBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKKy0gKERPTURvY3VtZW50VHlwZSAq
KWNyZWF0ZURvY3VtZW50VHlwZTooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIHB1YmxpY0lkOihO
U1N0cmluZyAqKXB1YmxpY0lkIHN5c3RlbUlkOihOU1N0cmluZyAqKXN5c3RlbUlkIFdFQktJVF9B
VkFJTEFCTEVfTUFDKDEwXzUpOworLSAoRE9NRG9jdW1lbnQgKiljcmVhdGVEb2N1bWVudDooTlNT
dHJpbmcgKiluYW1lc3BhY2VVUkkgcXVhbGlmaWVkTmFtZTooTlNTdHJpbmcgKilxdWFsaWZpZWRO
YW1lIGRvY3R5cGU6KERPTURvY3VtZW50VHlwZSAqKWRvY3R5cGUgV0VCS0lUX0FWQUlMQUJMRV9N
QUMoMTBfNSk7CistIChET01DU1NTdHlsZVNoZWV0ICopY3JlYXRlQ1NTU3R5bGVTaGVldDooTlNT
dHJpbmcgKil0aXRsZSBtZWRpYTooTlNTdHJpbmcgKiltZWRpYSBXRUJLSVRfQVZBSUxBQkxFX01B
QygxMF81KTsKKy0gKERPTUhUTUxEb2N1bWVudCAqKWNyZWF0ZUhUTUxEb2N1bWVudDooTlNTdHJp
bmcgKil0aXRsZSBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKK0BlbmQKKworQGludGVyZmFj
ZSBET01JbXBsZW1lbnRhdGlvbiAoRE9NSW1wbGVtZW50YXRpb25EZXByZWNhdGVkKQorLSAoQk9P
TCloYXNGZWF0dXJlOihOU1N0cmluZyAqKWZlYXR1cmUgOihOU1N0cmluZyAqKXZlcnNpb24gV0VC
S0lUX0RFUFJFQ0FURURfTUFDKDEwXzQsIDEwXzUpOworLSAoRE9NRG9jdW1lbnRUeXBlICopY3Jl
YXRlRG9jdW1lbnRUeXBlOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgOihOU1N0cmluZyAqKXB1
YmxpY0lkIDooTlNTdHJpbmcgKilzeXN0ZW1JZCBXRUJLSVRfREVQUkVDQVRFRF9NQUMoMTBfNCwg
MTBfNSk7CistIChET01Eb2N1bWVudCAqKWNyZWF0ZURvY3VtZW50OihOU1N0cmluZyAqKW5hbWVz
cGFjZVVSSSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KERPTURvY3VtZW50VHlwZSAqKWRv
Y3R5cGUgV0VCS0lUX0RFUFJFQ0FURURfTUFDKDEwXzQsIDEwXzUpOworLSAoRE9NQ1NTU3R5bGVT
aGVldCAqKWNyZWF0ZUNTU1N0eWxlU2hlZXQ6KE5TU3RyaW5nICopdGl0bGUgOihOU1N0cmluZyAq
KW1lZGlhIFdFQktJVF9ERVBSRUNBVEVEX01BQygxMF80LCAxMF81KTsKK0BlbmQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRE9NSW1wbGVtZW50YXRpb24ubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTURPTUltcGxlbWVudGF0aW9uLm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmMwNjJhMGVkNWFkOWVmNWI3ZGZlNzEyN2JlZGRkNmJhZmRhMTJkMzgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTURPTUltcGxlbWVu
dGF0aW9uLm1tCkBAIC0wLDAgKzEsMTUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkRPTURP
TUltcGxlbWVudGF0aW9uSW50ZXJuYWwuaCIKKworI2ltcG9ydCAiQ1NTU3R5bGVTaGVldC5oIgor
I2ltcG9ydCAiRE9NQ1NTU3R5bGVTaGVldEludGVybmFsLmgiCisjaW1wb3J0ICJET01Eb2N1bWVu
dEludGVybmFsLmgiCisjaW1wb3J0ICJET01Eb2N1bWVudFR5cGVJbnRlcm5hbC5oIgorI2ltcG9y
dCAiRE9NSFRNTERvY3VtZW50SW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTUltcGxlbWVudGF0aW9u
LmgiCisjaW1wb3J0ICJET01JbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgi
CisjaW1wb3J0ICJEb2N1bWVudC5oIgorI2ltcG9ydCAiRG9jdW1lbnRUeXBlLmgiCisjaW1wb3J0
ICJFeGNlcHRpb25IYW5kbGVycy5oIgorI2ltcG9ydCAiSFRNTERvY3VtZW50LmgiCisjaW1wb3J0
ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNpbXBvcnQgIlRocmVhZENoZWNrLmgiCisjaW1w
b3J0ICJVUkwuaCIKKyNpbXBvcnQgIldlYkNvcmVPYmpDRXh0cmFzLmgiCisjaW1wb3J0ICJXZWJT
Y3JpcHRPYmplY3RQcml2YXRlLmgiCisjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisKKyNkZWZpbmUg
SU1QTCByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uKj4oX2ludGVy
bmFsKQorCitAaW1wbGVtZW50YXRpb24gRE9NSW1wbGVtZW50YXRpb24KKworLSAodm9pZClkZWFs
bG9jCit7CisgICAgaWYgKFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFsbG9jYXRlT25NYWluVGhyZWFk
KFtET01JbXBsZW1lbnRhdGlvbiBjbGFzc10sIHNlbGYpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAoX2ludGVybmFsKQorICAgICAgICBJTVBMLT5kZXJlZigpOworICAgIFtzdXBlciBkZWFs
bG9jXTsKK30KKworLSAoQk9PTCloYXNGZWF0dXJlOihOU1N0cmluZyAqKWZlYXR1cmUgdmVyc2lv
bjooTlNTdHJpbmcgKil2ZXJzaW9uCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5oYXNGZWF0dXJlKGZlYXR1cmUsIHZlcnNpb24p
OworfQorCistIChCT09MKWhhc0ZlYXR1cmU6KE5TU3RyaW5nICopZmVhdHVyZSA6KE5TU3RyaW5n
ICopdmVyc2lvbgoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
KyAgICByZXR1cm4gSU1QTC0+aGFzRmVhdHVyZShmZWF0dXJlLCB2ZXJzaW9uKTsKK30KKworLSAo
RE9NRG9jdW1lbnRUeXBlICopY3JlYXRlRG9jdW1lbnRUeXBlOihOU1N0cmluZyAqKXF1YWxpZmll
ZE5hbWUgcHVibGljSWQ6KE5TU3RyaW5nICopcHVibGljSWQgc3lzdGVtSWQ6KE5TU3RyaW5nICop
c3lzdGVtSWQKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Cisg
ICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgRE9NRG9jdW1lbnRUeXBlICpy
ZXN1bHQgPSBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Y3JlYXRlRG9jdW1lbnRUeXBlKHF1YWxpZmll
ZE5hbWUsIHB1YmxpY0lkLCBzeXN0ZW1JZCwgZWMpKSk7CisgICAgV2ViQ29yZTo6cmFpc2VPbkRP
TUVycm9yKGVjKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCistIChET01Eb2N1bWVudFR5cGUg
KiljcmVhdGVEb2N1bWVudFR5cGU6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSA6KE5TU3RyaW5n
ICopcHVibGljSWQgOihOU1N0cmluZyAqKXN5c3RlbUlkCit7CisgICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAw
OworICAgIERPTURvY3VtZW50VHlwZSAqcmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmNy
ZWF0ZURvY3VtZW50VHlwZShxdWFsaWZpZWROYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQsIGVjKSkp
OworICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworLSAoRE9NRG9jdW1lbnQgKiljcmVhdGVEb2N1bWVudDooTlNTdHJpbmcgKiluYW1lc3Bh
Y2VVUkkgcXVhbGlmaWVkTmFtZTooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIGRvY3R5cGU6KERP
TURvY3VtZW50VHlwZSAqKWRvY3R5cGUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgRE9N
RG9jdW1lbnQgKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0cihJTVBMLT5jcmVhdGVEb2N1bWVudChu
YW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIGNvcmUoZG9jdHlwZSksIGVjKSkpOworICAgIFdl
YkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLSAo
RE9NRG9jdW1lbnQgKiljcmVhdGVEb2N1bWVudDooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihO
U1N0cmluZyAqKXF1YWxpZmllZE5hbWUgOihET01Eb2N1bWVudFR5cGUgKilkb2N0eXBlCit7Cisg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIERPTURvY3VtZW50ICpyZXN1bHQgPSBraXQoV1RGOjpn
ZXRQdHIoSU1QTC0+Y3JlYXRlRG9jdW1lbnQobmFtZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lLCBj
b3JlKGRvY3R5cGUpLCBlYykpKTsKKyAgICBXZWJDb3JlOjpyYWlzZU9uRE9NRXJyb3IoZWMpOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy0gKERPTUNTU1N0eWxlU2hlZXQgKiljcmVhdGVDU1NT
dHlsZVNoZWV0OihOU1N0cmluZyAqKXRpdGxlIG1lZGlhOihOU1N0cmluZyAqKW1lZGlhCit7Cisg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIERPTUNTU1N0eWxlU2hlZXQgKnJlc3VsdCA9IGtpdChX
VEY6OmdldFB0cihJTVBMLT5jcmVhdGVDU1NTdHlsZVNoZWV0KHRpdGxlLCBtZWRpYSwgZWMpKSk7
CisgICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCistIChET01DU1NTdHlsZVNoZWV0ICopY3JlYXRlQ1NTU3R5bGVTaGVldDooTlNTdHJpbmcg
Kil0aXRsZSA6KE5TU3RyaW5nICopbWVkaWEKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAg
RE9NQ1NTU3R5bGVTaGVldCAqcmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmNyZWF0ZUNT
U1N0eWxlU2hlZXQodGl0bGUsIG1lZGlhLCBlYykpKTsKKyAgICBXZWJDb3JlOjpyYWlzZU9uRE9N
RXJyb3IoZWMpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy0gKERPTUhUTUxEb2N1bWVudCAq
KWNyZWF0ZUhUTUxEb2N1bWVudDooTlNTdHJpbmcgKil0aXRsZQoreworICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElN
UEwtPmNyZWF0ZUhUTUxEb2N1bWVudCh0aXRsZSkpKTsKK30KKworQGVuZAorCitXZWJDb3JlOjpE
T01JbXBsZW1lbnRhdGlvbiogY29yZShET01JbXBsZW1lbnRhdGlvbiAqd3JhcHBlcikKK3sKKyAg
ICByZXR1cm4gd3JhcHBlciA/IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RE9NSW1wbGVtZW50
YXRpb24qPih3cmFwcGVyLT5faW50ZXJuYWwpIDogMDsKK30KKworRE9NSW1wbGVtZW50YXRpb24g
KmtpdChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbiogdmFsdWUpCit7CisgICAgV2ViQ29yZVRo
cmVhZFZpb2xhdGlvbkNoZWNrUm91bmRPbmUoKTsKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICBy
ZXR1cm4gbmlsOworICAgIGlmIChET01JbXBsZW1lbnRhdGlvbiAqd3JhcHBlciA9IGdldERPTVdy
YXBwZXIodmFsdWUpKQorICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVh
c2VdOworICAgIERPTUltcGxlbWVudGF0aW9uICp3cmFwcGVyID0gW1tET01JbXBsZW1lbnRhdGlv
biBhbGxvY10gX2luaXRdOworICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7CisgICAgdmFsdWUtPnJlZigpOworICAgIGFk
ZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOworICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVs
ZWFzZV07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTURP
TUltcGxlbWVudGF0aW9uSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NRE9NSW1wbGVtZW50YXRpb25JbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkNzk1NjNiNGQwYzgy
ZDI5NGFmMjU0NWUwZjQ0Y2Q5ODVlNWFkMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTURPTUltcGxlbWVudGF0aW9uSW50ZXJuYWwuaApAQCAtMCww
ICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0IDxXZWJDb3JlL0RPTURPTUltcGxlbWVudGF0aW9uLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIERPTUltcGxlbWVudGF0aW9uOworfQorCitXRUJDT1JFX0VYUE9S
VCBXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbiogY29yZShET01JbXBsZW1lbnRhdGlvbiAqKTsK
K1dFQkNPUkVfRVhQT1JUIERPTUltcGxlbWVudGF0aW9uICpraXQoV2ViQ29yZTo6RE9NSW1wbGVt
ZW50YXRpb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
RG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRG9jdW1lbnQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43NmJlYzI0OTk5MzA3MzM3NDI1MGI5NWRhMDQ1NjhmNTljNDQ4YWRhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Eb2N1bWVudC5o
CkBAIC0wLDAgKzEsMTQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJDb3JlL0RPTU5vZGUuaD4KKworQGNsYXNzIERPTUFi
c3RyYWN0VmlldzsKK0BjbGFzcyBET01BdHRyOworQGNsYXNzIERPTUNEQVRBU2VjdGlvbjsKK0Bj
bGFzcyBET01DU1NSdWxlTGlzdDsKK0BjbGFzcyBET01DU1NTdHlsZURlY2xhcmF0aW9uOworQGNs
YXNzIERPTUNvbW1lbnQ7CitAY2xhc3MgRE9NRG9jdW1lbnRGcmFnbWVudDsKK0BjbGFzcyBET01E
b2N1bWVudFR5cGU7CitAY2xhc3MgRE9NRWxlbWVudDsKK0BjbGFzcyBET01FbnRpdHlSZWZlcmVu
Y2U7CitAY2xhc3MgRE9NRXZlbnQ7CitAY2xhc3MgRE9NSFRNTENvbGxlY3Rpb247CitAY2xhc3Mg
RE9NSFRNTEVsZW1lbnQ7CitAY2xhc3MgRE9NSW1wbGVtZW50YXRpb247CitAY2xhc3MgRE9NTm9k
ZTsKK0BjbGFzcyBET01Ob2RlSXRlcmF0b3I7CitAY2xhc3MgRE9NTm9kZUxpc3Q7CitAY2xhc3Mg
RE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uOworQGNsYXNzIERPTVJhbmdlOworQGNsYXNzIERPTVN0
eWxlU2hlZXRMaXN0OworQGNsYXNzIERPTVRleHQ7CitAY2xhc3MgRE9NVHJlZVdhbGtlcjsKK0Bj
bGFzcyBET01YUGF0aEV4cHJlc3Npb247CitAY2xhc3MgRE9NWFBhdGhSZXN1bHQ7CitAY2xhc3Mg
TlNTdHJpbmc7CitAcHJvdG9jb2wgRE9NTm9kZUZpbHRlcjsKK0Bwcm90b2NvbCBET01YUGF0aE5T
UmVzb2x2ZXI7CisKK1dFQktJVF9DTEFTU19BVkFJTEFCTEVfTUFDKDEwXzQpCitXRUJDT1JFX0VY
UE9SVCBAaW50ZXJmYWNlIERPTURvY3VtZW50IDogRE9NTm9kZQorQHByb3BlcnR5IChyZWFkb25s
eSwgc3Ryb25nKSBET01Eb2N1bWVudFR5cGUgKmRvY3R5cGU7CitAcHJvcGVydHkgKHJlYWRvbmx5
LCBzdHJvbmcpIERPTUltcGxlbWVudGF0aW9uICppbXBsZW1lbnRhdGlvbjsKK0Bwcm9wZXJ0eSAo
cmVhZG9ubHksIHN0cm9uZykgRE9NRWxlbWVudCAqZG9jdW1lbnRFbGVtZW50OworQHByb3BlcnR5
IChyZWFkb25seSwgY29weSkgTlNTdHJpbmcgKmlucHV0RW5jb2RpbmcgV0VCS0lUX0FWQUlMQUJM
RV9NQUMoMTBfNSk7CitAcHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqeG1sRW5j
b2RpbmcgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7CitAcHJvcGVydHkgKGNvcHkpIE5TU3Ry
aW5nICp4bWxWZXJzaW9uIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOworQHByb3BlcnR5IEJP
T0wgeG1sU3RhbmRhbG9uZSBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKK0Bwcm9wZXJ0eSAo
Y29weSkgTlNTdHJpbmcgKmRvY3VtZW50VVJJIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwor
QHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01BYnN0cmFjdFZpZXcgKmRlZmF1bHRWaWV3
OworQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01TdHlsZVNoZWV0TGlzdCAqc3R5bGVT
aGVldHM7CitAcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICp0aXRsZTsKK0Bwcm9wZXJ0eSAocmVh
ZG9ubHksIGNvcHkpIE5TU3RyaW5nICpyZWZlcnJlcjsKK0Bwcm9wZXJ0eSAocmVhZG9ubHksIGNv
cHkpIE5TU3RyaW5nICpkb21haW47CitAcHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1N0cmlu
ZyAqVVJMOworQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqY29va2llOworQHByb3BlcnR5IChz
dHJvbmcpIERPTUhUTUxFbGVtZW50ICpib2R5OworQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25n
KSBET01IVE1MQ29sbGVjdGlvbiAqaW1hZ2VzOworQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25n
KSBET01IVE1MQ29sbGVjdGlvbiAqYXBwbGV0czsKK0Bwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9u
ZykgRE9NSFRNTENvbGxlY3Rpb24gKmxpbmtzOworQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25n
KSBET01IVE1MQ29sbGVjdGlvbiAqZm9ybXM7CitAcHJvcGVydHkgKHJlYWRvbmx5LCBzdHJvbmcp
IERPTUhUTUxDb2xsZWN0aW9uICphbmNob3JzOworQHByb3BlcnR5IChyZWFkb25seSwgY29weSkg
TlNTdHJpbmcgKmxhc3RNb2RpZmllZCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF82KTsKK0Bwcm9w
ZXJ0eSAoY29weSkgTlNTdHJpbmcgKmNoYXJzZXQgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7
CitAcHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqZGVmYXVsdENoYXJzZXQgV0VC
S0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7CitAcHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1N0
cmluZyAqcmVhZHlTdGF0ZSBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKK0Bwcm9wZXJ0eSAo
cmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpjaGFyYWN0ZXJTZXQgV0VCS0lUX0FWQUlMQUJMRV9N
QUMoMTBfNSk7CitAcHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqcHJlZmVycmVk
U3R5bGVzaGVldFNldCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKK0Bwcm9wZXJ0eSAoY29w
eSkgTlNTdHJpbmcgKnNlbGVjdGVkU3R5bGVzaGVldFNldCBXRUJLSVRfQVZBSUxBQkxFX01BQygx
MF81KTsKK0Bwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9NRWxlbWVudCAqYWN0aXZlRWxl
bWVudCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF82KTsKKworLSAoRE9NRWxlbWVudCAqKWNyZWF0
ZUVsZW1lbnQ6KE5TU3RyaW5nICopdGFnTmFtZTsKKy0gKERPTURvY3VtZW50RnJhZ21lbnQgKilj
cmVhdGVEb2N1bWVudEZyYWdtZW50OworLSAoRE9NVGV4dCAqKWNyZWF0ZVRleHROb2RlOihOU1N0
cmluZyAqKWRhdGE7CistIChET01Db21tZW50ICopY3JlYXRlQ29tbWVudDooTlNTdHJpbmcgKilk
YXRhOworLSAoRE9NQ0RBVEFTZWN0aW9uICopY3JlYXRlQ0RBVEFTZWN0aW9uOihOU1N0cmluZyAq
KWRhdGE7CistIChET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKiljcmVhdGVQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb246KE5TU3RyaW5nICopdGFyZ2V0IGRhdGE6KE5TU3RyaW5nICopZGF0YSBXRUJLSVRf
QVZBSUxBQkxFX01BQygxMF81KTsKKy0gKERPTUF0dHIgKiljcmVhdGVBdHRyaWJ1dGU6KE5TU3Ry
aW5nICopbmFtZTsKKy0gKERPTUVudGl0eVJlZmVyZW5jZSAqKWNyZWF0ZUVudGl0eVJlZmVyZW5j
ZTooTlNTdHJpbmcgKiluYW1lOworLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFt
ZTooTlNTdHJpbmcgKil0YWduYW1lOworLSAoRE9NTm9kZSAqKWltcG9ydE5vZGU6KERPTU5vZGUg
KilpbXBvcnRlZE5vZGUgZGVlcDooQk9PTClkZWVwIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUp
OworLSAoRE9NRWxlbWVudCAqKWNyZWF0ZUVsZW1lbnROUzooTlNTdHJpbmcgKiluYW1lc3BhY2VV
UkkgcXVhbGlmaWVkTmFtZTooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIFdFQktJVF9BVkFJTEFC
TEVfTUFDKDEwXzUpOworLSAoRE9NQXR0ciAqKWNyZWF0ZUF0dHJpYnV0ZU5TOihOU1N0cmluZyAq
KW5hbWVzcGFjZVVSSSBxdWFsaWZpZWROYW1lOihOU1N0cmluZyAqKXF1YWxpZmllZE5hbWUgV0VC
S0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7CistIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlU
YWdOYW1lTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIGxvY2FsTmFtZTooTlNTdHJpbmcgKils
b2NhbE5hbWUgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7CistIChET01Ob2RlICopYWRvcHRO
b2RlOihET01Ob2RlICopc291cmNlIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOworLSAoRE9N
RXZlbnQgKiljcmVhdGVFdmVudDooTlNTdHJpbmcgKilldmVudFR5cGU7CistIChET01SYW5nZSAq
KWNyZWF0ZVJhbmdlOworLSAoRE9NTm9kZUl0ZXJhdG9yICopY3JlYXRlTm9kZUl0ZXJhdG9yOihE
T01Ob2RlICopcm9vdCB3aGF0VG9TaG93Oih1bnNpZ25lZCl3aGF0VG9TaG93IGZpbHRlcjooaWQg
PERPTU5vZGVGaWx0ZXI+KWZpbHRlciBleHBhbmRFbnRpdHlSZWZlcmVuY2VzOihCT09MKWV4cGFu
ZEVudGl0eVJlZmVyZW5jZXMgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7CistIChET01UcmVl
V2Fsa2VyICopY3JlYXRlVHJlZVdhbGtlcjooRE9NTm9kZSAqKXJvb3Qgd2hhdFRvU2hvdzoodW5z
aWduZWQpd2hhdFRvU2hvdyBmaWx0ZXI6KGlkIDxET01Ob2RlRmlsdGVyPilmaWx0ZXIgZXhwYW5k
RW50aXR5UmVmZXJlbmNlczooQk9PTClleHBhbmRFbnRpdHlSZWZlcmVuY2VzIFdFQktJVF9BVkFJ
TEFCTEVfTUFDKDEwXzUpOworLSAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKWdldE92ZXJyaWRl
U3R5bGU6KERPTUVsZW1lbnQgKillbGVtZW50IHBzZXVkb0VsZW1lbnQ6KE5TU3RyaW5nICopcHNl
dWRvRWxlbWVudCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKKy0gKERPTVhQYXRoRXhwcmVz
c2lvbiAqKWNyZWF0ZUV4cHJlc3Npb246KE5TU3RyaW5nICopZXhwcmVzc2lvbiByZXNvbHZlcjoo
aWQgPERPTVhQYXRoTlNSZXNvbHZlcj4pcmVzb2x2ZXIgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBf
NSk7CistIChpZCA8RE9NWFBhdGhOU1Jlc29sdmVyPiljcmVhdGVOU1Jlc29sdmVyOihET01Ob2Rl
ICopbm9kZVJlc29sdmVyIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOworLSAoRE9NWFBhdGhS
ZXN1bHQgKilldmFsdWF0ZTooTlNTdHJpbmcgKilleHByZXNzaW9uIGNvbnRleHROb2RlOihET01O
b2RlICopY29udGV4dE5vZGUgcmVzb2x2ZXI6KGlkIDxET01YUGF0aE5TUmVzb2x2ZXI+KXJlc29s
dmVyIHR5cGU6KHVuc2lnbmVkIHNob3J0KXR5cGUgaW5SZXN1bHQ6KERPTVhQYXRoUmVzdWx0ICop
aW5SZXN1bHQgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7CistIChCT09MKWV4ZWNDb21tYW5k
OihOU1N0cmluZyAqKWNvbW1hbmQgdXNlckludGVyZmFjZTooQk9PTCl1c2VySW50ZXJmYWNlIHZh
bHVlOihOU1N0cmluZyAqKXZhbHVlIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOworLSAoQk9P
TClleGVjQ29tbWFuZDooTlNTdHJpbmcgKiljb21tYW5kIHVzZXJJbnRlcmZhY2U6KEJPT0wpdXNl
ckludGVyZmFjZSBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKKy0gKEJPT0wpZXhlY0NvbW1h
bmQ6KE5TU3RyaW5nICopY29tbWFuZCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKKy0gKEJP
T0wpcXVlcnlDb21tYW5kRW5hYmxlZDooTlNTdHJpbmcgKiljb21tYW5kIFdFQktJVF9BVkFJTEFC
TEVfTUFDKDEwXzUpOworLSAoQk9PTClxdWVyeUNvbW1hbmRJbmRldGVybTooTlNTdHJpbmcgKilj
b21tYW5kIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOworLSAoQk9PTClxdWVyeUNvbW1hbmRT
dGF0ZTooTlNTdHJpbmcgKiljb21tYW5kIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOworLSAo
Qk9PTClxdWVyeUNvbW1hbmRTdXBwb3J0ZWQ6KE5TU3RyaW5nICopY29tbWFuZCBXRUJLSVRfQVZB
SUxBQkxFX01BQygxMF81KTsKKy0gKE5TU3RyaW5nICopcXVlcnlDb21tYW5kVmFsdWU6KE5TU3Ry
aW5nICopY29tbWFuZCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKKy0gKERPTU5vZGVMaXN0
ICopZ2V0RWxlbWVudHNCeU5hbWU6KE5TU3RyaW5nICopZWxlbWVudE5hbWU7CistIChET01FbGVt
ZW50ICopZWxlbWVudEZyb21Qb2ludDooaW50KXggeTooaW50KXkgV0VCS0lUX0FWQUlMQUJMRV9N
QUMoMTBfNSk7CistIChET01DU1NTdHlsZURlY2xhcmF0aW9uICopY3JlYXRlQ1NTU3R5bGVEZWNs
YXJhdGlvbiBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKKy0gKERPTUNTU1N0eWxlRGVjbGFy
YXRpb24gKilnZXRDb21wdXRlZFN0eWxlOihET01FbGVtZW50ICopZWxlbWVudCBwc2V1ZG9FbGVt
ZW50OihOU1N0cmluZyAqKXBzZXVkb0VsZW1lbnQgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7
CistIChET01DU1NSdWxlTGlzdCAqKWdldE1hdGNoZWRDU1NSdWxlczooRE9NRWxlbWVudCAqKWVs
ZW1lbnQgcHNldWRvRWxlbWVudDooTlNTdHJpbmcgKilwc2V1ZG9FbGVtZW50IFdFQktJVF9BVkFJ
TEFCTEVfTUFDKDEwXzUpOworLSAoRE9NQ1NTUnVsZUxpc3QgKilnZXRNYXRjaGVkQ1NTUnVsZXM6
KERPTUVsZW1lbnQgKillbGVtZW50IHBzZXVkb0VsZW1lbnQ6KE5TU3RyaW5nICopcHNldWRvRWxl
bWVudCBhdXRob3JPbmx5OihCT09MKWF1dGhvck9ubHkgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBf
NSk7CistIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlDbGFzc05hbWU6KE5TU3RyaW5nICop
Y2xhc3NOYW1lcyBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF82KTsKKy0gKEJPT0wpaGFzRm9jdXMg
V0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNik7CisjaWYgIVRBUkdFVF9PU19JUEhPTkUKKy0gKHZv
aWQpd2Via2l0Q2FuY2VsRnVsbFNjcmVlbiBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF82KTsKKyNl
bmRpZgorLSAoRE9NRWxlbWVudCAqKWdldEVsZW1lbnRCeUlkOihOU1N0cmluZyAqKWVsZW1lbnRJ
ZDsKKy0gKERPTUVsZW1lbnQgKilxdWVyeVNlbGVjdG9yOihOU1N0cmluZyAqKXNlbGVjdG9ycyBX
RUJLSVRfQVZBSUxBQkxFX01BQygxMF82KTsKKy0gKERPTU5vZGVMaXN0ICopcXVlcnlTZWxlY3Rv
ckFsbDooTlNTdHJpbmcgKilzZWxlY3RvcnMgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNik7CitA
ZW5kCisKK0BpbnRlcmZhY2UgRE9NRG9jdW1lbnQgKERPTURvY3VtZW50RGVwcmVjYXRlZCkKKy0g
KERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqKWNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbjoo
TlNTdHJpbmcgKil0YXJnZXQgOihOU1N0cmluZyAqKWRhdGEgV0VCS0lUX0RFUFJFQ0FURURfTUFD
KDEwXzQsIDEwXzUpOworLSAoRE9NTm9kZSAqKWltcG9ydE5vZGU6KERPTU5vZGUgKilpbXBvcnRl
ZE5vZGUgOihCT09MKWRlZXAgV0VCS0lUX0RFUFJFQ0FURURfTUFDKDEwXzQsIDEwXzUpOworLSAo
RE9NRWxlbWVudCAqKWNyZWF0ZUVsZW1lbnROUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihO
U1N0cmluZyAqKXF1YWxpZmllZE5hbWUgV0VCS0lUX0RFUFJFQ0FURURfTUFDKDEwXzQsIDEwXzUp
OworLSAoRE9NQXR0ciAqKWNyZWF0ZUF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVS
SSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZSBXRUJLSVRfREVQUkVDQVRFRF9NQUMoMTBfNCwg
MTBfNSk7CistIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lTlM6KE5TU3RyaW5n
ICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUgV0VCS0lUX0RFUFJFQ0FURURf
TUFDKDEwXzQsIDEwXzUpOworLSAoRE9NTm9kZUl0ZXJhdG9yICopY3JlYXRlTm9kZUl0ZXJhdG9y
OihET01Ob2RlICopcm9vdCA6KHVuc2lnbmVkKXdoYXRUb1Nob3cgOihpZCA8RE9NTm9kZUZpbHRl
cj4pZmlsdGVyIDooQk9PTClleHBhbmRFbnRpdHlSZWZlcmVuY2VzIFdFQktJVF9ERVBSRUNBVEVE
X01BQygxMF80LCAxMF81KTsKKy0gKERPTVRyZWVXYWxrZXIgKiljcmVhdGVUcmVlV2Fsa2VyOihE
T01Ob2RlICopcm9vdCA6KHVuc2lnbmVkKXdoYXRUb1Nob3cgOihpZCA8RE9NTm9kZUZpbHRlcj4p
ZmlsdGVyIDooQk9PTClleHBhbmRFbnRpdHlSZWZlcmVuY2VzIFdFQktJVF9ERVBSRUNBVEVEX01B
QygxMF80LCAxMF81KTsKKy0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilnZXRPdmVycmlkZVN0
eWxlOihET01FbGVtZW50ICopZWxlbWVudCA6KE5TU3RyaW5nICopcHNldWRvRWxlbWVudCBXRUJL
SVRfREVQUkVDQVRFRF9NQUMoMTBfNCwgMTBfNSk7CistIChET01YUGF0aEV4cHJlc3Npb24gKilj
cmVhdGVFeHByZXNzaW9uOihOU1N0cmluZyAqKWV4cHJlc3Npb24gOihpZCA8RE9NWFBhdGhOU1Jl
c29sdmVyPilyZXNvbHZlciBXRUJLSVRfREVQUkVDQVRFRF9NQUMoMTBfNSwgMTBfNSk7CistIChE
T01YUGF0aFJlc3VsdCAqKWV2YWx1YXRlOihOU1N0cmluZyAqKWV4cHJlc3Npb24gOihET01Ob2Rl
ICopY29udGV4dE5vZGUgOihpZCA8RE9NWFBhdGhOU1Jlc29sdmVyPilyZXNvbHZlciA6KHVuc2ln
bmVkIHNob3J0KXR5cGUgOihET01YUGF0aFJlc3VsdCAqKWluUmVzdWx0IFdFQktJVF9ERVBSRUNB
VEVEX01BQygxMF81LCAxMF81KTsKKy0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilnZXRDb21w
dXRlZFN0eWxlOihET01FbGVtZW50ICopZWxlbWVudCA6KE5TU3RyaW5nICopcHNldWRvRWxlbWVu
dCBXRUJLSVRfREVQUkVDQVRFRF9NQUMoMTBfNCwgMTBfNSk7CitAZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTURvY3VtZW50Lm1tIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvb2JqYy9ET01Eb2N1bWVudC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNWNiNzRhMDdiNTUy
YTY3MzI1YWY4ZmQwNzc4OGRiNTczNGQ1YjQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Eb2N1bWVudC5tbQpAQCAtMCwwICsxLDk1NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJET01Eb2N1bWVudEludGVybmFsLmgiCisKKyNpbXBvcnQgIkF0
dHIuaCIKKyNpbXBvcnQgIkNEQVRBU2VjdGlvbi5oIgorI2ltcG9ydCAiQ1NTUnVsZUxpc3QuaCIK
KyNpbXBvcnQgIkNTU1N0eWxlRGVjbGFyYXRpb24uaCIKKyNpbXBvcnQgIkNvbW1lbnQuaCIKKyNp
bXBvcnQgIkRPTUFic3RyYWN0Vmlld0ludGVybmFsLmgiCisjaW1wb3J0ICJET01BdHRySW50ZXJu
YWwuaCIKKyNpbXBvcnQgIkRPTUNEQVRBU2VjdGlvbkludGVybmFsLmgiCisjaW1wb3J0ICJET01D
U1NSdWxlTGlzdEludGVybmFsLmgiCisjaW1wb3J0ICJET01DU1NTdHlsZURlY2xhcmF0aW9uSW50
ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTUNvbW1lbnRJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NQ3Vz
dG9tWFBhdGhOU1Jlc29sdmVyLmgiCisjaW1wb3J0ICJET01ET01JbXBsZW1lbnRhdGlvbkludGVy
bmFsLmgiCisjaW1wb3J0ICJET01Eb2N1bWVudEZyYWdtZW50SW50ZXJuYWwuaCIKKyNpbXBvcnQg
IkRPTURvY3VtZW50VHlwZUludGVybmFsLmgiCisjaW1wb3J0ICJET01FbGVtZW50SW50ZXJuYWwu
aCIKKyNpbXBvcnQgIkRPTUVudGl0eVJlZmVyZW5jZUludGVybmFsLmgiCisjaW1wb3J0ICJET01F
dmVudEludGVybmFsLmgiCisjaW1wb3J0ICJET01IVE1MQ29sbGVjdGlvbkludGVybmFsLmgiCisj
aW1wb3J0ICJET01IVE1MRWxlbWVudEludGVybmFsLmgiCisjaW1wb3J0ICJET01IVE1MSGVhZEVs
ZW1lbnRJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NSFRNTFNjcmlwdEVsZW1lbnRJbnRlcm5hbC5o
IgorI2ltcG9ydCAiRE9NSW1wbGVtZW50YXRpb24uaCIKKyNpbXBvcnQgIkRPTUludGVybmFsLmgi
CisjaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTU5vZGVJdGVyYXRvcklu
dGVybmFsLmgiCisjaW1wb3J0ICJET01Ob2RlTGlzdEludGVybmFsLmgiCisjaW1wb3J0ICJET01Q
cm9jZXNzaW5nSW5zdHJ1Y3Rpb25JbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NUmFuZ2VJbnRlcm5h
bC5oIgorI2ltcG9ydCAiRE9NU3R5bGVTaGVldExpc3RJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9N
VGV4dEludGVybmFsLmgiCisjaW1wb3J0ICJET01UcmVlV2Fsa2VySW50ZXJuYWwuaCIKKyNpbXBv
cnQgIkRPTVdpbmRvdy5oIgorI2ltcG9ydCAiRE9NWFBhdGhFeHByZXNzaW9uSW50ZXJuYWwuaCIK
KyNpbXBvcnQgIkRPTVhQYXRoUmVzdWx0SW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRvY3VtZW50Lmgi
CisjaW1wb3J0ICJEb2N1bWVudEZyYWdtZW50LmgiCisjaW1wb3J0ICJEb2N1bWVudFR5cGUuaCIK
KyNpbXBvcnQgIkVsZW1lbnQuaCIKKyNpbXBvcnQgIkVudGl0eVJlZmVyZW5jZS5oIgorI2ltcG9y
dCAiRXZlbnQuaCIKKyNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCisjaW1wb3J0ICJIVE1M
Q29sbGVjdGlvbi5oIgorI2ltcG9ydCAiSFRNTEVsZW1lbnQuaCIKKyNpbXBvcnQgIkhUTUxIZWFk
RWxlbWVudC5oIgorI2ltcG9ydCAiSFRNTFNjcmlwdEVsZW1lbnQuaCIKKyNpbXBvcnQgIkpTTWFp
blRocmVhZEV4ZWNTdGF0ZS5oIgorI2ltcG9ydCAiTmFtZU5vZGVMaXN0LmgiCisjaW1wb3J0ICJO
YXRpdmVOb2RlRmlsdGVyLmgiCisjaW1wb3J0ICJOb2RlLmgiCisjaW1wb3J0ICJOb2RlSXRlcmF0
b3IuaCIKKyNpbXBvcnQgIk5vZGVMaXN0LmgiCisjaW1wb3J0ICJPYmpDTm9kZUZpbHRlckNvbmRp
dGlvbi5oIgorI2ltcG9ydCAiUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCisjaW1wb3J0ICJSYW5n
ZS5oIgorI2ltcG9ydCAiU3R5bGVQcm9wZXJ0aWVzLmgiCisjaW1wb3J0ICJTdHlsZVNoZWV0TGlz
dC5oIgorI2ltcG9ydCAiVGV4dC5oIgorI2ltcG9ydCAiVGhyZWFkQ2hlY2suaCIKKyNpbXBvcnQg
IlRyZWVXYWxrZXIuaCIKKyNpbXBvcnQgIlVSTC5oIgorI2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0
UHJpdmF0ZS5oIgorI2ltcG9ydCAiWFBhdGhFeHByZXNzaW9uLmgiCisjaW1wb3J0ICJYUGF0aE5T
UmVzb2x2ZXIuaCIKKyNpbXBvcnQgIlhQYXRoUmVzdWx0LmgiCisjaW1wb3J0IDx3dGYvR2V0UHRy
Lmg+CisKKyNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEb2N1bWVudCo+KHJlaW50
ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCisKK0BpbXBsZW1lbnRhdGlv
biBET01Eb2N1bWVudAorCistIChET01Eb2N1bWVudFR5cGUgKilkb2N0eXBlCit7CisgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBraXQoV1RGOjpn
ZXRQdHIoSU1QTC0+ZG9jdHlwZSgpKSk7Cit9CisKKy0gKERPTUltcGxlbWVudGF0aW9uICopaW1w
bGVtZW50YXRpb24KK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
CisgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5pbXBsZW1lbnRhdGlvbigpKSk7Cit9
CisKKy0gKERPTUVsZW1lbnQgKilkb2N1bWVudEVsZW1lbnQKK3sKKyAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBM
LT5kb2N1bWVudEVsZW1lbnQoKSkpOworfQorCistIChOU1N0cmluZyAqKWlucHV0RW5jb2RpbmcK
K3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJu
IElNUEwtPmNoYXJhY3RlclNldFdpdGhVVEY4RmFsbGJhY2soKTsKK30KKworLSAoTlNTdHJpbmcg
Kil4bWxFbmNvZGluZworeworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKKyAgICByZXR1cm4gSU1QTC0+eG1sRW5jb2RpbmcoKTsKK30KKworLSAoTlNTdHJpbmcgKil4
bWxWZXJzaW9uCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwor
ICAgIHJldHVybiBJTVBMLT54bWxWZXJzaW9uKCk7Cit9CisKKy0gKHZvaWQpc2V0WG1sVmVyc2lv
bjooTlNTdHJpbmcgKiluZXdYbWxWZXJzaW9uCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAg
IElNUEwtPnNldFhNTFZlcnNpb24obmV3WG1sVmVyc2lvbiwgZWMpOworICAgIFdlYkNvcmU6OnJh
aXNlT25ET01FcnJvcihlYyk7Cit9CisKKy0gKEJPT0wpeG1sU3RhbmRhbG9uZQoreworICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+eG1s
U3RhbmRhbG9uZSgpOworfQorCistICh2b2lkKXNldFhtbFN0YW5kYWxvbmU6KEJPT0wpbmV3WG1s
U3RhbmRhbG9uZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
KyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBJTVBMLT5zZXRYTUxTdGFu
ZGFsb25lKG5ld1htbFN0YW5kYWxvbmUsIGVjKTsKKyAgICBXZWJDb3JlOjpyYWlzZU9uRE9NRXJy
b3IoZWMpOworfQorCistIChOU1N0cmluZyAqKWRvY3VtZW50VVJJCit7CisgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5kb2N1bWVudFVS
SSgpOworfQorCistICh2b2lkKXNldERvY3VtZW50VVJJOihOU1N0cmluZyAqKW5ld0RvY3VtZW50
VVJJCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIElN
UEwtPnNldERvY3VtZW50VVJJKG5ld0RvY3VtZW50VVJJKTsKK30KKworLSAoRE9NQWJzdHJhY3RW
aWV3ICopZGVmYXVsdFZpZXcKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7CisgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5kZWZhdWx0VmlldygpKSk7
Cit9CisKKy0gKERPTVN0eWxlU2hlZXRMaXN0ICopc3R5bGVTaGVldHMKK3sKKyAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0
cihJTVBMLT5zdHlsZVNoZWV0cygpKSk7Cit9CisKKy0gKE5TU3RyaW5nICopY29udGVudFR5cGUK
K3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJu
IElNUEwtPmNvbnRlbnRUeXBlKCk7Cit9CisKKy0gKE5TU3RyaW5nICopdGl0bGUKK3sKKyAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPnRp
dGxlKCk7Cit9CisKKy0gKHZvaWQpc2V0VGl0bGU6KE5TU3RyaW5nICopbmV3VGl0bGUKK3sKKyAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6RXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgSU1QTC0+c2V0VGl0bGUobmV3VGl0bGUsIGVjKTsKKyAg
ICBXZWJDb3JlOjpyYWlzZU9uRE9NRXJyb3IoZWMpOworfQorCistIChOU1N0cmluZyAqKWRpcgor
eworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4g
SU1QTC0+ZGlyKCk7Cit9CisKKy0gKHZvaWQpc2V0RGlyOihOU1N0cmluZyAqKW5ld0Rpcgorewor
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBJTVBMLT5zZXRE
aXIobmV3RGlyKTsKK30KKworLSAoTlNTdHJpbmcgKilyZWZlcnJlcgoreworICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+cmVmZXJyZXIo
KTsKK30KKworLSAoTlNTdHJpbmcgKilkb21haW4KK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPmRvbWFpbigpOworfQorCistIChO
U1N0cmluZyAqKVVSTAoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKKyAgICByZXR1cm4gSU1QTC0+dXJsRm9yQmluZGluZ3MoKTsKK30KKworLSAoTlNTdHJpbmcg
Kiljb29raWUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Cisg
ICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgTlNTdHJpbmcgKnJlc3VsdCA9
IElNUEwtPmNvb2tpZShlYyk7CisgICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCistICh2b2lkKXNldENvb2tpZTooTlNTdHJpbmcgKiluZXdD
b29raWUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAg
V2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgSU1QTC0+c2V0Q29va2llKG5ld0Nv
b2tpZSwgZWMpOworICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7Cit9CisKKy0gKERP
TUhUTUxFbGVtZW50ICopYm9keQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKKyAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmJvZHlPckZyYW1lc2V0
KCkpKTsKK30KKworLSAodm9pZClzZXRCb2R5OihET01IVE1MRWxlbWVudCAqKW5ld0JvZHkKK3sK
KyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgQVNTRVJUKG5l
d0JvZHkpOworCisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgSU1QTC0+
c2V0Qm9keU9yRnJhbWVzZXQoY29yZShuZXdCb2R5KSwgZWMpOworICAgIFdlYkNvcmU6OnJhaXNl
T25ET01FcnJvcihlYyk7Cit9CisKKy0gKERPTUhUTUxIZWFkRWxlbWVudCAqKWhlYWQKK3sKKyAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIGtpdChX
VEY6OmdldFB0cihJTVBMLT5oZWFkKCkpKTsKK30KKworLSAoRE9NSFRNTENvbGxlY3Rpb24gKilp
bWFnZXMKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAg
cmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5pbWFnZXMoKSkpOworfQorCistIChET01IVE1M
Q29sbGVjdGlvbiAqKWFwcGxldHMKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7CisgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5hcHBsZXRzKCkpKTsK
K30KKworLSAoRE9NSFRNTENvbGxlY3Rpb24gKilsaW5rcworeworICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwt
PmxpbmtzKCkpKTsKK30KKworLSAoRE9NSFRNTENvbGxlY3Rpb24gKilmb3JtcworeworICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4ga2l0KFdURjo6
Z2V0UHRyKElNUEwtPmZvcm1zKCkpKTsKK30KKworLSAoRE9NSFRNTENvbGxlY3Rpb24gKilhbmNo
b3JzCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJl
dHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+YW5jaG9ycygpKSk7Cit9CisKKy0gKE5TU3RyaW5n
ICopbGFzdE1vZGlmaWVkCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOworICAgIHJldHVybiBJTVBMLT5sYXN0TW9kaWZpZWQoKTsKK30KKworLSAoTlNTdHJpbmcg
KiljaGFyc2V0Cit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwor
ICAgIHJldHVybiBJTVBMLT5jaGFyc2V0KCk7Cit9CisKKy0gKHZvaWQpc2V0Q2hhcnNldDooTlNT
dHJpbmcgKiluZXdDaGFyc2V0Cit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOworICAgIElNUEwtPnNldENoYXJzZXQobmV3Q2hhcnNldCk7Cit9CisKKy0gKE5TU3Ry
aW5nICopZGVmYXVsdENoYXJzZXQKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPmRlZmF1bHRDaGFyc2V0KCk7Cit9CisKKy0gKE5T
U3RyaW5nICopcmVhZHlTdGF0ZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+cmVhZHlTdGF0ZSgpOworfQorCistIChOU1N0cmlu
ZyAqKWNoYXJhY3RlclNldAoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+Y2hhcmFjdGVyU2V0V2l0aFVURjhGYWxsYmFjaygpOwor
fQorCistIChOU1N0cmluZyAqKXByZWZlcnJlZFN0eWxlc2hlZXRTZXQKK3sKKyAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPnByZWZlcnJl
ZFN0eWxlc2hlZXRTZXQoKTsKK30KKworLSAoTlNTdHJpbmcgKilzZWxlY3RlZFN0eWxlc2hlZXRT
ZXQKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0
dXJuIElNUEwtPnNlbGVjdGVkU3R5bGVzaGVldFNldCgpOworfQorCistICh2b2lkKXNldFNlbGVj
dGVkU3R5bGVzaGVldFNldDooTlNTdHJpbmcgKiluZXdTZWxlY3RlZFN0eWxlc2hlZXRTZXQKK3sK
KyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgSU1QTC0+c2V0
U2VsZWN0ZWRTdHlsZXNoZWV0U2V0KG5ld1NlbGVjdGVkU3R5bGVzaGVldFNldCk7Cit9CisKKy0g
KERPTUVsZW1lbnQgKilhY3RpdmVFbGVtZW50Cit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+YWN0aXZl
RWxlbWVudCgpKSk7Cit9CisKKy0gKE5TU3RyaW5nICopY29tcGF0TW9kZQoreworICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+Y29tcGF0
TW9kZSgpOworfQorCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorLSAoQk9PTCl3ZWJraXRJ
c0Z1bGxTY3JlZW4KK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
CisgICAgcmV0dXJuIElNUEwtPndlYmtpdElzRnVsbFNjcmVlbigpOworfQorCistIChCT09MKXdl
YmtpdEZ1bGxTY3JlZW5LZXlib2FyZElucHV0QWxsb3dlZAoreworICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+d2Via2l0RnVsbFNjcmVl
bktleWJvYXJkSW5wdXRBbGxvd2VkKCk7Cit9CisKKy0gKERPTUVsZW1lbnQgKil3ZWJraXRDdXJy
ZW50RnVsbFNjcmVlbkVsZW1lbnQKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7CisgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT53ZWJraXRDdXJyZW50
RnVsbFNjcmVlbkVsZW1lbnQoKSkpOworfQorCistIChCT09MKXdlYmtpdEZ1bGxzY3JlZW5FbmFi
bGVkCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJl
dHVybiBJTVBMLT53ZWJraXRGdWxsc2NyZWVuRW5hYmxlZCgpOworfQorCistIChET01FbGVtZW50
ICopd2Via2l0RnVsbHNjcmVlbkVsZW1lbnQKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT53ZWJraXRG
dWxsc2NyZWVuRWxlbWVudCgpKSk7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShQT0lOVEVSX0xP
Q0spCistIChET01FbGVtZW50ICopcG9pbnRlckxvY2tFbGVtZW50Cit7CisgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIo
SU1QTC0+cG9pbnRlckxvY2tFbGVtZW50KCkpKTsKK30KKyNlbmRpZgorCistIChOU1N0cmluZyAq
KXZpc2liaWxpdHlTdGF0ZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+dmlzaWJpbGl0eVN0YXRlKCk7Cit9CisKKy0gKEJPT0wp
aGlkZGVuCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAg
IHJldHVybiBJTVBMLT5oaWRkZW4oKTsKK30KKworLSAoRE9NSFRNTFNjcmlwdEVsZW1lbnQgKilj
dXJyZW50U2NyaXB0Cit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OworICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Y3VycmVudFNjcmlwdCgpKSk7Cit9
CisKKy0gKE5TU3RyaW5nICopb3JpZ2luCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5vcmlnaW4oKTsKK30KKworLSAoRE9NRWxl
bWVudCAqKXNjcm9sbGluZ0VsZW1lbnQKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5zY3JvbGxpbmdF
bGVtZW50KCkpKTsKK30KKworLSAoRE9NSFRNTENvbGxlY3Rpb24gKiljaGlsZHJlbgoreworICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4ga2l0KFdU
Rjo6Z2V0UHRyKElNUEwtPmNoaWxkcmVuKCkpKTsKK30KKworLSAoRE9NRWxlbWVudCAqKWZpcnN0
RWxlbWVudENoaWxkCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OworICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Zmlyc3RFbGVtZW50Q2hpbGQoKSkp
OworfQorCistIChET01FbGVtZW50ICopbGFzdEVsZW1lbnRDaGlsZAoreworICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRy
KElNUEwtPmxhc3RFbGVtZW50Q2hpbGQoKSkpOworfQorCistICh1bnNpZ25lZCljaGlsZEVsZW1l
bnRDb3VudAoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAg
ICByZXR1cm4gSU1QTC0+Y2hpbGRFbGVtZW50Q291bnQoKTsKK30KKworLSAoRE9NRWxlbWVudCAq
KWNyZWF0ZUVsZW1lbnQ6KE5TU3RyaW5nICopdGFnTmFtZQoreworICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0g
MDsKKyAgICBET01FbGVtZW50ICpyZXN1bHQgPSBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Y3JlYXRl
RWxlbWVudEZvckJpbmRpbmdzKHRhZ05hbWUsIGVjKSkpOworICAgIFdlYkNvcmU6OnJhaXNlT25E
T01FcnJvcihlYyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLSAoRE9NRG9jdW1lbnRGcmFn
bWVudCAqKWNyZWF0ZURvY3VtZW50RnJhZ21lbnQKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5jcmVh
dGVEb2N1bWVudEZyYWdtZW50KCkpKTsKK30KKworLSAoRE9NVGV4dCAqKWNyZWF0ZVRleHROb2Rl
OihOU1N0cmluZyAqKWRhdGEKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7CisgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5jcmVhdGVUZXh0Tm9kZShk
YXRhKSkpOworfQorCistIChET01Db21tZW50ICopY3JlYXRlQ29tbWVudDooTlNTdHJpbmcgKilk
YXRhCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJl
dHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Y3JlYXRlQ29tbWVudChkYXRhKSkpOworfQorCist
IChET01DREFUQVNlY3Rpb24gKiljcmVhdGVDREFUQVNlY3Rpb246KE5TU3RyaW5nICopZGF0YQor
eworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBET01DREFUQVNlY3Rpb24gKnJlc3VsdCA9IGtp
dChXVEY6OmdldFB0cihJTVBMLT5jcmVhdGVDREFUQVNlY3Rpb24oZGF0YSwgZWMpKSk7CisgICAg
V2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCist
IChET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKiljcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246
KE5TU3RyaW5nICopdGFyZ2V0IGRhdGE6KE5TU3RyaW5nICopZGF0YQoreworICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2Rl
IGVjID0gMDsKKyAgICBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKnJlc3VsdCA9IGtpdChXVEY6
OmdldFB0cihJTVBMLT5jcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24odGFyZ2V0LCBkYXRhLCBl
YykpKTsKKyAgICBXZWJDb3JlOjpyYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKKy0gKERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAqKWNyZWF0ZVByb2Nlc3NpbmdJ
bnN0cnVjdGlvbjooTlNTdHJpbmcgKil0YXJnZXQgOihOU1N0cmluZyAqKWRhdGEKK3sKKyAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZSBlYyA9IDA7CisgICAgRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uICpyZXN1bHQgPSBr
aXQoV1RGOjpnZXRQdHIoSU1QTC0+Y3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uKHRhcmdldCwg
ZGF0YSwgZWMpKSk7CisgICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCistIChET01BdHRyICopY3JlYXRlQXR0cmlidXRlOihOU1N0cmluZyAq
KW5hbWUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAg
V2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgRE9NQXR0ciAqcmVzdWx0ID0ga2l0
KFdURjo6Z2V0UHRyKElNUEwtPmNyZWF0ZUF0dHJpYnV0ZShuYW1lLCBlYykpKTsKKyAgICBXZWJD
b3JlOjpyYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy0gKERP
TUVudGl0eVJlZmVyZW5jZSAqKWNyZWF0ZUVudGl0eVJlZmVyZW5jZTooTlNTdHJpbmcgKiluYW1l
Cit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdlYkNv
cmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIERPTUVudGl0eVJlZmVyZW5jZSAqcmVzdWx0
ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmNyZWF0ZUVudGl0eVJlZmVyZW5jZShuYW1lLCBlYykp
KTsKKyAgICBXZWJDb3JlOjpyYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKKy0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeVRhZ05hbWU6KE5TU3RyaW5nICop
dGFnbmFtZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAg
ICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmdldEVsZW1lbnRzQnlUYWdOYW1lRm9yT2Jq
Qyh0YWduYW1lKSkpOworfQorCistIChET01Ob2RlICopaW1wb3J0Tm9kZTooRE9NTm9kZSAqKWlt
cG9ydGVkTm9kZSBkZWVwOihCT09MKWRlZXAKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7CisgICAgaWYgKCFpbXBvcnRlZE5vZGUpCisgICAgICAgIFdlYkNvcmU6
OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBl
YyA9IDA7CisgICAgRE9NTm9kZSAqcmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmltcG9y
dE5vZGUoKmNvcmUoaW1wb3J0ZWROb2RlKSwgZGVlcCwgZWMpKSk7CisgICAgV2ViQ29yZTo6cmFp
c2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCistIChET01Ob2RlICop
aW1wb3J0Tm9kZTooRE9NTm9kZSAqKWltcG9ydGVkTm9kZSA6KEJPT0wpZGVlcAoreworICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBpZiAoIWltcG9ydGVkTm9k
ZSkKKyAgICAgICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKKyAgICBXZWJD
b3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBET01Ob2RlICpyZXN1bHQgPSBraXQoV1RG
OjpnZXRQdHIoSU1QTC0+aW1wb3J0Tm9kZSgqY29yZShpbXBvcnRlZE5vZGUpLCBkZWVwLCBlYykp
KTsKKyAgICBXZWJDb3JlOjpyYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKKy0gKERPTUVsZW1lbnQgKiljcmVhdGVFbGVtZW50TlM6KE5TU3RyaW5nICopbmFtZXNw
YWNlVVJJIHF1YWxpZmllZE5hbWU6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZQoreworICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpFeGNlcHRp
b25Db2RlIGVjID0gMDsKKyAgICBET01FbGVtZW50ICpyZXN1bHQgPSBraXQoV1RGOjpnZXRQdHIo
SU1QTC0+Y3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFtZSwgZWMpKSk7
CisgICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCistIChET01FbGVtZW50ICopY3JlYXRlRWxlbWVudE5TOihOU1N0cmluZyAqKW5hbWVzcGFj
ZVVSSSA6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsK
KyAgICBET01FbGVtZW50ICpyZXN1bHQgPSBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Y3JlYXRlRWxl
bWVudE5TKG5hbWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFtZSwgZWMpKSk7CisgICAgV2ViQ29yZTo6
cmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCistIChET01BdHRy
ICopY3JlYXRlQXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIHF1YWxpZmllZE5h
bWU6KE5TU3RyaW5nICopcXVhbGlmaWVkTmFtZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICBET01BdHRyICpyZXN1bHQgPSBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Y3JlYXRlQXR0cmlidXRl
TlMobmFtZXNwYWNlVVJJLCBxdWFsaWZpZWROYW1lLCBlYykpKTsKKyAgICBXZWJDb3JlOjpyYWlz
ZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy0gKERPTUF0dHIgKilj
cmVhdGVBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1
YWxpZmllZE5hbWUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgRE9NQXR0ciAqcmVzdWx0
ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmNyZWF0ZUF0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwg
cXVhbGlmaWVkTmFtZSwgZWMpKSk7CisgICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCistIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlU
YWdOYW1lTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIGxvY2FsTmFtZTooTlNTdHJpbmcgKils
b2NhbE5hbWUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Cisg
ICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5nZXRFbGVtZW50c0J5VGFnTmFtZU5TRm9y
T2JqQyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSkpKTsKK30KKworLSAoRE9NTm9kZUxpc3QgKiln
ZXRFbGVtZW50c0J5VGFnTmFtZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5n
ICopbG9jYWxOYW1lCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OworICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Z2V0RWxlbWVudHNCeVRhZ05hbWVO
U0Zvck9iakMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpKSk7Cit9CisKKy0gKERPTU5vZGUgKilh
ZG9wdE5vZGU6KERPTU5vZGUgKilzb3VyY2UKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7CisgICAgaWYgKCFzb3VyY2UpCisgICAgICAgIFdlYkNvcmU6OnJhaXNl
VHlwZUVycm9yRXhjZXB0aW9uKCk7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgRE9NTm9kZSAqcmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmFkb3B0Tm9kZSgq
Y29yZShzb3VyY2UpLCBlYykpKTsKKyAgICBXZWJDb3JlOjpyYWlzZU9uRE9NRXJyb3IoZWMpOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy0gKERPTUV2ZW50ICopY3JlYXRlRXZlbnQ6KE5TU3Ry
aW5nICopZXZlbnRUeXBlCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIERPTUV2ZW50ICpy
ZXN1bHQgPSBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Y3JlYXRlRXZlbnQoZXZlbnRUeXBlLCBlYykp
KTsKKyAgICBXZWJDb3JlOjpyYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKKy0gKERPTVJhbmdlICopY3JlYXRlUmFuZ2UKK3sKKyAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5j
cmVhdGVSYW5nZSgpKSk7Cit9CisKKy0gKERPTU5vZGVJdGVyYXRvciAqKWNyZWF0ZU5vZGVJdGVy
YXRvcjooRE9NTm9kZSAqKXJvb3Qgd2hhdFRvU2hvdzoodW5zaWduZWQpd2hhdFRvU2hvdyBmaWx0
ZXI6KGlkIDxET01Ob2RlRmlsdGVyPilmaWx0ZXIgZXhwYW5kRW50aXR5UmVmZXJlbmNlczooQk9P
TClleHBhbmRFbnRpdHlSZWZlcmVuY2VzCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOworICAgIGlmICghcm9vdCkKKyAgICAgICAgV2ViQ29yZTo6cmFpc2VUeXBl
RXJyb3JFeGNlcHRpb24oKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Tm9kZUZpbHRlcj4gbmF0aXZl
Tm9kZUZpbHRlcjsKKyAgICBpZiAoZmlsdGVyKQorICAgICAgICBuYXRpdmVOb2RlRmlsdGVyID0g
V2ViQ29yZTo6TmF0aXZlTm9kZUZpbHRlcjo6Y3JlYXRlKFdlYkNvcmU6Ok9iakNOb2RlRmlsdGVy
Q29uZGl0aW9uOjpjcmVhdGUoZmlsdGVyKSk7CisgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJ
TVBMLT5jcmVhdGVOb2RlSXRlcmF0b3IoKmNvcmUocm9vdCksIHdoYXRUb1Nob3csIFdURjo6Z2V0
UHRyKG5hdGl2ZU5vZGVGaWx0ZXIpLCBleHBhbmRFbnRpdHlSZWZlcmVuY2VzKSkpOworfQorCist
IChET01Ob2RlSXRlcmF0b3IgKiljcmVhdGVOb2RlSXRlcmF0b3I6KERPTU5vZGUgKilyb290IDoo
dW5zaWduZWQpd2hhdFRvU2hvdyA6KGlkIDxET01Ob2RlRmlsdGVyPilmaWx0ZXIgOihCT09MKWV4
cGFuZEVudGl0eVJlZmVyZW5jZXMKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7CisgICAgaWYgKCFyb290KQorICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJv
ckV4Y2VwdGlvbigpOworICAgIFJlZlB0cjxXZWJDb3JlOjpOb2RlRmlsdGVyPiBuYXRpdmVOb2Rl
RmlsdGVyOworICAgIGlmIChmaWx0ZXIpCisgICAgICAgIG5hdGl2ZU5vZGVGaWx0ZXIgPSBXZWJD
b3JlOjpOYXRpdmVOb2RlRmlsdGVyOjpjcmVhdGUoV2ViQ29yZTo6T2JqQ05vZGVGaWx0ZXJDb25k
aXRpb246OmNyZWF0ZShmaWx0ZXIpKTsKKyAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwt
PmNyZWF0ZU5vZGVJdGVyYXRvcigqY29yZShyb290KSwgd2hhdFRvU2hvdywgV1RGOjpnZXRQdHIo
bmF0aXZlTm9kZUZpbHRlciksIGV4cGFuZEVudGl0eVJlZmVyZW5jZXMpKSk7Cit9CisKKy0gKERP
TVRyZWVXYWxrZXIgKiljcmVhdGVUcmVlV2Fsa2VyOihET01Ob2RlICopcm9vdCB3aGF0VG9TaG93
Oih1bnNpZ25lZCl3aGF0VG9TaG93IGZpbHRlcjooaWQgPERPTU5vZGVGaWx0ZXI+KWZpbHRlciBl
eHBhbmRFbnRpdHlSZWZlcmVuY2VzOihCT09MKWV4cGFuZEVudGl0eVJlZmVyZW5jZXMKK3sKKyAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgaWYgKCFyb290KQor
ICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpOb2RlRmlsdGVyPiBuYXRpdmVOb2RlRmlsdGVyOworICAgIGlmIChmaWx0ZXIpCisg
ICAgICAgIG5hdGl2ZU5vZGVGaWx0ZXIgPSBXZWJDb3JlOjpOYXRpdmVOb2RlRmlsdGVyOjpjcmVh
dGUoV2ViQ29yZTo6T2JqQ05vZGVGaWx0ZXJDb25kaXRpb246OmNyZWF0ZShmaWx0ZXIpKTsKKyAg
ICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmNyZWF0ZVRyZWVXYWxrZXIoKmNvcmUocm9v
dCksIHdoYXRUb1Nob3csIFdURjo6Z2V0UHRyKG5hdGl2ZU5vZGVGaWx0ZXIpLCBleHBhbmRFbnRp
dHlSZWZlcmVuY2VzKSkpOworfQorCistIChET01UcmVlV2Fsa2VyICopY3JlYXRlVHJlZVdhbGtl
cjooRE9NTm9kZSAqKXJvb3QgOih1bnNpZ25lZCl3aGF0VG9TaG93IDooaWQgPERPTU5vZGVGaWx0
ZXI+KWZpbHRlciA6KEJPT0wpZXhwYW5kRW50aXR5UmVmZXJlbmNlcworeworICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBpZiAoIXJvb3QpCisgICAgICAgIFdl
YkNvcmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7CisgICAgUmVmUHRyPFdlYkNvcmU6Ok5v
ZGVGaWx0ZXI+IG5hdGl2ZU5vZGVGaWx0ZXI7CisgICAgaWYgKGZpbHRlcikKKyAgICAgICAgbmF0
aXZlTm9kZUZpbHRlciA9IFdlYkNvcmU6Ok5hdGl2ZU5vZGVGaWx0ZXI6OmNyZWF0ZShXZWJDb3Jl
OjpPYmpDTm9kZUZpbHRlckNvbmRpdGlvbjo6Y3JlYXRlKGZpbHRlcikpOworICAgIHJldHVybiBr
aXQoV1RGOjpnZXRQdHIoSU1QTC0+Y3JlYXRlVHJlZVdhbGtlcigqY29yZShyb290KSwgd2hhdFRv
U2hvdywgV1RGOjpnZXRQdHIobmF0aXZlTm9kZUZpbHRlciksIGV4cGFuZEVudGl0eVJlZmVyZW5j
ZXMpKSk7Cit9CisKKy0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilnZXRPdmVycmlkZVN0eWxl
OihET01FbGVtZW50ICopZWxlbWVudCBwc2V1ZG9FbGVtZW50OihOU1N0cmluZyAqKXBzZXVkb0Vs
ZW1lbnQKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAg
cmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5nZXRPdmVycmlkZVN0eWxlKGNvcmUoZWxlbWVu
dCksIHBzZXVkb0VsZW1lbnQpKSk7Cit9CisKKy0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKiln
ZXRPdmVycmlkZVN0eWxlOihET01FbGVtZW50ICopZWxlbWVudCA6KE5TU3RyaW5nICopcHNldWRv
RWxlbWVudAoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAg
ICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmdldE92ZXJyaWRlU3R5bGUoY29yZShlbGVt
ZW50KSwgcHNldWRvRWxlbWVudCkpKTsKK30KKworLSAoRE9NWFBhdGhFeHByZXNzaW9uICopY3Jl
YXRlRXhwcmVzc2lvbjooTlNTdHJpbmcgKilleHByZXNzaW9uIHJlc29sdmVyOihpZCA8RE9NWFBh
dGhOU1Jlc29sdmVyPilyZXNvbHZlcgoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpYUGF0aE5TUmVzb2x2ZXIqIG5hdGl2ZVJlc29sdmVy
ID0gMDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6WFBhdGhOU1Jlc29sdmVyPiBjdXN0b21SZXNvbHZl
cjsKKyAgICBpZiAocmVzb2x2ZXIpIHsKKyAgICAgICAgaWYgKFtyZXNvbHZlciBpc01lbWJlck9m
Q2xhc3M6W0RPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlciBjbGFzc11dKQorICAgICAgICAgICAgbmF0
aXZlUmVzb2x2ZXIgPSBjb3JlKHN0YXRpY19jYXN0PERPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlciAq
PihyZXNvbHZlcikpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGN1c3RvbVJlc29sdmVy
ID0gV2ViQ29yZTo6RE9NQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpjcmVhdGUocmVzb2x2ZXIpOwor
ICAgICAgICAgICAgbmF0aXZlUmVzb2x2ZXIgPSBXVEY6OmdldFB0cihjdXN0b21SZXNvbHZlcik7
CisgICAgICAgIH0KKyAgICB9CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Cisg
ICAgRE9NWFBhdGhFeHByZXNzaW9uICpyZXN1bHQgPSBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Y3Jl
YXRlRXhwcmVzc2lvbihleHByZXNzaW9uLCBXVEY6OmdldFB0cihuYXRpdmVSZXNvbHZlciksIGVj
KSkpOworICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworLSAoRE9NWFBhdGhFeHByZXNzaW9uICopY3JlYXRlRXhwcmVzc2lvbjooTlNTdHJp
bmcgKilleHByZXNzaW9uIDooaWQgPERPTVhQYXRoTlNSZXNvbHZlcj4pcmVzb2x2ZXIKK3sKKyAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6WFBh
dGhOU1Jlc29sdmVyKiBuYXRpdmVSZXNvbHZlciA9IDA7CisgICAgUmVmUHRyPFdlYkNvcmU6OlhQ
YXRoTlNSZXNvbHZlcj4gY3VzdG9tUmVzb2x2ZXI7CisgICAgaWYgKHJlc29sdmVyKSB7CisgICAg
ICAgIGlmIChbcmVzb2x2ZXIgaXNNZW1iZXJPZkNsYXNzOltET01OYXRpdmVYUGF0aE5TUmVzb2x2
ZXIgY2xhc3NdXSkKKyAgICAgICAgICAgIG5hdGl2ZVJlc29sdmVyID0gY29yZShzdGF0aWNfY2Fz
dDxET01OYXRpdmVYUGF0aE5TUmVzb2x2ZXIgKj4ocmVzb2x2ZXIpKTsKKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICBjdXN0b21SZXNvbHZlciA9IFdlYkNvcmU6OkRPTUN1c3RvbVhQYXRoTlNS
ZXNvbHZlcjo6Y3JlYXRlKHJlc29sdmVyKTsKKyAgICAgICAgICAgIG5hdGl2ZVJlc29sdmVyID0g
V1RGOjpnZXRQdHIoY3VzdG9tUmVzb2x2ZXIpOworICAgICAgICB9CisgICAgfQorICAgIFdlYkNv
cmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIERPTVhQYXRoRXhwcmVzc2lvbiAqcmVzdWx0
ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmNyZWF0ZUV4cHJlc3Npb24oZXhwcmVzc2lvbiwgV1RG
OjpnZXRQdHIobmF0aXZlUmVzb2x2ZXIpLCBlYykpKTsKKyAgICBXZWJDb3JlOjpyYWlzZU9uRE9N
RXJyb3IoZWMpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy0gKGlkIDxET01YUGF0aE5TUmVz
b2x2ZXI+KWNyZWF0ZU5TUmVzb2x2ZXI6KERPTU5vZGUgKilub2RlUmVzb2x2ZXIKK3sKKyAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIGtpdChXVEY6
OmdldFB0cihJTVBMLT5jcmVhdGVOU1Jlc29sdmVyKGNvcmUobm9kZVJlc29sdmVyKSkpKTsKK30K
KworLSAoRE9NWFBhdGhSZXN1bHQgKilldmFsdWF0ZTooTlNTdHJpbmcgKilleHByZXNzaW9uIGNv
bnRleHROb2RlOihET01Ob2RlICopY29udGV4dE5vZGUgcmVzb2x2ZXI6KGlkIDxET01YUGF0aE5T
UmVzb2x2ZXI+KXJlc29sdmVyIHR5cGU6KHVuc2lnbmVkIHNob3J0KXR5cGUgaW5SZXN1bHQ6KERP
TVhQYXRoUmVzdWx0ICopaW5SZXN1bHQKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6WFBhdGhOU1Jlc29sdmVyKiBuYXRpdmVSZXNvbHZl
ciA9IDA7CisgICAgUmVmUHRyPFdlYkNvcmU6OlhQYXRoTlNSZXNvbHZlcj4gY3VzdG9tUmVzb2x2
ZXI7CisgICAgaWYgKHJlc29sdmVyKSB7CisgICAgICAgIGlmIChbcmVzb2x2ZXIgaXNNZW1iZXJP
ZkNsYXNzOltET01OYXRpdmVYUGF0aE5TUmVzb2x2ZXIgY2xhc3NdXSkKKyAgICAgICAgICAgIG5h
dGl2ZVJlc29sdmVyID0gY29yZShzdGF0aWNfY2FzdDxET01OYXRpdmVYUGF0aE5TUmVzb2x2ZXIg
Kj4ocmVzb2x2ZXIpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjdXN0b21SZXNvbHZl
ciA9IFdlYkNvcmU6OkRPTUN1c3RvbVhQYXRoTlNSZXNvbHZlcjo6Y3JlYXRlKHJlc29sdmVyKTsK
KyAgICAgICAgICAgIG5hdGl2ZVJlc29sdmVyID0gV1RGOjpnZXRQdHIoY3VzdG9tUmVzb2x2ZXIp
OworICAgICAgICB9CisgICAgfQorICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwor
ICAgIERPTVhQYXRoUmVzdWx0ICpyZXN1bHQgPSBraXQoV1RGOjpnZXRQdHIoSU1QTC0+ZXZhbHVh
dGUoZXhwcmVzc2lvbiwgY29yZShjb250ZXh0Tm9kZSksIFdURjo6Z2V0UHRyKG5hdGl2ZVJlc29s
dmVyKSwgdHlwZSwgY29yZShpblJlc3VsdCksIGVjKSkpOworICAgIFdlYkNvcmU6OnJhaXNlT25E
T01FcnJvcihlYyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLSAoRE9NWFBhdGhSZXN1bHQg
KilldmFsdWF0ZTooTlNTdHJpbmcgKilleHByZXNzaW9uIDooRE9NTm9kZSAqKWNvbnRleHROb2Rl
IDooaWQgPERPTVhQYXRoTlNSZXNvbHZlcj4pcmVzb2x2ZXIgOih1bnNpZ25lZCBzaG9ydCl0eXBl
IDooRE9NWFBhdGhSZXN1bHQgKilpblJlc3VsdAoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpYUGF0aE5TUmVzb2x2ZXIqIG5hdGl2ZVJl
c29sdmVyID0gMDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6WFBhdGhOU1Jlc29sdmVyPiBjdXN0b21S
ZXNvbHZlcjsKKyAgICBpZiAocmVzb2x2ZXIpIHsKKyAgICAgICAgaWYgKFtyZXNvbHZlciBpc01l
bWJlck9mQ2xhc3M6W0RPTU5hdGl2ZVhQYXRoTlNSZXNvbHZlciBjbGFzc11dKQorICAgICAgICAg
ICAgbmF0aXZlUmVzb2x2ZXIgPSBjb3JlKHN0YXRpY19jYXN0PERPTU5hdGl2ZVhQYXRoTlNSZXNv
bHZlciAqPihyZXNvbHZlcikpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGN1c3RvbVJl
c29sdmVyID0gV2ViQ29yZTo6RE9NQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpjcmVhdGUocmVzb2x2
ZXIpOworICAgICAgICAgICAgbmF0aXZlUmVzb2x2ZXIgPSBXVEY6OmdldFB0cihjdXN0b21SZXNv
bHZlcik7CisgICAgICAgIH0KKyAgICB9CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9
IDA7CisgICAgRE9NWFBhdGhSZXN1bHQgKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0cihJTVBMLT5l
dmFsdWF0ZShleHByZXNzaW9uLCBjb3JlKGNvbnRleHROb2RlKSwgV1RGOjpnZXRQdHIobmF0aXZl
UmVzb2x2ZXIpLCB0eXBlLCBjb3JlKGluUmVzdWx0KSwgZWMpKSk7CisgICAgV2ViQ29yZTo6cmFp
c2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCistIChCT09MKWV4ZWND
b21tYW5kOihOU1N0cmluZyAqKWNvbW1hbmQgdXNlckludGVyZmFjZTooQk9PTCl1c2VySW50ZXJm
YWNlIHZhbHVlOihOU1N0cmluZyAqKXZhbHVlCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5leGVjQ29tbWFuZChjb21tYW5kLCB1
c2VySW50ZXJmYWNlLCB2YWx1ZSk7Cit9CisKKy0gKEJPT0wpZXhlY0NvbW1hbmQ6KE5TU3RyaW5n
ICopY29tbWFuZCB1c2VySW50ZXJmYWNlOihCT09MKXVzZXJJbnRlcmZhY2UKK3sKKyAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPmV4ZWND
b21tYW5kKGNvbW1hbmQsIHVzZXJJbnRlcmZhY2UpOworfQorCistIChCT09MKWV4ZWNDb21tYW5k
OihOU1N0cmluZyAqKWNvbW1hbmQKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPmV4ZWNDb21tYW5kKGNvbW1hbmQpOworfQorCist
IChCT09MKXF1ZXJ5Q29tbWFuZEVuYWJsZWQ6KE5TU3RyaW5nICopY29tbWFuZAoreworICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+cXVl
cnlDb21tYW5kRW5hYmxlZChjb21tYW5kKTsKK30KKworLSAoQk9PTClxdWVyeUNvbW1hbmRJbmRl
dGVybTooTlNTdHJpbmcgKiljb21tYW5kCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5xdWVyeUNvbW1hbmRJbmRldGVybShjb21t
YW5kKTsKK30KKworLSAoQk9PTClxdWVyeUNvbW1hbmRTdGF0ZTooTlNTdHJpbmcgKiljb21tYW5k
Cit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVy
biBJTVBMLT5xdWVyeUNvbW1hbmRTdGF0ZShjb21tYW5kKTsKK30KKworLSAoQk9PTClxdWVyeUNv
bW1hbmRTdXBwb3J0ZWQ6KE5TU3RyaW5nICopY29tbWFuZAoreworICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+cXVlcnlDb21tYW5kU3Vw
cG9ydGVkKGNvbW1hbmQpOworfQorCistIChOU1N0cmluZyAqKXF1ZXJ5Q29tbWFuZFZhbHVlOihO
U1N0cmluZyAqKWNvbW1hbmQKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7CisgICAgcmV0dXJuIElNUEwtPnF1ZXJ5Q29tbWFuZFZhbHVlKGNvbW1hbmQpOworfQor
CistIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlOYW1lOihOU1N0cmluZyAqKWVsZW1lbnRO
YW1lCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJl
dHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Z2V0RWxlbWVudHNCeU5hbWUoZWxlbWVudE5hbWUp
KSk7Cit9CisKKy0gKERPTUVsZW1lbnQgKillbGVtZW50RnJvbVBvaW50OihpbnQpeCB5OihpbnQp
eQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1
cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmVsZW1lbnRGcm9tUG9pbnQoeCwgeSkpKTsKK30KKwor
LSAoRE9NUmFuZ2UgKiljYXJldFJhbmdlRnJvbVBvaW50OihpbnQpeCB5OihpbnQpeQoreworICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4ga2l0KFdU
Rjo6Z2V0UHRyKElNUEwtPmNhcmV0UmFuZ2VGcm9tUG9pbnQoeCwgeSkpKTsKK30KKworLSAoRE9N
Q1NTU3R5bGVEZWNsYXJhdGlvbiAqKWNyZWF0ZUNTU1N0eWxlRGVjbGFyYXRpb24KK3sKKyAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIGtpdChXVEY6
OmdldFB0cihJTVBMLT5jcmVhdGVDU1NTdHlsZURlY2xhcmF0aW9uKCkpKTsKK30KKworLSAoRE9N
Q1NTU3R5bGVEZWNsYXJhdGlvbiAqKWdldENvbXB1dGVkU3R5bGU6KERPTUVsZW1lbnQgKillbGVt
ZW50IHBzZXVkb0VsZW1lbnQ6KE5TU3RyaW5nICopcHNldWRvRWxlbWVudAoreworICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBpZiAoIWVsZW1lbnQpCisgICAg
ICAgIFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7CisgICAgV2ViQ29yZTo6RE9N
V2luZG93KiBkdiA9IElNUEwtPmRlZmF1bHRWaWV3KCk7CisgICAgaWYgKCFkdikKKyAgICAgICAg
cmV0dXJuIG5pbDsKKyAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKGR2LT5nZXRDb21wdXRlZFN0
eWxlKCpjb3JlKGVsZW1lbnQpLCBwc2V1ZG9FbGVtZW50KSkpOworfQorCistIChET01DU1NTdHls
ZURlY2xhcmF0aW9uICopZ2V0Q29tcHV0ZWRTdHlsZTooRE9NRWxlbWVudCAqKWVsZW1lbnQgOihO
U1N0cmluZyAqKXBzZXVkb0VsZW1lbnQKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7CisgICAgaWYgKCFlbGVtZW50KQorICAgICAgICBXZWJDb3JlOjpyYWlzZVR5
cGVFcnJvckV4Y2VwdGlvbigpOworICAgIFdlYkNvcmU6OkRPTVdpbmRvdyogZHYgPSBJTVBMLT5k
ZWZhdWx0VmlldygpOworICAgIGlmICghZHYpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0
dXJuIGtpdChXVEY6OmdldFB0cihkdi0+Z2V0Q29tcHV0ZWRTdHlsZSgqY29yZShlbGVtZW50KSwg
cHNldWRvRWxlbWVudCkpKTsKK30KKworLSAoRE9NQ1NTUnVsZUxpc3QgKilnZXRNYXRjaGVkQ1NT
UnVsZXM6KERPTUVsZW1lbnQgKillbGVtZW50IHBzZXVkb0VsZW1lbnQ6KE5TU3RyaW5nICopcHNl
dWRvRWxlbWVudAoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
KyAgICBXZWJDb3JlOjpET01XaW5kb3cqIGR2ID0gSU1QTC0+ZGVmYXVsdFZpZXcoKTsKKyAgICBp
ZiAoIWR2KQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIo
ZHYtPmdldE1hdGNoZWRDU1NSdWxlcyhjb3JlKGVsZW1lbnQpLCBwc2V1ZG9FbGVtZW50KSkpOwor
fQorCistIChET01DU1NSdWxlTGlzdCAqKWdldE1hdGNoZWRDU1NSdWxlczooRE9NRWxlbWVudCAq
KWVsZW1lbnQgcHNldWRvRWxlbWVudDooTlNTdHJpbmcgKilwc2V1ZG9FbGVtZW50IGF1dGhvck9u
bHk6KEJPT0wpYXV0aG9yT25seQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpET01XaW5kb3cqIGR2ID0gSU1QTC0+ZGVmYXVsdFZpZXco
KTsKKyAgICBpZiAoIWR2KQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBraXQoV1RG
OjpnZXRQdHIoZHYtPmdldE1hdGNoZWRDU1NSdWxlcyhjb3JlKGVsZW1lbnQpLCBwc2V1ZG9FbGVt
ZW50LCBhdXRob3JPbmx5KSkpOworfQorCistIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlD
bGFzc05hbWU6KE5TU3RyaW5nICopY2xhc3NOYW1lcworeworICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmdl
dEVsZW1lbnRzQnlDbGFzc05hbWVGb3JPYmpDKGNsYXNzTmFtZXMpKSk7Cit9CisKKy0gKEJPT0wp
aGFzRm9jdXMKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Cisg
ICAgcmV0dXJuIElNUEwtPmhhc0ZvY3VzKCk7Cit9CisKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9B
UEkpCistICh2b2lkKXdlYmtpdENhbmNlbEZ1bGxTY3JlZW4KK3sKKyAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgSU1QTC0+d2Via2l0Q2FuY2VsRnVsbFNjcmVl
bigpOworfQorCistICh2b2lkKXdlYmtpdEV4aXRGdWxsc2NyZWVuCit7CisgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIElNUEwtPndlYmtpdEV4aXRGdWxsc2Ny
ZWVuKCk7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCistICh2b2lkKWV4
aXRQb2ludGVyTG9jaworeworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKKyAgICBJTVBMLT5leGl0UG9pbnRlckxvY2soKTsKK30KKworI2VuZGlmCisKKy0gKERPTUVs
ZW1lbnQgKilnZXRFbGVtZW50QnlJZDooTlNTdHJpbmcgKillbGVtZW50SWQKK3sKKyAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIGtpdChXVEY6Omdl
dFB0cihJTVBMLT5nZXRFbGVtZW50QnlJZChBdG9taWNTdHJpbmcoZWxlbWVudElkKSkpKTsKK30K
KworLSAoRE9NRWxlbWVudCAqKXF1ZXJ5U2VsZWN0b3I6KE5TU3RyaW5nICopc2VsZWN0b3JzCit7
CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIERPTUVsZW1lbnQgKnJlc3VsdCA9IGtpdChXVEY6
OmdldFB0cihJTVBMLT5xdWVyeVNlbGVjdG9yKHNlbGVjdG9ycywgZWMpKSk7CisgICAgV2ViQ29y
ZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCistIChET01O
b2RlTGlzdCAqKXF1ZXJ5U2VsZWN0b3JBbGw6KE5TU3RyaW5nICopc2VsZWN0b3JzCit7CisgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOworICAgIERPTU5vZGVMaXN0ICpyZXN1bHQgPSBraXQoV1RGOjpnZXRQ
dHIoSU1QTC0+cXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcnMsIGVjKSkpOworICAgIFdlYkNvcmU6
OnJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworQGVuZAorCitX
ZWJDb3JlOjpEb2N1bWVudCogY29yZShET01Eb2N1bWVudCAqd3JhcHBlcikKK3sKKyAgICByZXR1
cm4gd3JhcHBlciA/IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RG9jdW1lbnQqPih3cmFwcGVy
LT5faW50ZXJuYWwpIDogMDsKK30KKworRE9NRG9jdW1lbnQgKmtpdChXZWJDb3JlOjpEb2N1bWVu
dCogdmFsdWUpCit7CisgICAgV2ViQ29yZVRocmVhZFZpb2xhdGlvbkNoZWNrUm91bmRPbmUoKTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRG9jdW1lbnQqPihraXQoc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6Tm9kZSo+KHZhbHVlKSkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET01Eb2N1bWVudEZyYWdtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9vYmpjL0RPTURvY3VtZW50RnJhZ21lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTYxYTRhYTA3ODVkZjAz
YzY5ZWYzOWMwYmE0NDI2MTI0OTAwYjQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvb2JqYy9ET01Eb2N1bWVudEZyYWdtZW50LmgKQEAgLTAsMCArMSwzMCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCA8V2ViQ29yZS9ET01Ob2RlLmg+CisKK1dFQktJVF9DTEFTU19BVkFJTEFCTEVfTUFDKDEwXzQp
CitXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIERPTURvY3VtZW50RnJhZ21lbnQgOiBET01Ob2Rl
CitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTURvY3Vt
ZW50RnJhZ21lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTURvY3VtZW50
RnJhZ21lbnQubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTI1ODc1NzJiNjFjNDViZTJkYjA4NWZlZTEzZTRlNzM4
MmE3NGM2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NRG9jdW1lbnRGcmFnbWVudC5tbQpAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJET01Eb2N1bWVudEZyYWdtZW50SW50ZXJuYWwuaCIKKworI2ltcG9ydCAiRE9NRWxl
bWVudEludGVybmFsLmgiCisjaW1wb3J0ICJET01IVE1MQ29sbGVjdGlvbkludGVybmFsLmgiCisj
aW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTU5vZGVMaXN0SW50ZXJuYWwu
aCIKKyNpbXBvcnQgIkRvY3VtZW50RnJhZ21lbnQuaCIKKyNpbXBvcnQgIkVsZW1lbnQuaCIKKyNp
bXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCisjaW1wb3J0ICJIVE1MQ29sbGVjdGlvbi5oIgor
I2ltcG9ydCAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCisjaW1wb3J0ICJOYW1lTm9kZUxpc3Qu
aCIKKyNpbXBvcnQgIk5vZGVMaXN0LmgiCisjaW1wb3J0ICJUaHJlYWRDaGVjay5oIgorI2ltcG9y
dCAiVVJMLmgiCisjaW1wb3J0ICJXZWJTY3JpcHRPYmplY3RQcml2YXRlLmgiCisjaW1wb3J0IDx3
dGYvR2V0UHRyLmg+CisKKyNkZWZpbmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEb2N1bWVu
dEZyYWdtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkK
KworQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50RnJhZ21lbnQKKworLSAoRE9NSFRNTENvbGxl
Y3Rpb24gKiljaGlsZHJlbgoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKKyAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmNoaWxkcmVuKCkpKTsKK30K
KworLSAoRE9NRWxlbWVudCAqKWZpcnN0RWxlbWVudENoaWxkCit7CisgICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1Q
TC0+Zmlyc3RFbGVtZW50Q2hpbGQoKSkpOworfQorCistIChET01FbGVtZW50ICopbGFzdEVsZW1l
bnRDaGlsZAoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAg
ICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmxhc3RFbGVtZW50Q2hpbGQoKSkpOworfQor
CistICh1bnNpZ25lZCljaGlsZEVsZW1lbnRDb3VudAoreworICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+Y2hpbGRFbGVtZW50Q291bnQo
KTsKK30KKworLSAoRE9NRWxlbWVudCAqKWdldEVsZW1lbnRCeUlkOihOU1N0cmluZyAqKWVsZW1l
bnRJZAoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBy
ZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmdldEVsZW1lbnRCeUlkKEF0b21pY1N0cmluZyhl
bGVtZW50SWQpKSkpOworfQorCistIChET01FbGVtZW50ICopcXVlcnlTZWxlY3RvcjooTlNTdHJp
bmcgKilzZWxlY3RvcnMKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgRE9NRWxlbWVudCAq
cmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3JzLCBl
YykpKTsKKyAgICBXZWJDb3JlOjpyYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKKy0gKERPTU5vZGVMaXN0ICopcXVlcnlTZWxlY3RvckFsbDooTlNTdHJpbmcgKilz
ZWxlY3RvcnMKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Cisg
ICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgRE9NTm9kZUxpc3QgKnJlc3Vs
dCA9IGtpdChXVEY6OmdldFB0cihJTVBMLT5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9ycywgZWMp
KSk7CisgICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCitAZW5kCisKK1dlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQqIGNvcmUoRE9NRG9jdW1l
bnRGcmFnbWVudCAqd3JhcHBlcikKK3sKKyAgICByZXR1cm4gd3JhcHBlciA/IHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCo+KHdyYXBwZXItPl9pbnRlcm5hbCkgOiAw
OworfQorCitET01Eb2N1bWVudEZyYWdtZW50ICpraXQoV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVu
dCogdmFsdWUpCit7CisgICAgV2ViQ29yZVRocmVhZFZpb2xhdGlvbkNoZWNrUm91bmRPbmUoKTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRG9jdW1lbnRGcmFnbWVudCo+KGtpdChzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpOb2RlKj4odmFsdWUpKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTURvY3VtZW50RnJhZ21lbnRJbnRlcm5hbC5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Eb2N1bWVudEZyYWdtZW50SW50ZXJuYWwuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42NjkxZmY1YTE1YzdhNzJjNmZjNTkzMzBmYTQwZTUxNWI0NjM2ZDBmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Eb2N1bWVudEZyYWdt
ZW50SW50ZXJuYWwuaApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJDb3JlL0RPTURvY3VtZW50RnJh
Z21lbnQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsK
K30KKworV0VCQ09SRV9FWFBPUlQgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCogY29yZShET01E
b2N1bWVudEZyYWdtZW50ICopOworV0VCQ09SRV9FWFBPUlQgRE9NRG9jdW1lbnRGcmFnbWVudCAq
a2l0KFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NRG9jdW1lbnRGcmFnbWVudFByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRG9jdW1lbnRGcmFnbWVudFByaXZhdGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jNWEzMTg2ZTYwZTA1NzBmZDBkYTdhMmYzNGFlYTgzNDgxODEwY2MyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Eb2N1bWVudEZyYWdtZW50
UHJpdmF0ZS5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRE9NRG9jdW1lbnRGcmFnbWVu
dC5oPgorCitAY2xhc3MgRE9NRWxlbWVudDsKK0BjbGFzcyBET01IVE1MQ29sbGVjdGlvbjsKK0Bj
bGFzcyBET01Ob2RlTGlzdDsKK0BjbGFzcyBOU1N0cmluZzsKKworQGludGVyZmFjZSBET01Eb2N1
bWVudEZyYWdtZW50IChET01Eb2N1bWVudEZyYWdtZW50UHJpdmF0ZSkKK0Bwcm9wZXJ0eSAocmVh
ZG9ubHksIHN0cm9uZykgRE9NSFRNTENvbGxlY3Rpb24gKmNoaWxkcmVuOworQHByb3BlcnR5IChy
ZWFkb25seSwgc3Ryb25nKSBET01FbGVtZW50ICpmaXJzdEVsZW1lbnRDaGlsZDsKK0Bwcm9wZXJ0
eSAocmVhZG9ubHksIHN0cm9uZykgRE9NRWxlbWVudCAqbGFzdEVsZW1lbnRDaGlsZDsKK0Bwcm9w
ZXJ0eSAocmVhZG9ubHkpIHVuc2lnbmVkIGNoaWxkRWxlbWVudENvdW50OworCistIChET01FbGVt
ZW50ICopZ2V0RWxlbWVudEJ5SWQ6KE5TU3RyaW5nICopZWxlbWVudElkOworLSAoRE9NRWxlbWVu
dCAqKXF1ZXJ5U2VsZWN0b3I6KE5TU3RyaW5nICopc2VsZWN0b3JzOworLSAoRE9NTm9kZUxpc3Qg
KilxdWVyeVNlbGVjdG9yQWxsOihOU1N0cmluZyAqKXNlbGVjdG9yczsKK0BlbmQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRG9jdW1lbnRJbnRlcm5hbC5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Eb2N1bWVudEludGVybmFsLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjRhYjY1MjM4OGM2YTk5ZWM3NTMzY2NlM2RlMjJmYjk5NWMxZTQ5MQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRG9jdW1lbnRJbnRlcm5h
bC5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRE9NRG9jdW1lbnQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgRG9jdW1lbnQ7Cit9CisKK1dFQkNPUkVfRVhQT1JUIFdlYkNv
cmU6OkRvY3VtZW50KiBjb3JlKERPTURvY3VtZW50ICopOworV0VCQ09SRV9FWFBPUlQgRE9NRG9j
dW1lbnQgKmtpdChXZWJDb3JlOjpEb2N1bWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvb2JqYy9ET01Eb2N1bWVudFByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL29iamMvRE9NRG9jdW1lbnRQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzJjMjFiMGM1NWI5
OTUxZjBmM2M0ZGNjOTBjNzc4YTNkZGFkZWE2MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRG9jdW1lbnRQcml2YXRlLmgKQEAgLTAsMCArMSw1OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCA8V2ViQ29yZS9ET01Eb2N1bWVudC5oPgorCitAY2xhc3MgRE9NSFRNTEhlYWRFbGVtZW50
OworQGNsYXNzIERPTUhUTUxTY3JpcHRFbGVtZW50OworCitAaW50ZXJmYWNlIERPTURvY3VtZW50
IChET01Eb2N1bWVudFByaXZhdGUpCitAcHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1N0cmlu
ZyAqY29udGVudFR5cGU7CitAcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpkaXI7CitAcHJvcGVy
dHkgKHJlYWRvbmx5LCBzdHJvbmcpIERPTUhUTUxIZWFkRWxlbWVudCAqaGVhZDsKK0Bwcm9wZXJ0
eSAocmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpjb21wYXRNb2RlOworI2lmICFUQVJHRVRfT1Nf
SVBIT05FCitAcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIHdlYmtpdElzRnVsbFNjcmVlbjsKK0Bw
cm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgd2Via2l0RnVsbFNjcmVlbktleWJvYXJkSW5wdXRBbGxv
d2VkOworQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01FbGVtZW50ICp3ZWJraXRDdXJy
ZW50RnVsbFNjcmVlbkVsZW1lbnQ7CitAcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIHdlYmtpdEZ1
bGxzY3JlZW5FbmFibGVkOworQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01FbGVtZW50
ICp3ZWJraXRGdWxsc2NyZWVuRWxlbWVudDsKKyNlbmRpZgorQHByb3BlcnR5IChyZWFkb25seSwg
c3Ryb25nKSBET01FbGVtZW50ICpwb2ludGVyTG9ja0VsZW1lbnQ7CitAcHJvcGVydHkgKHJlYWRv
bmx5LCBjb3B5KSBOU1N0cmluZyAqdmlzaWJpbGl0eVN0YXRlOworQHByb3BlcnR5IChyZWFkb25s
eSkgQk9PTCBoaWRkZW47CitAcHJvcGVydHkgKHJlYWRvbmx5LCBzdHJvbmcpIERPTUhUTUxTY3Jp
cHRFbGVtZW50ICpjdXJyZW50U2NyaXB0OworQHByb3BlcnR5IChyZWFkb25seSwgY29weSkgTlNT
dHJpbmcgKm9yaWdpbjsKK0Bwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9NRWxlbWVudCAq
c2Nyb2xsaW5nRWxlbWVudDsKK0Bwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9NSFRNTENv
bGxlY3Rpb24gKmNoaWxkcmVuOworQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01FbGVt
ZW50ICpmaXJzdEVsZW1lbnRDaGlsZDsKK0Bwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9N
RWxlbWVudCAqbGFzdEVsZW1lbnRDaGlsZDsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIHVuc2lnbmVk
IGNoaWxkRWxlbWVudENvdW50OworCistIChET01SYW5nZSAqKWNhcmV0UmFuZ2VGcm9tUG9pbnQ6
KGludCl4IHk6KGludCl5OworI2lmICFUQVJHRVRfT1NfSVBIT05FCistICh2b2lkKXdlYmtpdEV4
aXRGdWxsc2NyZWVuOworI2VuZGlmCitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTURvY3VtZW50VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET01Eb2N1bWVudFR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Y2Q2ZWI4NTA2NjgzYjJlYWYyZDdk
YTUwMDAyMWU1NTFlYzIzN2E2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET01Eb2N1bWVudFR5cGUuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJDb3Jl
L0RPTU5vZGUuaD4KKworQGNsYXNzIERPTU5hbWVkTm9kZU1hcDsKK0BjbGFzcyBOU1N0cmluZzsK
KworV0VCS0lUX0NMQVNTX0FWQUlMQUJMRV9NQUMoMTBfNCkKK1dFQkNPUkVfRVhQT1JUIEBpbnRl
cmZhY2UgRE9NRG9jdW1lbnRUeXBlIDogRE9NTm9kZQorQHByb3BlcnR5IChyZWFkb25seSwgY29w
eSkgTlNTdHJpbmcgKm5hbWU7CitAcHJvcGVydHkgKHJlYWRvbmx5LCBzdHJvbmcpIERPTU5hbWVk
Tm9kZU1hcCAqZW50aXRpZXM7CitAcHJvcGVydHkgKHJlYWRvbmx5LCBzdHJvbmcpIERPTU5hbWVk
Tm9kZU1hcCAqbm90YXRpb25zOworQHByb3BlcnR5IChyZWFkb25seSwgY29weSkgTlNTdHJpbmcg
KnB1YmxpY0lkOworQHByb3BlcnR5IChyZWFkb25seSwgY29weSkgTlNTdHJpbmcgKnN5c3RlbUlk
OworQHByb3BlcnR5IChyZWFkb25seSwgY29weSkgTlNTdHJpbmcgKmludGVybmFsU3Vic2V0Owor
QGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Eb2N1bWVu
dFR5cGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTURvY3VtZW50VHlwZS5t
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jZDJiZjNmZDExYzUyNGVlNjhhODZiMDFmOTdhZGYwZmIxOWQ0MmYxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Eb2N1bWVu
dFR5cGUubW0KQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJET01Eb2N1
bWVudFR5cGVJbnRlcm5hbC5oIgorCisjaW1wb3J0ICJET01OYW1lZE5vZGVNYXBJbnRlcm5hbC5o
IgorI2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCisjaW1wb3J0ICJEb2N1bWVudFR5cGUuaCIK
KyNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCisjaW1wb3J0ICJKU01haW5UaHJlYWRFeGVj
U3RhdGUuaCIKKyNpbXBvcnQgIk5hbWVkTm9kZU1hcC5oIgorI2ltcG9ydCAiVGhyZWFkQ2hlY2su
aCIKKyNpbXBvcnQgIlVSTC5oIgorI2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgor
I2ltcG9ydCA8d3RmL0dldFB0ci5oPgorCisjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6RG9jdW1lbnRUeXBlKj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVy
bmFsKSkKKworQGltcGxlbWVudGF0aW9uIERPTURvY3VtZW50VHlwZQorCistIChOU1N0cmluZyAq
KW5hbWUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAg
cmV0dXJuIElNUEwtPm5hbWUoKTsKK30KKworLSAoRE9NTmFtZWROb2RlTWFwICopZW50aXRpZXMK
K3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJu
IGtpdChXVEY6OmdldFB0cihJTVBMLT5lbnRpdGllc0ZvckJpbmRpbmdzKCkpKTsKK30KKworLSAo
RE9NTmFtZWROb2RlTWFwICopbm90YXRpb25zCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+bm90YXRp
b25zRm9yQmluZGluZ3MoKSkpOworfQorCistIChOU1N0cmluZyAqKXB1YmxpY0lkCit7CisgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5w
dWJsaWNJZCgpOworfQorCistIChOU1N0cmluZyAqKXN5c3RlbUlkCit7CisgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5zeXN0ZW1JZCgp
OworfQorCistIChOU1N0cmluZyAqKWludGVybmFsU3Vic2V0Cit7CisgICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5pbnRlcm5hbFN1YnNl
dCgpOworfQorCistICh2b2lkKXJlbW92ZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBJ
TVBMLT5yZW1vdmUoZWMpOworICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7Cit9CisK
K0BlbmQKKworV2ViQ29yZTo6RG9jdW1lbnRUeXBlKiBjb3JlKERPTURvY3VtZW50VHlwZSAqd3Jh
cHBlcikKK3sKKyAgICByZXR1cm4gd3JhcHBlciA/IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6
RG9jdW1lbnRUeXBlKj4od3JhcHBlci0+X2ludGVybmFsKSA6IDA7Cit9CisKK0RPTURvY3VtZW50
VHlwZSAqa2l0KFdlYkNvcmU6OkRvY3VtZW50VHlwZSogdmFsdWUpCit7CisgICAgV2ViQ29yZVRo
cmVhZFZpb2xhdGlvbkNoZWNrUm91bmRPbmUoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9N
RG9jdW1lbnRUeXBlKj4oa2l0KHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5vZGUqPih2YWx1ZSkpKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRG9jdW1lbnRU
eXBlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRG9jdW1lbnRU
eXBlSW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZjJiNmQxMDRmMmU2MjkwZjVjMzkzMTkxZmNhZWQ1
M2ViZDExYzE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9ET01Eb2N1bWVudFR5cGVJbnRlcm5hbC5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYkNvcmUv
RE9NRG9jdW1lbnRUeXBlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIERvY3VtZW50
VHlwZTsKK30KKworV0VCQ09SRV9FWFBPUlQgV2ViQ29yZTo6RG9jdW1lbnRUeXBlKiBjb3JlKERP
TURvY3VtZW50VHlwZSAqKTsKK1dFQkNPUkVfRVhQT1JUIERPTURvY3VtZW50VHlwZSAqa2l0KFdl
YkNvcmU6OkRvY3VtZW50VHlwZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET01FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUVs
ZW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xNWJjYmMxNmM3MTk3NDU5ZTM5MTQ3NDQ2N2U4ZmI4YjFlMzE5
ZDZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01F
bGVtZW50LmgKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRE9NTm9kZS5oPgorCitAY2xh
c3MgRE9NQXR0cjsKK0BjbGFzcyBET01DU1NTdHlsZURlY2xhcmF0aW9uOworQGNsYXNzIERPTUVs
ZW1lbnQ7CitAY2xhc3MgRE9NTm9kZUxpc3Q7CitAY2xhc3MgTlNTdHJpbmc7CisKK2VudW0gewor
ICAgIERPTV9BTExPV19LRVlCT0FSRF9JTlBVVCA9IDEKK30gV0VCS0lUX0VOVU1fQVZBSUxBQkxF
X01BQygxMF80KTsKKworV0VCS0lUX0NMQVNTX0FWQUlMQUJMRV9NQUMoMTBfNCkKK1dFQkNPUkVf
RVhQT1JUIEBpbnRlcmZhY2UgRE9NRWxlbWVudCA6IERPTU5vZGUKK0Bwcm9wZXJ0eSAocmVhZG9u
bHksIGNvcHkpIE5TU3RyaW5nICp0YWdOYW1lOworQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25n
KSBET01DU1NTdHlsZURlY2xhcmF0aW9uICpzdHlsZTsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIGlu
dCBvZmZzZXRMZWZ0OworQHByb3BlcnR5IChyZWFkb25seSkgaW50IG9mZnNldFRvcDsKK0Bwcm9w
ZXJ0eSAocmVhZG9ubHkpIGludCBvZmZzZXRXaWR0aDsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIGlu
dCBvZmZzZXRIZWlnaHQ7CitAcHJvcGVydHkgKHJlYWRvbmx5KSBpbnQgY2xpZW50TGVmdCBXRUJL
SVRfQVZBSUxBQkxFX01BQygxMF81KTsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIGludCBjbGllbnRU
b3AgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7CitAcHJvcGVydHkgKHJlYWRvbmx5KSBpbnQg
Y2xpZW50V2lkdGg7CitAcHJvcGVydHkgKHJlYWRvbmx5KSBpbnQgY2xpZW50SGVpZ2h0OworQHBy
b3BlcnR5IGludCBzY3JvbGxMZWZ0OworQHByb3BlcnR5IGludCBzY3JvbGxUb3A7CitAcHJvcGVy
dHkgKHJlYWRvbmx5KSBpbnQgc2Nyb2xsV2lkdGg7CitAcHJvcGVydHkgKHJlYWRvbmx5KSBpbnQg
c2Nyb2xsSGVpZ2h0OworQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01FbGVtZW50ICpv
ZmZzZXRQYXJlbnQ7CitAcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICppbm5lckhUTUw7CitAcHJv
cGVydHkgKGNvcHkpIE5TU3RyaW5nICpvdXRlckhUTUw7CitAcHJvcGVydHkgKGNvcHkpIE5TU3Ry
aW5nICpjbGFzc05hbWU7CitAcHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqaW5u
ZXJUZXh0IFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOworQHByb3BlcnR5IChyZWFkb25seSwg
c3Ryb25nKSBET01FbGVtZW50ICpwcmV2aW91c0VsZW1lbnRTaWJsaW5nIFdFQktJVF9BVkFJTEFC
TEVfTUFDKDEwXzYpOworQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01FbGVtZW50ICpu
ZXh0RWxlbWVudFNpYmxpbmcgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNik7CitAcHJvcGVydHkg
KHJlYWRvbmx5LCBzdHJvbmcpIERPTUVsZW1lbnQgKmZpcnN0RWxlbWVudENoaWxkIFdFQktJVF9B
VkFJTEFCTEVfTUFDKDEwXzYpOworQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01FbGVt
ZW50ICpsYXN0RWxlbWVudENoaWxkIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzYpOworQHByb3Bl
cnR5IChyZWFkb25seSkgdW5zaWduZWQgY2hpbGRFbGVtZW50Q291bnQgV0VCS0lUX0FWQUlMQUJM
RV9NQUMoMTBfNik7CisKKy0gKE5TU3RyaW5nICopZ2V0QXR0cmlidXRlOihOU1N0cmluZyAqKW5h
bWU7CistICh2b2lkKXNldEF0dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lIHZhbHVlOihOU1N0cmlu
ZyAqKXZhbHVlIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOworLSAodm9pZClyZW1vdmVBdHRy
aWJ1dGU6KE5TU3RyaW5nICopbmFtZTsKKy0gKERPTUF0dHIgKilnZXRBdHRyaWJ1dGVOb2RlOihO
U1N0cmluZyAqKW5hbWU7CistIChET01BdHRyICopc2V0QXR0cmlidXRlTm9kZTooRE9NQXR0ciAq
KW5ld0F0dHI7CistIChET01BdHRyICopcmVtb3ZlQXR0cmlidXRlTm9kZTooRE9NQXR0ciAqKW9s
ZEF0dHI7CistIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlUYWdOYW1lOihOU1N0cmluZyAq
KW5hbWU7CistIChOU1N0cmluZyAqKWdldEF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFj
ZVVSSSBsb2NhbE5hbWU6KE5TU3RyaW5nICopbG9jYWxOYW1lIFdFQktJVF9BVkFJTEFCTEVfTUFD
KDEwXzUpOworLSAodm9pZClzZXRBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkg
cXVhbGlmaWVkTmFtZTooTlNTdHJpbmcgKilxdWFsaWZpZWROYW1lIHZhbHVlOihOU1N0cmluZyAq
KXZhbHVlIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOworLSAodm9pZClyZW1vdmVBdHRyaWJ1
dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgbG9jYWxOYW1lOihOU1N0cmluZyAqKWxvY2Fs
TmFtZSBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKKy0gKERPTU5vZGVMaXN0ICopZ2V0RWxl
bWVudHNCeVRhZ05hbWVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgbG9jYWxOYW1lOihOU1N0
cmluZyAqKWxvY2FsTmFtZSBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKKy0gKERPTUF0dHIg
KilnZXRBdHRyaWJ1dGVOb2RlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIGxvY2FsTmFtZToo
TlNTdHJpbmcgKilsb2NhbE5hbWUgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7CistIChET01B
dHRyICopc2V0QXR0cmlidXRlTm9kZU5TOihET01BdHRyICopbmV3QXR0cjsKKy0gKEJPT0wpaGFz
QXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWU7CistIChCT09MKWhhc0F0dHJpYnV0ZU5TOihOU1N0
cmluZyAqKW5hbWVzcGFjZVVSSSBsb2NhbE5hbWU6KE5TU3RyaW5nICopbG9jYWxOYW1lIFdFQktJ
VF9BVkFJTEFCTEVfTUFDKDEwXzUpOworLSAodm9pZClmb2N1cyBXRUJLSVRfQVZBSUxBQkxFX01B
QygxMF82KTsKKy0gKHZvaWQpYmx1ciBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF82KTsKKy0gKHZv
aWQpc2Nyb2xsSW50b1ZpZXc6KEJPT0wpYWxpZ25XaXRoVG9wIFdFQktJVF9BVkFJTEFCTEVfTUFD
KDEwXzUpOworLSAodm9pZClzY3JvbGxJbnRvVmlld0lmTmVlZGVkOihCT09MKWNlbnRlcklmTmVl
ZGVkIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOworLSAodm9pZClzY3JvbGxCeUxpbmVzOihp
bnQpbGluZXMgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7CistICh2b2lkKXNjcm9sbEJ5UGFn
ZXM6KGludClwYWdlcyBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKKy0gKERPTU5vZGVMaXN0
ICopZ2V0RWxlbWVudHNCeUNsYXNzTmFtZTooTlNTdHJpbmcgKiluYW1lIFdFQktJVF9BVkFJTEFC
TEVfTUFDKDEwXzYpOworI2lmICFUQVJHRVRfT1NfSVBIT05FCistICh2b2lkKXdlYmtpdFJlcXVl
c3RGdWxsU2NyZWVuOih1bnNpZ25lZCBzaG9ydClmbGFncyBXRUJLSVRfQVZBSUxBQkxFX01BQygx
MF82KTsKKyNlbmRpZgorLSAoRE9NRWxlbWVudCAqKXF1ZXJ5U2VsZWN0b3I6KE5TU3RyaW5nICop
c2VsZWN0b3JzIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzYpOworLSAoRE9NTm9kZUxpc3QgKilx
dWVyeVNlbGVjdG9yQWxsOihOU1N0cmluZyAqKXNlbGVjdG9ycyBXRUJLSVRfQVZBSUxBQkxFX01B
QygxMF82KTsKK0BlbmQKKworQGludGVyZmFjZSBET01FbGVtZW50IChET01FbGVtZW50RGVwcmVj
YXRlZCkKKy0gKHZvaWQpc2V0QXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWUgOihOU1N0cmluZyAq
KXZhbHVlIFdFQktJVF9ERVBSRUNBVEVEX01BQygxMF80LCAxMF81KTsKKy0gKE5TU3RyaW5nICop
Z2V0QXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2Nh
bE5hbWUgV0VCS0lUX0RFUFJFQ0FURURfTUFDKDEwXzQsIDEwXzUpOworLSAodm9pZClzZXRBdHRy
aWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1YWxpZmllZE5h
bWUgOihOU1N0cmluZyAqKXZhbHVlIFdFQktJVF9ERVBSRUNBVEVEX01BQygxMF80LCAxMF81KTsK
Ky0gKHZvaWQpcmVtb3ZlQXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNT
dHJpbmcgKilsb2NhbE5hbWUgV0VCS0lUX0RFUFJFQ0FURURfTUFDKDEwXzQsIDEwXzUpOworLSAo
RE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5VGFnTmFtZU5TOihOU1N0cmluZyAqKW5hbWVzcGFj
ZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lIFdFQktJVF9ERVBSRUNBVEVEX01BQygxMF80LCAx
MF81KTsKKy0gKERPTUF0dHIgKilnZXRBdHRyaWJ1dGVOb2RlTlM6KE5TU3RyaW5nICopbmFtZXNw
YWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUgV0VCS0lUX0RFUFJFQ0FURURfTUFDKDEwXzQs
IDEwXzUpOworLSAoQk9PTCloYXNBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkg
OihOU1N0cmluZyAqKWxvY2FsTmFtZSBXRUJLSVRfREVQUkVDQVRFRF9NQUMoMTBfNCwgMTBfNSk7
CitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUVsZW1l
bnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUVsZW1lbnQubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTQ2M2IzN2Y0Y2YzYWRhNzEwZTI2NTg1NmFmNjI4YTQxY2UwNTkwNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRWxlbWVudC5tbQpAQCAt
MCwwICsxLDU0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJET01FbGVtZW50SW50ZXJuYWwu
aCIKKworI2ltcG9ydCAiQXR0ci5oIgorI2ltcG9ydCAiQ1NTU3R5bGVEZWNsYXJhdGlvbi5oIgor
I2ltcG9ydCAiRE9NQXR0ckludGVybmFsLmgiCisjaW1wb3J0ICJET01DU1NTdHlsZURlY2xhcmF0
aW9uSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTURPTVRva2VuTGlzdEludGVybmFsLmgiCisjaW1w
b3J0ICJET01IVE1MQ29sbGVjdGlvbkludGVybmFsLmgiCisjaW1wb3J0ICJET01Ob2RlSW50ZXJu
YWwuaCIKKyNpbXBvcnQgIkRPTU5vZGVMaXN0SW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTVRva2Vu
TGlzdC5oIgorI2ltcG9ydCAiRWxlbWVudC5oIgorI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMu
aCIKKyNpbXBvcnQgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW1wb3J0ICJIVE1MTmFtZXMuaCIKKyNp
bXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgorI2ltcG9ydCAiTmFtZU5vZGVMaXN0Lmgi
CisjaW1wb3J0ICJOb2RlTGlzdC5oIgorI2ltcG9ydCAiU3R5bGVQcm9wZXJ0aWVzLmgiCisjaW1w
b3J0ICJUaHJlYWRDaGVjay5oIgorI2ltcG9ydCAiVVJMLmgiCisjaW1wb3J0ICJXZWJTY3JpcHRP
YmplY3RQcml2YXRlLmgiCisjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisKKyNkZWZpbmUgSU1QTCBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpFbGVtZW50Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpO
b2RlKj4oX2ludGVybmFsKSkKKworQGltcGxlbWVudGF0aW9uIERPTUVsZW1lbnQKKworLSAoTlNT
dHJpbmcgKil0YWdOYW1lCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOworICAgIHJldHVybiBJTVBMLT50YWdOYW1lKCk7Cit9CisKKy0gKERPTUNTU1N0eWxlRGVj
bGFyYXRpb24gKilzdHlsZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKKyAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmNzc29tU3R5bGUoKSkpOwor
fQorCistIChpbnQpb2Zmc2V0TGVmdAoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+b2Zmc2V0TGVmdCgpOworfQorCistIChpbnQp
b2Zmc2V0VG9wCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwor
ICAgIHJldHVybiBJTVBMLT5vZmZzZXRUb3AoKTsKK30KKworLSAoaW50KW9mZnNldFdpZHRoCit7
CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJ
TVBMLT5vZmZzZXRXaWR0aCgpOworfQorCistIChpbnQpb2Zmc2V0SGVpZ2h0Cit7CisgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5vZmZz
ZXRIZWlnaHQoKTsKK30KKworLSAoaW50KWNsaWVudExlZnQKK3sKKyAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPmNsaWVudExlZnQoKTsK
K30KKworLSAoaW50KWNsaWVudFRvcAoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+Y2xpZW50VG9wKCk7Cit9CisKKy0gKGludClj
bGllbnRXaWR0aAoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
KyAgICByZXR1cm4gSU1QTC0+Y2xpZW50V2lkdGgoKTsKK30KKworLSAoaW50KWNsaWVudEhlaWdo
dAoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1
cm4gSU1QTC0+Y2xpZW50SGVpZ2h0KCk7Cit9CisKKy0gKGludClzY3JvbGxMZWZ0Cit7CisgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5z
Y3JvbGxMZWZ0KCk7Cit9CisKKy0gKHZvaWQpc2V0U2Nyb2xsTGVmdDooaW50KW5ld1Njcm9sbExl
ZnQKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgSU1Q
TC0+c2V0U2Nyb2xsTGVmdChuZXdTY3JvbGxMZWZ0KTsKK30KKworLSAoaW50KXNjcm9sbFRvcAor
eworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4g
SU1QTC0+c2Nyb2xsVG9wKCk7Cit9CisKKy0gKHZvaWQpc2V0U2Nyb2xsVG9wOihpbnQpbmV3U2Ny
b2xsVG9wCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAg
IElNUEwtPnNldFNjcm9sbFRvcChuZXdTY3JvbGxUb3ApOworfQorCistIChpbnQpc2Nyb2xsV2lk
dGgKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0
dXJuIElNUEwtPnNjcm9sbFdpZHRoKCk7Cit9CisKKy0gKGludClzY3JvbGxIZWlnaHQKK3sKKyAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwt
PnNjcm9sbEhlaWdodCgpOworfQorCistIChET01FbGVtZW50ICopb2Zmc2V0UGFyZW50Cit7Cisg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBraXQo
V1RGOjpnZXRQdHIoSU1QTC0+YmluZGluZ3NPZmZzZXRQYXJlbnQoKSkpOworfQorCistIChOU1N0
cmluZyAqKWlubmVySFRNTAoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+aW5uZXJIVE1MKCk7Cit9CisKKy0gKHZvaWQpc2V0SW5u
ZXJIVE1MOihOU1N0cmluZyAqKW5ld0lubmVySFRNTAoreworICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsK
KyAgICBJTVBMLT5zZXRJbm5lckhUTUwobmV3SW5uZXJIVE1MLCBlYyk7CisgICAgV2ViQ29yZTo6
cmFpc2VPbkRPTUVycm9yKGVjKTsKK30KKworLSAoTlNTdHJpbmcgKilvdXRlckhUTUwKK3sKKyAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwt
Pm91dGVySFRNTCgpOworfQorCistICh2b2lkKXNldE91dGVySFRNTDooTlNTdHJpbmcgKiluZXdP
dXRlckhUTUwKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Cisg
ICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgSU1QTC0+c2V0T3V0ZXJIVE1M
KG5ld091dGVySFRNTCwgZWMpOworICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7Cit9
CisKKy0gKE5TU3RyaW5nICopY2xhc3NOYW1lCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5nZXRBdHRyaWJ1dGUoV2ViQ29yZTo6
SFRNTE5hbWVzOjpjbGFzc0F0dHIpOworfQorCistICh2b2lkKXNldENsYXNzTmFtZTooTlNTdHJp
bmcgKiluZXdDbGFzc05hbWUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7CisgICAgSU1QTC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJD
b3JlOjpIVE1MTmFtZXM6OmNsYXNzQXR0ciwgbmV3Q2xhc3NOYW1lKTsKK30KKworLSAoRE9NRE9N
VG9rZW5MaXN0ICopY2xhc3NMaXN0Cit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOworICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Y2xhc3NMaXN0KCkp
KTsKK30KKworLSAoTlNTdHJpbmcgKilpbm5lclRleHQKK3sKKyAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPmlubmVyVGV4dCgpOworfQor
CistIChOU1N0cmluZyAqKXVpYWN0aW9ucworeworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+Z2V0QXR0cmlidXRlKFdlYkNvcmU6OkhU
TUxOYW1lczo6dWlhY3Rpb25zQXR0cik7Cit9CisKKy0gKHZvaWQpc2V0VWlhY3Rpb25zOihOU1N0
cmluZyAqKW5ld1VpYWN0aW9ucworeworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKKyAgICBJTVBMLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdl
YkNvcmU6OkhUTUxOYW1lczo6dWlhY3Rpb25zQXR0ciwgbmV3VWlhY3Rpb25zKTsKK30KKworI2lm
IEVOQUJMRShDU1NfUkVHSU9OUykKKy0gKE5TU3RyaW5nICopd2Via2l0UmVnaW9uT3ZlcnNldAor
eworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4g
SU1QTC0+d2Via2l0UmVnaW9uT3ZlcnNldCgpOworfQorI2VuZGlmCisKKy0gKERPTUVsZW1lbnQg
KilwcmV2aW91c0VsZW1lbnRTaWJsaW5nCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOworICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+cHJldmlvdXNF
bGVtZW50U2libGluZygpKSk7Cit9CisKKy0gKERPTUVsZW1lbnQgKiluZXh0RWxlbWVudFNpYmxp
bmcKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0
dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkpOworfQorCist
IChET01IVE1MQ29sbGVjdGlvbiAqKWNoaWxkcmVuCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Y2hp
bGRyZW4oKSkpOworfQorCistIChET01FbGVtZW50ICopZmlyc3RFbGVtZW50Q2hpbGQKK3sKKyAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIGtpdChX
VEY6OmdldFB0cihJTVBMLT5maXJzdEVsZW1lbnRDaGlsZCgpKSk7Cit9CisKKy0gKERPTUVsZW1l
bnQgKilsYXN0RWxlbWVudENoaWxkCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOworICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+bGFzdEVsZW1lbnRD
aGlsZCgpKSk7Cit9CisKKy0gKHVuc2lnbmVkKWNoaWxkRWxlbWVudENvdW50Cit7CisgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5jaGls
ZEVsZW1lbnRDb3VudCgpOworfQorCistIChOU1N0cmluZyAqKWdldEF0dHJpYnV0ZTooTlNTdHJp
bmcgKiluYW1lCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwor
ICAgIHJldHVybiBJTVBMLT5nZXRBdHRyaWJ1dGUobmFtZSk7Cit9CisKKy0gKHZvaWQpc2V0QXR0
cmlidXRlOihOU1N0cmluZyAqKW5hbWUgdmFsdWU6KE5TU3RyaW5nICopdmFsdWUKK3sKKyAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZSBlYyA9IDA7CisgICAgSU1QTC0+c2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlLCBlYyk7
CisgICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKK30KKworLSAodm9pZClzZXRBdHRy
aWJ1dGU6KE5TU3RyaW5nICopbmFtZSA6KE5TU3RyaW5nICopdmFsdWUKK3sKKyAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CisgICAgSU1QTC0+c2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlLCBlYyk7CisgICAg
V2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKK30KKworLSAodm9pZClyZW1vdmVBdHRyaWJ1
dGU6KE5TU3RyaW5nICopbmFtZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKKyAgICBJTVBMLT5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7Cit9CisKKy0gKERPTUF0
dHIgKilnZXRBdHRyaWJ1dGVOb2RlOihOU1N0cmluZyAqKW5hbWUKK3sKKyAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJ
TVBMLT5nZXRBdHRyaWJ1dGVOb2RlKG5hbWUpKSk7Cit9CisKKy0gKERPTUF0dHIgKilzZXRBdHRy
aWJ1dGVOb2RlOihET01BdHRyICopbmV3QXR0cgoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBpZiAoIW5ld0F0dHIpCisgICAgICAgIFdlYkNvcmU6OnJh
aXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9
IDA7CisgICAgRE9NQXR0ciAqcmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPnNldEF0dHJp
YnV0ZU5vZGUoKmNvcmUobmV3QXR0ciksIGVjKSkpOworICAgIFdlYkNvcmU6OnJhaXNlT25ET01F
cnJvcihlYyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLSAoRE9NQXR0ciAqKXJlbW92ZUF0
dHJpYnV0ZU5vZGU6KERPTUF0dHIgKilvbGRBdHRyCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGlmICghb2xkQXR0cikKKyAgICAgICAgV2ViQ29yZTo6
cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVj
ID0gMDsKKyAgICBET01BdHRyICpyZXN1bHQgPSBraXQoV1RGOjpnZXRQdHIoSU1QTC0+cmVtb3Zl
QXR0cmlidXRlTm9kZSgqY29yZShvbGRBdHRyKSwgZWMpKSk7CisgICAgV2ViQ29yZTo6cmFpc2VP
bkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCistIChET01Ob2RlTGlzdCAq
KWdldEVsZW1lbnRzQnlUYWdOYW1lOihOU1N0cmluZyAqKW5hbWUKK3sKKyAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJ
TVBMLT5nZXRFbGVtZW50c0J5VGFnTmFtZUZvck9iakMobmFtZSkpKTsKK30KKworLSAoTlNTdHJp
bmcgKilnZXRBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgbG9jYWxOYW1lOihO
U1N0cmluZyAqKWxvY2FsTmFtZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+Z2V0QXR0cmlidXRlTlMobmFtZXNwYWNlVVJJLCBs
b2NhbE5hbWUpOworfQorCistIChOU1N0cmluZyAqKWdldEF0dHJpYnV0ZU5TOihOU1N0cmluZyAq
KW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCit7CisgICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5nZXRBdHRyaWJ1dGVO
UyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk7Cit9CisKKy0gKHZvaWQpc2V0QXR0cmlidXRlTlM6
KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIHF1YWxpZmllZE5hbWU6KE5TU3RyaW5nICopcXVhbGlm
aWVkTmFtZSB2YWx1ZTooTlNTdHJpbmcgKil2YWx1ZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsK
KyAgICBJTVBMLT5zZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIHF1YWxpZmllZE5hbWUsIHZh
bHVlLCBlYyk7CisgICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKK30KKworLSAodm9p
ZClzZXRBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKXF1
YWxpZmllZE5hbWUgOihOU1N0cmluZyAqKXZhbHVlCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwor
ICAgIElNUEwtPnNldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgcXVhbGlmaWVkTmFtZSwgdmFs
dWUsIGVjKTsKKyAgICBXZWJDb3JlOjpyYWlzZU9uRE9NRXJyb3IoZWMpOworfQorCistICh2b2lk
KXJlbW92ZUF0dHJpYnV0ZU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSBsb2NhbE5hbWU6KE5T
U3RyaW5nICopbG9jYWxOYW1lCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOworICAgIElNUEwtPnJlbW92ZUF0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxO
YW1lKTsKK30KKworLSAodm9pZClyZW1vdmVBdHRyaWJ1dGVOUzooTlNTdHJpbmcgKiluYW1lc3Bh
Y2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBJTVBMLT5yZW1vdmVBdHRyaWJ1dGVOUyhuYW1lc3BhY2VV
UkksIGxvY2FsTmFtZSk7Cit9CisKKy0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeVRhZ05h
bWVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgbG9jYWxOYW1lOihOU1N0cmluZyAqKWxvY2Fs
TmFtZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBy
ZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmdldEVsZW1lbnRzQnlUYWdOYW1lTlNGb3JPYmpD
KG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKSkpOworfQorCistIChET01Ob2RlTGlzdCAqKWdldEVs
ZW1lbnRzQnlUYWdOYW1lTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKils
b2NhbE5hbWUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Cisg
ICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5nZXRFbGVtZW50c0J5VGFnTmFtZU5TRm9y
T2JqQyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSkpKTsKK30KKworLSAoRE9NQXR0ciAqKWdldEF0
dHJpYnV0ZU5vZGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgbG9jYWxOYW1lOihOU1N0cmlu
ZyAqKWxvY2FsTmFtZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKKyAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmdldEF0dHJpYnV0ZU5vZGVOUyhu
YW1lc3BhY2VVUkksIGxvY2FsTmFtZSkpKTsKK30KKworLSAoRE9NQXR0ciAqKWdldEF0dHJpYnV0
ZU5vZGVOUzooTlNTdHJpbmcgKiluYW1lc3BhY2VVUkkgOihOU1N0cmluZyAqKWxvY2FsTmFtZQor
eworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4g
a2l0KFdURjo6Z2V0UHRyKElNUEwtPmdldEF0dHJpYnV0ZU5vZGVOUyhuYW1lc3BhY2VVUkksIGxv
Y2FsTmFtZSkpKTsKK30KKworLSAoRE9NQXR0ciAqKXNldEF0dHJpYnV0ZU5vZGVOUzooRE9NQXR0
ciAqKW5ld0F0dHIKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
CisgICAgaWYgKCFuZXdBdHRyKQorICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2Vw
dGlvbigpOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIERPTUF0dHIg
KnJlc3VsdCA9IGtpdChXVEY6OmdldFB0cihJTVBMLT5zZXRBdHRyaWJ1dGVOb2RlTlMoKmNvcmUo
bmV3QXR0ciksIGVjKSkpOworICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworLSAoQk9PTCloYXNBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFt
ZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1
cm4gSU1QTC0+aGFzQXR0cmlidXRlKG5hbWUpOworfQorCistIChCT09MKWhhc0F0dHJpYnV0ZU5T
OihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSBsb2NhbE5hbWU6KE5TU3RyaW5nICopbG9jYWxOYW1l
Cit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVy
biBJTVBMLT5oYXNBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk7Cit9CisKKy0g
KEJPT0wpaGFzQXR0cmlidXRlTlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcg
Kilsb2NhbE5hbWUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
CisgICAgcmV0dXJuIElNUEwtPmhhc0F0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1l
KTsKK30KKworLSAodm9pZClmb2N1cworeworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKKyAgICBJTVBMLT5mb2N1cygpOworfQorCistICh2b2lkKWJsdXIKK3sKKyAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgSU1QTC0+Ymx1cigp
OworfQorCistICh2b2lkKXNjcm9sbEludG9WaWV3OihCT09MKWFsaWduV2l0aFRvcAoreworICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBJTVBMLT5zY3JvbGxJ
bnRvVmlldyhhbGlnbldpdGhUb3ApOworfQorCistICh2b2lkKXNjcm9sbEludG9WaWV3SWZOZWVk
ZWQ6KEJPT0wpY2VudGVySWZOZWVkZWQKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7CisgICAgSU1QTC0+c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChjZW50ZXJJZk5l
ZWRlZCk7Cit9CisKKy0gKHZvaWQpc2Nyb2xsQnlMaW5lczooaW50KWxpbmVzCit7CisgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIElNUEwtPnNjcm9sbEJ5TGlu
ZXMobGluZXMpOworfQorCistICh2b2lkKXNjcm9sbEJ5UGFnZXM6KGludClwYWdlcworeworICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBJTVBMLT5zY3JvbGxC
eVBhZ2VzKHBhZ2VzKTsKK30KKworLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5Q2xhc3NO
YW1lOihOU1N0cmluZyAqKW5hbWUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7CisgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5nZXRFbGVtZW50c0J5
Q2xhc3NOYW1lRm9yT2JqQyhuYW1lKSkpOworfQorCistIChCT09MKW1hdGNoZXM6KE5TU3RyaW5n
ICopc2VsZWN0b3JzCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIEJPT0wgcmVzdWx0ID0g
SU1QTC0+bWF0Y2hlcyhzZWxlY3RvcnMsIGVjKTsKKyAgICBXZWJDb3JlOjpyYWlzZU9uRE9NRXJy
b3IoZWMpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy0gKERPTUVsZW1lbnQgKiljbG9zZXN0
OihOU1N0cmluZyAqKXNlbGVjdG9ycworeworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBET01F
bGVtZW50ICpyZXN1bHQgPSBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Y2xvc2VzdChzZWxlY3RvcnMs
IGVjKSkpOworICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworLSAoQk9PTCl3ZWJraXRNYXRjaGVzU2VsZWN0b3I6KE5TU3RyaW5nICopc2Vs
ZWN0b3JzCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAg
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIEJPT0wgcmVzdWx0ID0gSU1QTC0+
bWF0Y2hlcyhzZWxlY3RvcnMsIGVjKTsKKyAgICBXZWJDb3JlOjpyYWlzZU9uRE9NRXJyb3IoZWMp
OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCist
ICh2b2lkKXdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuOih1bnNpZ25lZCBzaG9ydClmbGFncworewor
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBJTVBMLT53ZWJr
aXRSZXF1ZXN0RnVsbFNjcmVlbihmbGFncyk7Cit9CisKKy0gKHZvaWQpd2Via2l0UmVxdWVzdEZ1
bGxzY3JlZW4KK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Cisg
ICAgSU1QTC0+d2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKTsKK30KKyNlbmRpZgorCisjaWYgRU5B
QkxFKFBPSU5URVJfTE9DSykKKy0gKHZvaWQpcmVxdWVzdFBvaW50ZXJMb2NrCit7CisgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIElNUEwtPnJlcXVlc3RQb2lu
dGVyTG9jaygpOworfQorCisjZW5kaWYKKworLSAodm9pZClyZW1vdmUKK3sKKyAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CisgICAgSU1QTC0+cmVtb3ZlKGVjKTsKKyAgICBXZWJDb3JlOjpyYWlzZU9uRE9N
RXJyb3IoZWMpOworfQorCistIChET01FbGVtZW50ICopcXVlcnlTZWxlY3RvcjooTlNTdHJpbmcg
KilzZWxlY3RvcnMKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgRE9NRWxlbWVudCAqcmVz
dWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3JzLCBlYykp
KTsKKyAgICBXZWJDb3JlOjpyYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKKy0gKERPTU5vZGVMaXN0ICopcXVlcnlTZWxlY3RvckFsbDooTlNTdHJpbmcgKilzZWxl
Y3RvcnMKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAg
V2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgRE9NTm9kZUxpc3QgKnJlc3VsdCA9
IGtpdChXVEY6OmdldFB0cihJTVBMLT5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9ycywgZWMpKSk7
CisgICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCitAZW5kCisKK1dlYkNvcmU6OkVsZW1lbnQqIGNvcmUoRE9NRWxlbWVudCAqd3JhcHBlcikK
K3sKKyAgICByZXR1cm4gd3JhcHBlciA/IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6RWxlbWVu
dCo+KHdyYXBwZXItPl9pbnRlcm5hbCkgOiAwOworfQorCitET01FbGVtZW50ICpraXQoV2ViQ29y
ZTo6RWxlbWVudCogdmFsdWUpCit7CisgICAgV2ViQ29yZVRocmVhZFZpb2xhdGlvbkNoZWNrUm91
bmRPbmUoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRWxlbWVudCo+KGtpdChzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpOb2RlKj4odmFsdWUpKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTUVsZW1lbnRJbnRlcm5hbC5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET01FbGVtZW50SW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NmRiOWVkNjU1
YzE5NTI5NzVjZDVlZWVkYTgzZjhkOWJiNDIwNmY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FbGVtZW50SW50ZXJuYWwuaApAQCAtMCwwICsxLDMz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0IDxXZWJDb3JlL0RPTUVsZW1lbnQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgRWxlbWVudDsKK30KKworV0VCQ09SRV9FWFBPUlQgV2ViQ29yZTo6RWxlbWVudCogY29yZShE
T01FbGVtZW50ICopOworV0VCQ09SRV9FWFBPUlQgRE9NRWxlbWVudCAqa2l0KFdlYkNvcmU6OkVs
ZW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRW50
aXR5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUVudGl0eS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjk3NjQ2MzA4MTVlYjU3Njk1ZGRkNTE1ZjI3NjY2NGUxOWNlOGU1ZjAKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUVudGl0eS5oCkBAIC0wLDAg
KzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgPFdlYkNvcmUvRE9NTm9kZS5oPgorCitAY2xhc3MgTlNTdHJpbmc7CisKK1dF
QktJVF9DTEFTU19BVkFJTEFCTEVfTUFDKDEwXzQpCitXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNl
IERPTUVudGl0eSA6IERPTU5vZGUKK0Bwcm9wZXJ0eSAocmVhZG9ubHksIGNvcHkpIE5TU3RyaW5n
ICpwdWJsaWNJZDsKK0Bwcm9wZXJ0eSAocmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpzeXN0ZW1J
ZDsKK0Bwcm9wZXJ0eSAocmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpub3RhdGlvbk5hbWU7CitA
ZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUVudGl0eS5t
bSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NRW50aXR5Lm1tCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmVlNTA5NDM2N2Y1ZDY3ZmUzOGE0N2EyZWU0MDFmZjc4NWFkOWNhZTcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUVudGl0eS5tbQpAQCAtMCwwICsx
LDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkRPTUVudGl0eUludGVybmFsLmgiCisKKyNp
bXBvcnQgIkRPTU5vZGVJbnRlcm5hbC5oIgorI2ltcG9ydCAiRW50aXR5LmgiCisjaW1wb3J0ICJF
eGNlcHRpb25IYW5kbGVycy5oIgorI2ltcG9ydCAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCisj
aW1wb3J0ICJUaHJlYWRDaGVjay5oIgorI2ltcG9ydCAiVVJMLmgiCisjaW1wb3J0ICJXZWJTY3Jp
cHRPYmplY3RQcml2YXRlLmgiCisjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisKKyNkZWZpbmUgSU1Q
TCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpFbnRpdHkqPihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6
Ok5vZGUqPihfaW50ZXJuYWwpKQorCitAaW1wbGVtZW50YXRpb24gRE9NRW50aXR5CisKKy0gKE5T
U3RyaW5nICopcHVibGljSWQKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7CisgICAgcmV0dXJuIElNUEwtPnB1YmxpY0lkKCk7Cit9CisKKy0gKE5TU3RyaW5nICop
c3lzdGVtSWQKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Cisg
ICAgcmV0dXJuIElNUEwtPnN5c3RlbUlkKCk7Cit9CisKKy0gKE5TU3RyaW5nICopbm90YXRpb25O
YW1lCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJl
dHVybiBJTVBMLT5ub3RhdGlvbk5hbWUoKTsKK30KKworQGVuZAorCitXZWJDb3JlOjpFbnRpdHkq
IGNvcmUoRE9NRW50aXR5ICp3cmFwcGVyKQoreworICAgIHJldHVybiB3cmFwcGVyID8gcmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpFbnRpdHkqPih3cmFwcGVyLT5faW50ZXJuYWwpIDogMDsKK30K
KworRE9NRW50aXR5ICpraXQoV2ViQ29yZTo6RW50aXR5KiB2YWx1ZSkKK3sKKyAgICBXZWJDb3Jl
VGhyZWFkVmlvbGF0aW9uQ2hlY2tSb3VuZE9uZSgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxE
T01FbnRpdHkqPihraXQoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KHZhbHVlKSkpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FbnRpdHlJbnRlcm5h
bC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FbnRpdHlJbnRlcm5hbC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmRjYzI2YTY1YzcyMmFkOWUyMzlhYjIyOTE3OWM0MGZjNzQ3NDNhODUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUVudGl0eUludGVy
bmFsLmgKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViQ29yZS9ET01FbnRpdHkuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgRW50aXR5OworfQorCitXRUJDT1JFX0VYUE9SVCBXZWJDb3Jl
OjpFbnRpdHkqIGNvcmUoRE9NRW50aXR5ICopOworV0VCQ09SRV9FWFBPUlQgRE9NRW50aXR5ICpr
aXQoV2ViQ29yZTo6RW50aXR5Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9vYmpjL0RPTUVudGl0eVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9ET01FbnRpdHlSZWZlcmVuY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDg5ODU0YjZiNGVmMjA2ZmIzYjlm
YTUwYjA4OWU2ZDIyMzkxZGQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET01FbnRpdHlSZWZlcmVuY2UuaApAQCAtMCwwICsxLDMwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJD
b3JlL0RPTU5vZGUuaD4KKworV0VCS0lUX0NMQVNTX0FWQUlMQUJMRV9NQUMoMTBfNCkKK1dFQkNP
UkVfRVhQT1JUIEBpbnRlcmZhY2UgRE9NRW50aXR5UmVmZXJlbmNlIDogRE9NTm9kZQorQGVuZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FbnRpdHlSZWZlcmVu
Y2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUVudGl0eVJlZmVyZW5jZS5t
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wMWZjYWI2MGIzYTUwOGZjZTAyNDJmY2Y3OWU1MTA4YzE4OWQ2ZjcyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FbnRpdHlS
ZWZlcmVuY2UubW0KQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0y
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJET01F
bnRpdHlSZWZlcmVuY2VJbnRlcm5hbC5oIgorCisjaW1wb3J0ICJET01Ob2RlSW50ZXJuYWwuaCIK
KyNpbXBvcnQgIkVudGl0eVJlZmVyZW5jZS5oIgorI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMu
aCIKKyNpbXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgorI2ltcG9ydCAiVGhyZWFkQ2hl
Y2suaCIKKyNpbXBvcnQgIldlYlNjcmlwdE9iamVjdFByaXZhdGUuaCIKKyNpbXBvcnQgPHd0Zi9H
ZXRQdHIuaD4KKworI2RlZmluZSBJTVBMIHN0YXRpY19jYXN0PFdlYkNvcmU6OkVudGl0eVJlZmVy
ZW5jZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkpCisKK0Bp
bXBsZW1lbnRhdGlvbiBET01FbnRpdHlSZWZlcmVuY2UKKworQGVuZAorCitXZWJDb3JlOjpFbnRp
dHlSZWZlcmVuY2UqIGNvcmUoRE9NRW50aXR5UmVmZXJlbmNlICp3cmFwcGVyKQoreworICAgIHJl
dHVybiB3cmFwcGVyID8gcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpFbnRpdHlSZWZlcmVuY2Uq
Pih3cmFwcGVyLT5faW50ZXJuYWwpIDogMDsKK30KKworRE9NRW50aXR5UmVmZXJlbmNlICpraXQo
V2ViQ29yZTo6RW50aXR5UmVmZXJlbmNlKiB2YWx1ZSkKK3sKKyAgICBXZWJDb3JlVGhyZWFkVmlv
bGF0aW9uQ2hlY2tSb3VuZE9uZSgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxET01FbnRpdHlS
ZWZlcmVuY2UqPihraXQoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KHZhbHVlKSkpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FbnRpdHlSZWZlcmVu
Y2VJbnRlcm5hbC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01FbnRpdHlSZWZl
cmVuY2VJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0ZjM4NjA3NzE4MzNhN2IyZGFiMDYwNmU5ZGQ3
ZjE1Nzc4YzM3NzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTUVudGl0eVJlZmVyZW5jZUludGVybmFsLmgKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2Vi
Q29yZS9ET01FbnRpdHlSZWZlcmVuY2UuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
RW50aXR5UmVmZXJlbmNlOworfQorCitXRUJDT1JFX0VYUE9SVCBXZWJDb3JlOjpFbnRpdHlSZWZl
cmVuY2UqIGNvcmUoRE9NRW50aXR5UmVmZXJlbmNlICopOworV0VCQ09SRV9FWFBPUlQgRE9NRW50
aXR5UmVmZXJlbmNlICpraXQoV2ViQ29yZTo6RW50aXR5UmVmZXJlbmNlKik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU5hbWVkTm9kZU1hcC5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01OYW1lZE5vZGVNYXAuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jY2Mx
ZmJkZjIzZjUwNzFlNDI2MTZiMWUzMGE2OGVkYjEzYjU1NDg5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01OYW1lZE5vZGVNYXAuaApAQCAtMCwwICsx
LDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgorCitAY2xhc3MgRE9NTm9kZTsKK0BjbGFz
cyBOU1N0cmluZzsKKworV0VCS0lUX0NMQVNTX0FWQUlMQUJMRV9NQUMoMTBfNCkKK1dFQkNPUkVf
RVhQT1JUIEBpbnRlcmZhY2UgRE9NTmFtZWROb2RlTWFwIDogRE9NT2JqZWN0CitAcHJvcGVydHkg
KHJlYWRvbmx5KSB1bnNpZ25lZCBsZW5ndGg7CisKKy0gKERPTU5vZGUgKilnZXROYW1lZEl0ZW06
KE5TU3RyaW5nICopbmFtZTsKKy0gKERPTU5vZGUgKilzZXROYW1lZEl0ZW06KERPTU5vZGUgKilu
b2RlOworLSAoRE9NTm9kZSAqKXJlbW92ZU5hbWVkSXRlbTooTlNTdHJpbmcgKiluYW1lOworLSAo
RE9NTm9kZSAqKWl0ZW06KHVuc2lnbmVkKWluZGV4OworLSAoRE9NTm9kZSAqKWdldE5hbWVkSXRl
bU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSBsb2NhbE5hbWU6KE5TU3RyaW5nICopbG9jYWxO
YW1lIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOworLSAoRE9NTm9kZSAqKXNldE5hbWVkSXRl
bU5TOihET01Ob2RlICopbm9kZTsKKy0gKERPTU5vZGUgKilyZW1vdmVOYW1lZEl0ZW1OUzooTlNT
dHJpbmcgKiluYW1lc3BhY2VVUkkgbG9jYWxOYW1lOihOU1N0cmluZyAqKWxvY2FsTmFtZSBXRUJL
SVRfQVZBSUxBQkxFX01BQygxMF81KTsKK0BlbmQKKworQGludGVyZmFjZSBET01OYW1lZE5vZGVN
YXAgKERPTU5hbWVkTm9kZU1hcERlcHJlY2F0ZWQpCistIChET01Ob2RlICopZ2V0TmFtZWRJdGVt
TlM6KE5TU3RyaW5nICopbmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUgV0VCS0lU
X0RFUFJFQ0FURURfTUFDKDEwXzQsIDEwXzUpOworLSAoRE9NTm9kZSAqKXJlbW92ZU5hbWVkSXRl
bU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lIFdFQktJ
VF9ERVBSRUNBVEVEX01BQygxMF80LCAxMF81KTsKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NTmFtZWROb2RlTWFwLm1tIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET01OYW1lZE5vZGVNYXAubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQyOGZkZWUwNzBh
Y2YyZDliMjdlMzMzM2JlODJjMzQ1OWFjNTU4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NTmFtZWROb2RlTWFwLm1tCkBAIC0wLDAgKzEsMTUzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1w
b3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkRPTU5hbWVkTm9kZU1hcEludGVybmFsLmgiCisKKyNp
bXBvcnQgIkRPTU5vZGVJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIKKyNpbXBv
cnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCisjaW1wb3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUu
aCIKKyNpbXBvcnQgIk5hbWVkTm9kZU1hcC5oIgorI2ltcG9ydCAiTm9kZS5oIgorI2ltcG9ydCAi
VGhyZWFkQ2hlY2suaCIKKyNpbXBvcnQgIlVSTC5oIgorI2ltcG9ydCAiV2ViQ29yZU9iakNFeHRy
YXMuaCIKKyNpbXBvcnQgIldlYlNjcmlwdE9iamVjdFByaXZhdGUuaCIKKyNpbXBvcnQgPHd0Zi9H
ZXRQdHIuaD4KKworI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6TmFtZWRO
b2RlTWFwKj4oX2ludGVybmFsKQorCitAaW1wbGVtZW50YXRpb24gRE9NTmFtZWROb2RlTWFwCisK
Ky0gKHZvaWQpZGVhbGxvYworeworICAgIGlmIChXZWJDb3JlT2JqQ1NjaGVkdWxlRGVhbGxvY2F0
ZU9uTWFpblRocmVhZChbRE9NTmFtZWROb2RlTWFwIGNsYXNzXSwgc2VsZikpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChfaW50ZXJuYWwpCisgICAgICAgIElNUEwtPmRlcmVmKCk7CisgICAg
W3N1cGVyIGRlYWxsb2NdOworfQorCistICh1bnNpZ25lZClsZW5ndGgKK3sKKyAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPmxlbmd0aCgp
OworfQorCistIChET01Ob2RlICopZ2V0TmFtZWRJdGVtOihOU1N0cmluZyAqKW5hbWUKK3sKKyAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIGtpdChX
VEY6OmdldFB0cihJTVBMLT5nZXROYW1lZEl0ZW0obmFtZSkpKTsKK30KKworLSAoRE9NTm9kZSAq
KXNldE5hbWVkSXRlbTooRE9NTm9kZSAqKW5vZGUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7CisgICAgaWYgKCFub2RlKQorICAgICAgICBXZWJDb3JlOjpyYWlz
ZVR5cGVFcnJvckV4Y2VwdGlvbigpOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAw
OworICAgIERPTU5vZGUgKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0cihJTVBMLT5zZXROYW1lZEl0
ZW0oKmNvcmUobm9kZSksIGVjKSkpOworICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLSAoRE9NTm9kZSAqKXJlbW92ZU5hbWVkSXRlbToo
TlNTdHJpbmcgKiluYW1lCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIERPTU5vZGUgKnJl
c3VsdCA9IGtpdChXVEY6OmdldFB0cihJTVBMLT5yZW1vdmVOYW1lZEl0ZW0obmFtZSwgZWMpKSk7
CisgICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCistIChET01Ob2RlICopaXRlbToodW5zaWduZWQpaW5kZXgKK3sKKyAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJ
TVBMLT5pdGVtKGluZGV4KSkpOworfQorCistIChET01Ob2RlICopZ2V0TmFtZWRJdGVtTlM6KE5T
U3RyaW5nICopbmFtZXNwYWNlVVJJIGxvY2FsTmFtZTooTlNTdHJpbmcgKilsb2NhbE5hbWUKK3sK
KyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIGtp
dChXVEY6OmdldFB0cihJTVBMLT5nZXROYW1lZEl0ZW1OUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFt
ZSkpKTsKK30KKworLSAoRE9NTm9kZSAqKWdldE5hbWVkSXRlbU5TOihOU1N0cmluZyAqKW5hbWVz
cGFjZVVSSSA6KE5TU3RyaW5nICopbG9jYWxOYW1lCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Z2V0
TmFtZWRJdGVtTlMobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpKSk7Cit9CisKKy0gKERPTU5vZGUg
KilzZXROYW1lZEl0ZW1OUzooRE9NTm9kZSAqKW5vZGUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgaWYgKCFub2RlKQorICAgICAgICBXZWJDb3JlOjpy
YWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMg
PSAwOworICAgIERPTU5vZGUgKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0cihJTVBMLT5zZXROYW1l
ZEl0ZW0oKmNvcmUobm9kZSksIGVjKSkpOworICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihl
Yyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLSAoRE9NTm9kZSAqKXJlbW92ZU5hbWVkSXRl
bU5TOihOU1N0cmluZyAqKW5hbWVzcGFjZVVSSSBsb2NhbE5hbWU6KE5TU3RyaW5nICopbG9jYWxO
YW1lCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIERPTU5vZGUgKnJlc3VsdCA9IGtpdChX
VEY6OmdldFB0cihJTVBMLT5yZW1vdmVOYW1lZEl0ZW1OUyhuYW1lc3BhY2VVUkksIGxvY2FsTmFt
ZSwgZWMpKSk7CisgICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCistIChET01Ob2RlICopcmVtb3ZlTmFtZWRJdGVtTlM6KE5TU3RyaW5nICop
bmFtZXNwYWNlVVJJIDooTlNTdHJpbmcgKilsb2NhbE5hbWUKK3sKKyAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9
IDA7CisgICAgRE9NTm9kZSAqcmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPnJlbW92ZU5h
bWVkSXRlbU5TKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lLCBlYykpKTsKKyAgICBXZWJDb3JlOjpy
YWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0BlbmQKKworV2Vi
Q29yZTo6TmFtZWROb2RlTWFwKiBjb3JlKERPTU5hbWVkTm9kZU1hcCAqd3JhcHBlcikKK3sKKyAg
ICByZXR1cm4gd3JhcHBlciA/IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6TmFtZWROb2RlTWFw
Kj4od3JhcHBlci0+X2ludGVybmFsKSA6IDA7Cit9CisKK0RPTU5hbWVkTm9kZU1hcCAqa2l0KFdl
YkNvcmU6Ok5hbWVkTm9kZU1hcCogdmFsdWUpCit7CisgICAgV2ViQ29yZVRocmVhZFZpb2xhdGlv
bkNoZWNrUm91bmRPbmUoKTsKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICByZXR1cm4gbmlsOwor
ICAgIGlmIChET01OYW1lZE5vZGVNYXAgKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkK
KyAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICBET01O
YW1lZE5vZGVNYXAgKndyYXBwZXIgPSBbW0RPTU5hbWVkTm9kZU1hcCBhbGxvY10gX2luaXRdOwor
ICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJu
YWwqPih2YWx1ZSk7CisgICAgdmFsdWUtPnJlZigpOworICAgIGFkZERPTVdyYXBwZXIod3JhcHBl
ciwgdmFsdWUpOworICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVsZWFzZV07Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU5hbWVkTm9kZU1hcEludGVybmFs
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU5hbWVkTm9kZU1hcEludGVybmFs
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOWY1NWQyNDNlZDM3NDQwZGM0ZDMwMGE5MDE2NjYxYTk3NzFjNDExZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NTmFtZWRO
b2RlTWFwSW50ZXJuYWwuaApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJDb3JlL0RPTU5hbWVkTm9k
ZU1hcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBOYW1lZE5vZGVNYXA7Cit9CisK
K1dFQkNPUkVfRVhQT1JUIFdlYkNvcmU6Ok5hbWVkTm9kZU1hcCogY29yZShET01OYW1lZE5vZGVN
YXAgKik7CitXRUJDT1JFX0VYUE9SVCBET01OYW1lZE5vZGVNYXAgKmtpdChXZWJDb3JlOjpOYW1l
ZE5vZGVNYXAqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Ob2RlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzhmYThlZjdhYzVmNGIwYWE3OTU4NzRhODY0MjY3ZGUzYTExY2QyOQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NTm9kZS5oCkBAIC0wLDAgKzEs
MTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVjdC5oPgorI2ltcG9ydCA8V2ViQ29yZS9ET01FdmVu
dFRhcmdldC5oPgorCitAY2xhc3MgRE9NRG9jdW1lbnQ7CitAY2xhc3MgRE9NRWxlbWVudDsKK0Bj
bGFzcyBET01OYW1lZE5vZGVNYXA7CitAY2xhc3MgRE9NTm9kZTsKK0BjbGFzcyBET01Ob2RlTGlz
dDsKK0BjbGFzcyBOU1N0cmluZzsKKworZW51bSB7CisgICAgRE9NX0VMRU1FTlRfTk9ERSA9IDEs
CisgICAgRE9NX0FUVFJJQlVURV9OT0RFID0gMiwKKyAgICBET01fVEVYVF9OT0RFID0gMywKKyAg
ICBET01fQ0RBVEFfU0VDVElPTl9OT0RFID0gNCwKKyAgICBET01fRU5USVRZX1JFRkVSRU5DRV9O
T0RFID0gNSwKKyAgICBET01fRU5USVRZX05PREUgPSA2LAorICAgIERPTV9QUk9DRVNTSU5HX0lO
U1RSVUNUSU9OX05PREUgPSA3LAorICAgIERPTV9DT01NRU5UX05PREUgPSA4LAorICAgIERPTV9E
T0NVTUVOVF9OT0RFID0gOSwKKyAgICBET01fRE9DVU1FTlRfVFlQRV9OT0RFID0gMTAsCisgICAg
RE9NX0RPQ1VNRU5UX0ZSQUdNRU5UX05PREUgPSAxMSwKKyAgICBET01fTk9UQVRJT05fTk9ERSA9
IDEyLAorICAgIERPTV9ET0NVTUVOVF9QT1NJVElPTl9ESVNDT05ORUNURUQgPSAweDAxLAorICAg
IERPTV9ET0NVTUVOVF9QT1NJVElPTl9QUkVDRURJTkcgPSAweDAyLAorICAgIERPTV9ET0NVTUVO
VF9QT1NJVElPTl9GT0xMT1dJTkcgPSAweDA0LAorICAgIERPTV9ET0NVTUVOVF9QT1NJVElPTl9D
T05UQUlOUyA9IDB4MDgsCisgICAgRE9NX0RPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5FRF9CWSA9
IDB4MTAsCisgICAgRE9NX0RPQ1VNRU5UX1BPU0lUSU9OX0lNUExFTUVOVEFUSU9OX1NQRUNJRklD
ID0gMHgyMAorfSBXRUJLSVRfRU5VTV9BVkFJTEFCTEVfTUFDKDEwXzQpOworCitXRUJLSVRfQ0xB
U1NfQVZBSUxBQkxFX01BQygxMF80KQorV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBET01Ob2Rl
IDogRE9NT2JqZWN0IDxET01FdmVudFRhcmdldD4KK0Bwcm9wZXJ0eSAocmVhZG9ubHksIGNvcHkp
IE5TU3RyaW5nICpub2RlTmFtZTsKK0Bwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKm5vZGVWYWx1
ZTsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIHVuc2lnbmVkIHNob3J0IG5vZGVUeXBlOworQHByb3Bl
cnR5IChyZWFkb25seSwgc3Ryb25nKSBET01Ob2RlICpwYXJlbnROb2RlOworQHByb3BlcnR5IChy
ZWFkb25seSwgc3Ryb25nKSBET01Ob2RlTGlzdCAqY2hpbGROb2RlczsKK0Bwcm9wZXJ0eSAocmVh
ZG9ubHksIHN0cm9uZykgRE9NTm9kZSAqZmlyc3RDaGlsZDsKK0Bwcm9wZXJ0eSAocmVhZG9ubHks
IHN0cm9uZykgRE9NTm9kZSAqbGFzdENoaWxkOworQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25n
KSBET01Ob2RlICpwcmV2aW91c1NpYmxpbmc7CitAcHJvcGVydHkgKHJlYWRvbmx5LCBzdHJvbmcp
IERPTU5vZGUgKm5leHRTaWJsaW5nOworQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01E
b2N1bWVudCAqb3duZXJEb2N1bWVudDsKK0Bwcm9wZXJ0eSAocmVhZG9ubHksIGNvcHkpIE5TU3Ry
aW5nICpuYW1lc3BhY2VVUkk7CitAcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpwcmVmaXg7CitA
cHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqbG9jYWxOYW1lOworQHByb3BlcnR5
IChyZWFkb25seSwgc3Ryb25nKSBET01OYW1lZE5vZGVNYXAgKmF0dHJpYnV0ZXM7CitAcHJvcGVy
dHkgKHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqYmFzZVVSSSBXRUJLSVRfQVZBSUxBQkxFX01B
QygxMF81KTsKK0Bwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKnRleHRDb250ZW50IFdFQktJVF9B
VkFJTEFCTEVfTUFDKDEwXzUpOworQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01FbGVt
ZW50ICpwYXJlbnRFbGVtZW50IFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOworQHByb3BlcnR5
IChyZWFkb25seSkgQk9PTCBpc0NvbnRlbnRFZGl0YWJsZSBXRUJLSVRfQVZBSUxBQkxFX01BQygx
MF81KTsKKworLSAoRE9NTm9kZSAqKWluc2VydEJlZm9yZTooRE9NTm9kZSAqKW5ld0NoaWxkIHJl
ZkNoaWxkOihET01Ob2RlICopcmVmQ2hpbGQgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7Cist
IChET01Ob2RlICopcmVwbGFjZUNoaWxkOihET01Ob2RlICopbmV3Q2hpbGQgb2xkQ2hpbGQ6KERP
TU5vZGUgKilvbGRDaGlsZCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKKy0gKERPTU5vZGUg
KilyZW1vdmVDaGlsZDooRE9NTm9kZSAqKW9sZENoaWxkOworLSAoRE9NTm9kZSAqKWFwcGVuZENo
aWxkOihET01Ob2RlICopbmV3Q2hpbGQ7CistIChCT09MKWhhc0NoaWxkTm9kZXM7CistIChET01O
b2RlICopY2xvbmVOb2RlOihCT09MKWRlZXA7CistICh2b2lkKW5vcm1hbGl6ZTsKKy0gKEJPT0wp
aXNTdXBwb3J0ZWQ6KE5TU3RyaW5nICopZmVhdHVyZSB2ZXJzaW9uOihOU1N0cmluZyAqKXZlcnNp
b24gV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7CistIChCT09MKWhhc0F0dHJpYnV0ZXM7Cist
IChCT09MKWlzU2FtZU5vZGU6KERPTU5vZGUgKilvdGhlciBXRUJLSVRfQVZBSUxBQkxFX01BQygx
MF81KTsKKy0gKEJPT0wpaXNFcXVhbE5vZGU6KERPTU5vZGUgKilvdGhlciBXRUJLSVRfQVZBSUxB
QkxFX01BQygxMF81KTsKKy0gKE5TU3RyaW5nICopbG9va3VwUHJlZml4OihOU1N0cmluZyAqKW5h
bWVzcGFjZVVSSSBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKKy0gKE5TU3RyaW5nICopbG9v
a3VwTmFtZXNwYWNlVVJJOihOU1N0cmluZyAqKXByZWZpeCBXRUJLSVRfQVZBSUxBQkxFX01BQygx
MF81KTsKKy0gKEJPT0wpaXNEZWZhdWx0TmFtZXNwYWNlOihOU1N0cmluZyAqKW5hbWVzcGFjZVVS
SSBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKKy0gKHVuc2lnbmVkIHNob3J0KWNvbXBhcmVE
b2N1bWVudFBvc2l0aW9uOihET01Ob2RlICopb3RoZXIgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBf
Nik7CistIChCT09MKWNvbnRhaW5zOihET01Ob2RlICopb3RoZXIgV0VCS0lUX0FWQUlMQUJMRV9N
QUMoMTBfNSk7CitAZW5kCisKK0BpbnRlcmZhY2UgRE9NTm9kZSAoRE9NTm9kZURlcHJlY2F0ZWQp
CistIChET01Ob2RlICopaW5zZXJ0QmVmb3JlOihET01Ob2RlICopbmV3Q2hpbGQgOihET01Ob2Rl
ICopcmVmQ2hpbGQgV0VCS0lUX0RFUFJFQ0FURURfTUFDKDEwXzQsIDEwXzUpOworLSAoRE9NTm9k
ZSAqKXJlcGxhY2VDaGlsZDooRE9NTm9kZSAqKW5ld0NoaWxkIDooRE9NTm9kZSAqKW9sZENoaWxk
IFdFQktJVF9ERVBSRUNBVEVEX01BQygxMF80LCAxMF81KTsKKy0gKEJPT0wpaXNTdXBwb3J0ZWQ6
KE5TU3RyaW5nICopZmVhdHVyZSA6KE5TU3RyaW5nICopdmVyc2lvbiBXRUJLSVRfREVQUkVDQVRF
RF9NQUMoMTBfNCwgMTBfNSk7CitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9vYmpjL0RPTU5vZGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU5v
ZGUubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjgzOGMxNThhYWY0ZjNiNTY3MjBmMWMxZGQ3ZmY1ZDcxNzA1NzYz
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NTm9k
ZS5tbQpAQCAtMCwwICsxLDQyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJET01Ob2RlSW50
ZXJuYWwuaCIKKworI2ltcG9ydCAiRE9NRG9jdW1lbnRJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9N
RWxlbWVudEludGVybmFsLmgiCisjaW1wb3J0ICJET01FdmVudEludGVybmFsLmgiCisjaW1wb3J0
ICJET01JbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NTmFtZWROb2RlTWFwSW50ZXJuYWwuaCIKKyNp
bXBvcnQgIkRPTU5vZGVMaXN0SW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRvY3VtZW50LmgiCisjaW1w
b3J0ICJFbGVtZW50LmgiCisjaW1wb3J0ICJFdmVudC5oIgorI2ltcG9ydCAiRXZlbnRMaXN0ZW5l
ci5oIgorI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKKyNpbXBvcnQgIkpTTWFpblRocmVh
ZEV4ZWNTdGF0ZS5oIgorI2ltcG9ydCAiTmFtZU5vZGVMaXN0LmgiCisjaW1wb3J0ICJOYW1lZE5v
ZGVNYXAuaCIKKyNpbXBvcnQgIk5vZGUuaCIKKyNpbXBvcnQgIk5vZGVMaXN0LmgiCisjaW1wb3J0
ICJPYmpDRXZlbnRMaXN0ZW5lci5oIgorI2ltcG9ydCAiVGhyZWFkQ2hlY2suaCIKKyNpbXBvcnQg
IlVSTC5oIgorI2ltcG9ydCAiV2ViQ29yZU9iakNFeHRyYXMuaCIKKyNpbXBvcnQgIldlYlNjcmlw
dE9iamVjdFByaXZhdGUuaCIKKyNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKworI2RlZmluZSBJTVBM
IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KF9pbnRlcm5hbCkKKworQGltcGxlbWVu
dGF0aW9uIERPTU5vZGUKKworLSAodm9pZClkZWFsbG9jCit7CisgICAgaWYgKFdlYkNvcmVPYmpD
U2NoZWR1bGVEZWFsbG9jYXRlT25NYWluVGhyZWFkKFtET01Ob2RlIGNsYXNzXSwgc2VsZikpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChfaW50ZXJuYWwpCisgICAgICAgIElNUEwtPmRlcmVm
KCk7CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistIChOU1N0cmluZyAqKW5vZGVOYW1lCit7
CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJ
TVBMLT5ub2RlTmFtZSgpOworfQorCistIChOU1N0cmluZyAqKW5vZGVWYWx1ZQoreworICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+bm9k
ZVZhbHVlKCk7Cit9CisKKy0gKHZvaWQpc2V0Tm9kZVZhbHVlOihOU1N0cmluZyAqKW5ld05vZGVW
YWx1ZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBX
ZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBJTVBMLT5zZXROb2RlVmFsdWUobmV3
Tm9kZVZhbHVlLCBlYyk7CisgICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKK30KKwor
LSAodW5zaWduZWQgc2hvcnQpbm9kZVR5cGUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPm5vZGVUeXBlKCk7Cit9CisKKy0gKERP
TU5vZGUgKilwYXJlbnROb2RlCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOworICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+cGFyZW50Tm9kZSgpKSk7
Cit9CisKKy0gKERPTU5vZGVMaXN0ICopY2hpbGROb2RlcworeworICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwt
PmNoaWxkTm9kZXMoKSkpOworfQorCistIChET01Ob2RlICopZmlyc3RDaGlsZAoreworICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4ga2l0KFdURjo6
Z2V0UHRyKElNUEwtPmZpcnN0Q2hpbGQoKSkpOworfQorCistIChET01Ob2RlICopbGFzdENoaWxk
Cit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVy
biBraXQoV1RGOjpnZXRQdHIoSU1QTC0+bGFzdENoaWxkKCkpKTsKK30KKworLSAoRE9NTm9kZSAq
KXByZXZpb3VzU2libGluZworeworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKKyAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPnByZXZpb3VzU2libGluZygp
KSk7Cit9CisKKy0gKERPTU5vZGUgKiluZXh0U2libGluZworeworICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwt
Pm5leHRTaWJsaW5nKCkpKTsKK30KKworLSAoRE9NRG9jdW1lbnQgKilvd25lckRvY3VtZW50Cit7
CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBr
aXQoV1RGOjpnZXRQdHIoSU1QTC0+ZG9jdW1lbnQoKSkpOworfQorCistIChOU1N0cmluZyAqKW5h
bWVzcGFjZVVSSQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
KyAgICByZXR1cm4gSU1QTC0+bmFtZXNwYWNlVVJJKCk7Cit9CisKKy0gKE5TU3RyaW5nICopcHJl
Zml4Cit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJl
dHVybiBJTVBMLT5wcmVmaXgoKTsKK30KKworLSAodm9pZClzZXRQcmVmaXg6KE5TU3RyaW5nICop
bmV3UHJlZml4Cit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwor
ICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIElNUEwtPnNldFByZWZpeChu
ZXdQcmVmaXgsIGVjKTsKKyAgICBXZWJDb3JlOjpyYWlzZU9uRE9NRXJyb3IoZWMpOworfQorCist
IChOU1N0cmluZyAqKWxvY2FsTmFtZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+bG9jYWxOYW1lKCk7Cit9CisKKy0gKERPTU5h
bWVkTm9kZU1hcCAqKWF0dHJpYnV0ZXMKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0cihJTVBMLT5hdHRyaWJ1dGVz
KCkpKTsKK30KKworLSAoTlNTdHJpbmcgKiliYXNlVVJJCit7CisgICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5iYXNlVVJJKCk7Cit9CisK
Ky0gKE5TU3RyaW5nICopdGV4dENvbnRlbnQKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPnRleHRDb250ZW50KCk7Cit9CisKKy0g
KHZvaWQpc2V0VGV4dENvbnRlbnQ6KE5TU3RyaW5nICopbmV3VGV4dENvbnRlbnQKK3sKKyAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZSBlYyA9IDA7CisgICAgSU1QTC0+c2V0VGV4dENvbnRlbnQobmV3VGV4dENvbnRlbnQs
IGVjKTsKKyAgICBXZWJDb3JlOjpyYWlzZU9uRE9NRXJyb3IoZWMpOworfQorCistIChCT09MKWlz
Q29ubmVjdGVkCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwor
ICAgIHJldHVybiBJTVBMLT5pbkRvY3VtZW50KCk7Cit9CisKKy0gKERPTUVsZW1lbnQgKilwYXJl
bnRFbGVtZW50Cit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwor
ICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+cGFyZW50RWxlbWVudCgpKSk7Cit9CisK
Ky0gKEJPT0wpaXNDb250ZW50RWRpdGFibGUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPmlzQ29udGVudEVkaXRhYmxlKCk7Cit9
CisKKy0gKERPTU5vZGUgKilpbnNlcnRCZWZvcmU6KERPTU5vZGUgKiluZXdDaGlsZCByZWZDaGls
ZDooRE9NTm9kZSAqKXJlZkNoaWxkCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOworICAgIGlmICghbmV3Q2hpbGQpCisgICAgICAgIFdlYkNvcmU6OnJhaXNlVHlw
ZUVycm9yRXhjZXB0aW9uKCk7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Cisg
ICAgaWYgKElNUEwtPmluc2VydEJlZm9yZSgqY29yZShuZXdDaGlsZCksIGNvcmUocmVmQ2hpbGQp
LCBlYykpCisgICAgICAgIHJldHVybiBuZXdDaGlsZDsKKyAgICBXZWJDb3JlOjpyYWlzZU9uRE9N
RXJyb3IoZWMpOworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKERPTU5vZGUgKilpbnNlcnRCZWZv
cmU6KERPTU5vZGUgKiluZXdDaGlsZCA6KERPTU5vZGUgKilyZWZDaGlsZAoreworICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBpZiAoIW5ld0NoaWxkKQorICAg
ICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOworICAgIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGlmIChJTVBMLT5pbnNlcnRCZWZvcmUoKmNvcmUobmV3
Q2hpbGQpLCBjb3JlKHJlZkNoaWxkKSwgZWMpKQorICAgICAgICByZXR1cm4gbmV3Q2hpbGQ7Cisg
ICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4gbmlsOworfQorCist
IChET01Ob2RlICopcmVwbGFjZUNoaWxkOihET01Ob2RlICopbmV3Q2hpbGQgb2xkQ2hpbGQ6KERP
TU5vZGUgKilvbGRDaGlsZAoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKKyAgICBpZiAoIW5ld0NoaWxkKQorICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJv
ckV4Y2VwdGlvbigpOworICAgIGlmICghb2xkQ2hpbGQpCisgICAgICAgIFdlYkNvcmU6OnJhaXNl
VHlwZUVycm9yRXhjZXB0aW9uKCk7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgaWYgKElNUEwtPnJlcGxhY2VDaGlsZCgqY29yZShuZXdDaGlsZCksICpjb3JlKG9sZENo
aWxkKSwgZWMpKQorICAgICAgICByZXR1cm4gb2xkQ2hpbGQ7CisgICAgV2ViQ29yZTo6cmFpc2VP
bkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4gbmlsOworfQorCistIChET01Ob2RlICopcmVwbGFj
ZUNoaWxkOihET01Ob2RlICopbmV3Q2hpbGQgOihET01Ob2RlICopb2xkQ2hpbGQKK3sKKyAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgaWYgKCFuZXdDaGlsZCkK
KyAgICAgICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKKyAgICBpZiAoIW9s
ZENoaWxkKQorICAgICAgICBXZWJDb3JlOjpyYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpOworICAg
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGlmIChJTVBMLT5yZXBsYWNlQ2hp
bGQoKmNvcmUobmV3Q2hpbGQpLCAqY29yZShvbGRDaGlsZCksIGVjKSkKKyAgICAgICAgcmV0dXJu
IG9sZENoaWxkOworICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmV0dXJu
IG5pbDsKK30KKworLSAoRE9NTm9kZSAqKXJlbW92ZUNoaWxkOihET01Ob2RlICopb2xkQ2hpbGQK
K3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgaWYgKCFv
bGRDaGlsZCkKKyAgICAgICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKKyAg
ICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBpZiAoSU1QTC0+cmVtb3ZlQ2hp
bGQoKmNvcmUob2xkQ2hpbGQpLCBlYykpCisgICAgICAgIHJldHVybiBvbGRDaGlsZDsKKyAgICBX
ZWJDb3JlOjpyYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKERP
TU5vZGUgKilhcHBlbmRDaGlsZDooRE9NTm9kZSAqKW5ld0NoaWxkCit7CisgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGlmICghbmV3Q2hpbGQpCisgICAgICAg
IFdlYkNvcmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7CisgICAgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZSBlYyA9IDA7CisgICAgaWYgKElNUEwtPmFwcGVuZENoaWxkKCpjb3JlKG5ld0NoaWxk
KSwgZWMpKQorICAgICAgICByZXR1cm4gbmV3Q2hpbGQ7CisgICAgV2ViQ29yZTo6cmFpc2VPbkRP
TUVycm9yKGVjKTsKKyAgICByZXR1cm4gbmlsOworfQorCistIChCT09MKWhhc0NoaWxkTm9kZXMK
K3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJu
IElNUEwtPmhhc0NoaWxkTm9kZXMoKTsKK30KKworLSAoRE9NTm9kZSAqKWNsb25lTm9kZTooQk9P
TClkZWVwCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAg
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIERPTU5vZGUgKnJlc3VsdCA9IGtp
dChXVEY6OmdldFB0cihJTVBMLT5jbG9uZU5vZGVGb3JCaW5kaW5ncyhkZWVwLCBlYykpKTsKKyAg
ICBXZWJDb3JlOjpyYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
Ky0gKHZvaWQpbm9ybWFsaXplCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOworICAgIElNUEwtPm5vcm1hbGl6ZSgpOworfQorCistIChCT09MKWlzU3VwcG9ydGVk
OihOU1N0cmluZyAqKWZlYXR1cmUgdmVyc2lvbjooTlNTdHJpbmcgKil2ZXJzaW9uCit7CisgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5p
c1N1cHBvcnRlZEZvckJpbmRpbmdzKGZlYXR1cmUsIHZlcnNpb24pOworfQorCistIChCT09MKWlz
U3VwcG9ydGVkOihOU1N0cmluZyAqKWZlYXR1cmUgOihOU1N0cmluZyAqKXZlcnNpb24KK3sKKyAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwt
PmlzU3VwcG9ydGVkRm9yQmluZGluZ3MoZmVhdHVyZSwgdmVyc2lvbik7Cit9CisKKy0gKEJPT0wp
aGFzQXR0cmlidXRlcworeworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKKyAgICByZXR1cm4gSU1QTC0+aGFzQXR0cmlidXRlcygpOworfQorCistIChCT09MKWlzU2Ft
ZU5vZGU6KERPTU5vZGUgKilvdGhlcgoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+aXNTYW1lTm9kZShjb3JlKG90aGVyKSk7Cit9
CisKKy0gKEJPT0wpaXNFcXVhbE5vZGU6KERPTU5vZGUgKilvdGhlcgoreworICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+aXNFcXVhbE5v
ZGUoY29yZShvdGhlcikpOworfQorCistIChOU1N0cmluZyAqKWxvb2t1cFByZWZpeDooTlNTdHJp
bmcgKilpbk5hbWVzcGFjZVVSSQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+bG9va3VwUHJlZml4KGluTmFtZXNwYWNlVVJJKTsK
K30KKworLSAoTlNTdHJpbmcgKilsb29rdXBOYW1lc3BhY2VVUkk6KE5TU3RyaW5nICopaW5QcmVm
aXgKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0
dXJuIElNUEwtPmxvb2t1cE5hbWVzcGFjZVVSSShpblByZWZpeCk7Cit9CisKKy0gKEJPT0wpaXNE
ZWZhdWx0TmFtZXNwYWNlOihOU1N0cmluZyAqKWluTmFtZXNwYWNlVVJJCit7CisgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5pc0RlZmF1
bHROYW1lc3BhY2UoaW5OYW1lc3BhY2VVUkkpOworfQorCistICh1bnNpZ25lZCBzaG9ydCljb21w
YXJlRG9jdW1lbnRQb3NpdGlvbjooRE9NTm9kZSAqKW90aGVyCit7CisgICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGlmICghb3RoZXIpCisgICAgICAgIFdlYkNv
cmU6OnJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7CisgICAgcmV0dXJuIElNUEwtPmNvbXBhcmVE
b2N1bWVudFBvc2l0aW9uKCpjb3JlKG90aGVyKSk7Cit9CisKKy0gKEJPT0wpY29udGFpbnM6KERP
TU5vZGUgKilvdGhlcgoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKKyAgICByZXR1cm4gSU1QTC0+Y29udGFpbnMoY29yZShvdGhlcikpOworfQorCistICh2b2lk
KWluc3BlY3QKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Cisg
ICAgSU1QTC0+aW5zcGVjdCgpOworfQorCistICh2b2lkKWFkZEV2ZW50TGlzdGVuZXI6KE5TU3Ry
aW5nICopdHlwZSBsaXN0ZW5lcjooaWQgPERPTUV2ZW50TGlzdGVuZXI+KWxpc3RlbmVyIHVzZUNh
cHR1cmU6KEJPT0wpdXNlQ2FwdHVyZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RXZlbnRMaXN0ZW5lcj4gbmF0aXZlRXZl
bnRMaXN0ZW5lciA9IFdlYkNvcmU6Ok9iakNFdmVudExpc3RlbmVyOjp3cmFwKGxpc3RlbmVyKTsK
KyAgICBJTVBMLT5hZGRFdmVudExpc3RlbmVyRm9yQmluZGluZ3ModHlwZSwgV1RGOjpnZXRQdHIo
bmF0aXZlRXZlbnRMaXN0ZW5lciksIHVzZUNhcHR1cmUpOworfQorCistICh2b2lkKWFkZEV2ZW50
TGlzdGVuZXI6KE5TU3RyaW5nICopdHlwZSA6KGlkIDxET01FdmVudExpc3RlbmVyPilsaXN0ZW5l
ciA6KEJPT0wpdXNlQ2FwdHVyZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RXZlbnRMaXN0ZW5lcj4gbmF0aXZlRXZlbnRM
aXN0ZW5lciA9IFdlYkNvcmU6Ok9iakNFdmVudExpc3RlbmVyOjp3cmFwKGxpc3RlbmVyKTsKKyAg
ICBJTVBMLT5hZGRFdmVudExpc3RlbmVyRm9yQmluZGluZ3ModHlwZSwgV1RGOjpnZXRQdHIobmF0
aXZlRXZlbnRMaXN0ZW5lciksIHVzZUNhcHR1cmUpOworfQorCistICh2b2lkKXJlbW92ZUV2ZW50
TGlzdGVuZXI6KE5TU3RyaW5nICopdHlwZSBsaXN0ZW5lcjooaWQgPERPTUV2ZW50TGlzdGVuZXI+
KWxpc3RlbmVyIHVzZUNhcHR1cmU6KEJPT0wpdXNlQ2FwdHVyZQoreworICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RXZlbnRMaXN0
ZW5lcj4gbmF0aXZlRXZlbnRMaXN0ZW5lciA9IFdlYkNvcmU6Ok9iakNFdmVudExpc3RlbmVyOjp3
cmFwKGxpc3RlbmVyKTsKKyAgICBJTVBMLT5yZW1vdmVFdmVudExpc3RlbmVyRm9yQmluZGluZ3Mo
dHlwZSwgV1RGOjpnZXRQdHIobmF0aXZlRXZlbnRMaXN0ZW5lciksIHVzZUNhcHR1cmUpOworfQor
CistICh2b2lkKXJlbW92ZUV2ZW50TGlzdGVuZXI6KE5TU3RyaW5nICopdHlwZSA6KGlkIDxET01F
dmVudExpc3RlbmVyPilsaXN0ZW5lciA6KEJPT0wpdXNlQ2FwdHVyZQoreworICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RXZlbnRM
aXN0ZW5lcj4gbmF0aXZlRXZlbnRMaXN0ZW5lciA9IFdlYkNvcmU6Ok9iakNFdmVudExpc3RlbmVy
Ojp3cmFwKGxpc3RlbmVyKTsKKyAgICBJTVBMLT5yZW1vdmVFdmVudExpc3RlbmVyRm9yQmluZGlu
Z3ModHlwZSwgV1RGOjpnZXRQdHIobmF0aXZlRXZlbnRMaXN0ZW5lciksIHVzZUNhcHR1cmUpOwor
fQorCistIChCT09MKWRpc3BhdGNoRXZlbnQ6KERPTUV2ZW50ICopZXZlbnQKK3sKKyAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgaWYgKCFldmVudCkKKyAgICAg
ICAgV2ViQ29yZTo6cmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKTsKKyAgICBXZWJDb3JlOjpFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICBCT09MIHJlc3VsdCA9IElNUEwtPmRpc3BhdGNoRXZlbnRG
b3JCaW5kaW5ncygqY29yZShldmVudCksIGVjKTsKKyAgICBXZWJDb3JlOjpyYWlzZU9uRE9NRXJy
b3IoZWMpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0BlbmQKKworV2ViQ29yZTo6Tm9kZSog
Y29yZShET01Ob2RlICp3cmFwcGVyKQoreworICAgIHJldHVybiB3cmFwcGVyID8gcmVpbnRlcnBy
ZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4od3JhcHBlci0+X2ludGVybmFsKSA6IDA7Cit9CisKK0RP
TU5vZGUgKmtpdChXZWJDb3JlOjpOb2RlKiB2YWx1ZSkKK3sKKyAgICBXZWJDb3JlVGhyZWFkVmlv
bGF0aW9uQ2hlY2tSb3VuZE9uZSgpOworICAgIGlmICghdmFsdWUpCisgICAgICAgIHJldHVybiBu
aWw7CisgICAgaWYgKERPTU5vZGUgKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkKKyAg
ICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICBET01Ob2Rl
ICp3cmFwcGVyID0gW1traXRDbGFzcyh2YWx1ZSkgYWxsb2NdIF9pbml0XTsKKyAgICBpZiAoIXdy
YXBwZXIpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgd3JhcHBlci0+X2ludGVybmFsID0gcmVp
bnRlcnByZXRfY2FzdDxET01PYmplY3RJbnRlcm5hbCo+KHZhbHVlKTsKKyAgICB2YWx1ZS0+cmVm
KCk7CisgICAgYWRkRE9NV3JhcHBlcih3cmFwcGVyLCB2YWx1ZSk7CisgICAgcmV0dXJuIFt3cmFw
cGVyIGF1dG9yZWxlYXNlXTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NTm9kZUludGVybmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RP
TU5vZGVJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5YTE1NWMwM2FkZWI2MWVlYWQ0Y2I0ZWE3NGYz
OGFjZWU3YjBhZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTU5vZGVJbnRlcm5hbC5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRE9NTm9k
ZS5oPgorCitAcHJvdG9jb2wgRE9NRXZlbnRUYXJnZXQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIEV2ZW50VGFyZ2V0OworICAgIGNsYXNzIE5vZGU7Cit9CisKK1dFQkNPUkVfRVhQT1JU
IFdlYkNvcmU6Ok5vZGUqIGNvcmUoRE9NTm9kZSAqKTsKK1dFQkNPUkVfRVhQT1JUIERPTU5vZGUg
KmtpdChXZWJDb3JlOjpOb2RlKik7CitDbGFzcyBraXRDbGFzcyhXZWJDb3JlOjpOb2RlKik7Citp
ZCA8RE9NRXZlbnRUYXJnZXQ+IGtpdChXZWJDb3JlOjpFdmVudFRhcmdldCopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Ob2RlTGlzdC5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Ob2RlTGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0YWQ4OWI4M2Q1
NzIxYTlhZjgyMWI3NmUxMDRmYzIwYmQzYWI2MDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU5vZGVMaXN0LmgKQEAgLTAsMCArMSwzNSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8
V2ViQ29yZS9ET01PYmplY3QuaD4KKworQGNsYXNzIERPTU5vZGU7CisKK1dFQktJVF9DTEFTU19B
VkFJTEFCTEVfTUFDKDEwXzQpCitXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIERPTU5vZGVMaXN0
IDogRE9NT2JqZWN0CitAcHJvcGVydHkgKHJlYWRvbmx5KSB1bnNpZ25lZCBsZW5ndGg7CisKKy0g
KERPTU5vZGUgKilpdGVtOih1bnNpZ25lZClpbmRleDsKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NTm9kZUxpc3QubW0gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTU5vZGVMaXN0Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5MGE3OGIxMTFlZjI1MjU0
ODU4Yjg3OWExNGE0MjYzMzEzODFlMDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTU5vZGVMaXN0Lm1tCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorI2ltcG9ydCAiRE9NTm9kZUxpc3RJbnRlcm5hbC5oIgorCisjaW1wb3J0ICJET01JbnRl
cm5hbC5oIgorI2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCisjaW1wb3J0ICJFeGNlcHRpb25I
YW5kbGVycy5oIgorI2ltcG9ydCAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCisjaW1wb3J0ICJO
b2RlLmgiCisjaW1wb3J0ICJOb2RlTGlzdC5oIgorI2ltcG9ydCAiVGhyZWFkQ2hlY2suaCIKKyNp
bXBvcnQgIldlYkNvcmVPYmpDRXh0cmFzLmgiCisjaW1wb3J0ICJXZWJTY3JpcHRPYmplY3RQcml2
YXRlLmgiCisjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisKKyNkZWZpbmUgSU1QTCByZWludGVycHJl
dF9jYXN0PFdlYkNvcmU6Ok5vZGVMaXN0Kj4oX2ludGVybmFsKQorCitAaW1wbGVtZW50YXRpb24g
RE9NTm9kZUxpc3QKKworLSAodm9pZClkZWFsbG9jCit7CisgICAgaWYgKFdlYkNvcmVPYmpDU2No
ZWR1bGVEZWFsbG9jYXRlT25NYWluVGhyZWFkKFtET01Ob2RlTGlzdCBjbGFzc10sIHNlbGYpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoX2ludGVybmFsKQorICAgICAgICBJTVBMLT5kZXJl
ZigpOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAodW5zaWduZWQpbGVuZ3RoCit7Cisg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBM
LT5sZW5ndGgoKTsKK30KKworLSAoRE9NTm9kZSAqKWl0ZW06KHVuc2lnbmVkKWluZGV4Cit7Cisg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBraXQo
V1RGOjpnZXRQdHIoSU1QTC0+aXRlbShpbmRleCkpKTsKK30KKworQGVuZAorCitXZWJDb3JlOjpO
b2RlTGlzdCogY29yZShET01Ob2RlTGlzdCAqd3JhcHBlcikKK3sKKyAgICByZXR1cm4gd3JhcHBl
ciA/IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZUxpc3QqPih3cmFwcGVyLT5faW50ZXJu
YWwpIDogMDsKK30KKworRE9NTm9kZUxpc3QgKmtpdChXZWJDb3JlOjpOb2RlTGlzdCogdmFsdWUp
Cit7CisgICAgV2ViQ29yZVRocmVhZFZpb2xhdGlvbkNoZWNrUm91bmRPbmUoKTsKKyAgICBpZiAo
IXZhbHVlKQorICAgICAgICByZXR1cm4gbmlsOworICAgIGlmIChET01Ob2RlTGlzdCAqd3JhcHBl
ciA9IGdldERPTVdyYXBwZXIodmFsdWUpKQorICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFp
bl0gYXV0b3JlbGVhc2VdOworICAgIERPTU5vZGVMaXN0ICp3cmFwcGVyID0gW1tET01Ob2RlTGlz
dCBhbGxvY10gX2luaXRdOworICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7CisgICAgdmFsdWUtPnJlZigpOworICAgIGFk
ZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOworICAgIHJldHVybiBbd3JhcHBlciBhdXRvcmVs
ZWFzZV07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTU5v
ZGVMaXN0SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NTm9kZUxp
c3RJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjNTE0NmQ0ZjZhYTA1YmYxOTg2ODFhNTFlMjVkMmNk
MDk0OTBhY2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L0RPTU5vZGVMaXN0SW50ZXJuYWwuaApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJDb3JlL0RPTU5v
ZGVMaXN0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIE5vZGVMaXN0OworfQorCitX
RUJDT1JFX0VYUE9SVCBXZWJDb3JlOjpOb2RlTGlzdCogY29yZShET01Ob2RlTGlzdCAqKTsKK1dF
QkNPUkVfRVhQT1JUIERPTU5vZGVMaXN0ICpraXQoV2ViQ29yZTo6Tm9kZUxpc3QqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NTm9kZVByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NTm9kZVByaXZhdGUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
YTFhZDRmMDZiMTYyNjIyYmUwMDFkYzUyODgxMzFkODA2ODhhN2QyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Ob2RlUHJpdmF0ZS5oCkBAIC0wLDAg
KzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgPFdlYkNvcmUvRE9NTm9kZS5oPgorCitAaW50ZXJmYWNlIERPTU5vZGUgKERP
TU5vZGVQcml2YXRlKQorQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBpc0Nvbm5lY3RlZDsKKwor
LSAodm9pZClpbnNwZWN0OworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjBlYjc2NjQ4
MGU4OTQ2ODU3NTlkNjRkNmU5OWUwM2Y4MDUxMDQ1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgKQEAgLTAs
MCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCA8V2ViQ29yZS9ET01DaGFyYWN0ZXJEYXRhLmg+CisKK0BjbGFzcyBET01T
dHlsZVNoZWV0OworQGNsYXNzIE5TU3RyaW5nOworCitXRUJLSVRfQ0xBU1NfQVZBSUxBQkxFX01B
QygxMF80KQorV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24gOiBET01DaGFyYWN0ZXJEYXRhCitAcHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1N0cmlu
ZyAqdGFyZ2V0OworQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01TdHlsZVNoZWV0ICpz
aGVldCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF80KTsKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLm1tIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZmMyOTI2Y2E3NGQwMjQyYzRhZTdlNzljYjM2N2YzOWJmNzBkMjJhNgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NUHJvY2Vzc2luZ0lu
c3RydWN0aW9uLm1tCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiRE9N
UHJvY2Vzc2luZ0luc3RydWN0aW9uSW50ZXJuYWwuaCIKKworI2ltcG9ydCAiRE9NTm9kZUludGVy
bmFsLmgiCisjaW1wb3J0ICJET01TdHlsZVNoZWV0SW50ZXJuYWwuaCIKKyNpbXBvcnQgIkV4Y2Vw
dGlvbkhhbmRsZXJzLmgiCisjaW1wb3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNpbXBv
cnQgIlByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgorI2ltcG9ydCAiU3R5bGVTaGVldC5oIgorI2lt
cG9ydCAiVGhyZWFkQ2hlY2suaCIKKyNpbXBvcnQgIlVSTC5oIgorI2ltcG9ydCAiV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oIgorI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorCisjZGVmaW5lIElNUEwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uKj4ocmVpbnRlcnByZXRf
Y2FzdDxXZWJDb3JlOjpOb2RlKj4oX2ludGVybmFsKSkKKworQGltcGxlbWVudGF0aW9uIERPTVBy
b2Nlc3NpbmdJbnN0cnVjdGlvbgorCistIChOU1N0cmluZyAqKXRhcmdldAoreworICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+dGFyZ2V0
KCk7Cit9CisKKy0gKERPTVN0eWxlU2hlZXQgKilzaGVldAoreworICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwt
PnNoZWV0KCkpKTsKK30KKworQGVuZAorCitXZWJDb3JlOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24q
IGNvcmUoRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uICp3cmFwcGVyKQoreworICAgIHJldHVybiB3
cmFwcGVyID8gcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24q
Pih3cmFwcGVyLT5faW50ZXJuYWwpIDogMDsKK30KKworRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9u
ICpraXQoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uKiB2YWx1ZSkKK3sKKyAgICBXZWJD
b3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2tSb3VuZE9uZSgpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24qPihraXQoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Tm9k
ZSo+KHZhbHVlKSkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25JbnRlcm5hbC5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25JbnRlcm5hbC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdlNDViZjg3NDY0MDJmZjdmNTEyYzk1ODgxYjMyZjU4MDJhNjZlZjgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVByb2Nlc3NpbmdJbnN0cnVjdGlv
bkludGVybmFsLmgKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0y
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViQ29yZS9ET01Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uOworfQorCitXRUJDT1JFX0VYUE9SVCBXZWJDb3JlOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24qIGNvcmUoRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uICopOworV0VCQ09SRV9FWFBPUlQgRE9N
UHJvY2Vzc2luZ0luc3RydWN0aW9uICpraXQoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9u
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVRleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NVGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5N2Rh
MDNlMzZhMThkNDY5MGFhNjk3NjcwZDhhMTFkMDU3YzNhOGEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVRleHQuaApAQCAtMCwwICsxLDM3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
IDxXZWJDb3JlL0RPTUNoYXJhY3RlckRhdGEuaD4KKworQGNsYXNzIERPTVRleHQ7CitAY2xhc3Mg
TlNTdHJpbmc7CisKK1dFQktJVF9DTEFTU19BVkFJTEFCTEVfTUFDKDEwXzQpCitXRUJDT1JFX0VY
UE9SVCBAaW50ZXJmYWNlIERPTVRleHQgOiBET01DaGFyYWN0ZXJEYXRhCitAcHJvcGVydHkgKHJl
YWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqd2hvbGVUZXh0IFdFQktJVF9BVkFJTEFCTEVfTUFDKDEw
XzYpOworCistIChET01UZXh0ICopc3BsaXRUZXh0Oih1bnNpZ25lZClvZmZzZXQ7CistIChET01U
ZXh0ICopcmVwbGFjZVdob2xlVGV4dDooTlNTdHJpbmcgKiljb250ZW50IFdFQktJVF9BVkFJTEFC
TEVfTUFDKDEwXzYpOworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET01UZXh0Lm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01UZXh0Lm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA1YTUxODk4ZDZiZWFjMGE2YjE5OTNjYjMzOTkwYmIwYTlmMjQ5YmIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVRleHQubW0K
QEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJET01UZXh0SW50ZXJuYWwu
aCIKKworI2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCisjaW1wb3J0ICJFeGNlcHRpb25IYW5k
bGVycy5oIgorI2ltcG9ydCAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCisjaW1wb3J0ICJUZXh0
LmgiCisjaW1wb3J0ICJUaHJlYWRDaGVjay5oIgorI2ltcG9ydCAiVVJMLmgiCisjaW1wb3J0ICJX
ZWJTY3JpcHRPYmplY3RQcml2YXRlLmgiCisjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisKKyNkZWZp
bmUgSU1QTCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXh0Kj4ocmVpbnRlcnByZXRfY2FzdDxXZWJD
b3JlOjpOb2RlKj4oX2ludGVybmFsKSkKKworQGltcGxlbWVudGF0aW9uIERPTVRleHQKKworLSAo
TlNTdHJpbmcgKil3aG9sZVRleHQKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPndob2xlVGV4dCgpOworfQorCistIChET01UZXh0
ICopc3BsaXRUZXh0Oih1bnNpZ25lZClvZmZzZXQKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Cisg
ICAgRE9NVGV4dCAqcmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPnNwbGl0VGV4dChvZmZz
ZXQsIGVjKSkpOworICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworLSAoRE9NVGV4dCAqKXJlcGxhY2VXaG9sZVRleHQ6KE5TU3RyaW5nICop
Y29udGVudAoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAg
ICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBET01UZXh0ICpyZXN1bHQgPSBr
aXQoV1RGOjpnZXRQdHIoSU1QTC0+cmVwbGFjZVdob2xlVGV4dChjb250ZW50LCBlYykpKTsKKyAg
ICBXZWJDb3JlOjpyYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K0BlbmQKKworV2ViQ29yZTo6VGV4dCogY29yZShET01UZXh0ICp3cmFwcGVyKQoreworICAgIHJl
dHVybiB3cmFwcGVyID8gcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpUZXh0Kj4od3JhcHBlci0+
X2ludGVybmFsKSA6IDA7Cit9CisKK0RPTVRleHQgKmtpdChXZWJDb3JlOjpUZXh0KiB2YWx1ZSkK
K3sKKyAgICBXZWJDb3JlVGhyZWFkVmlvbGF0aW9uQ2hlY2tSb3VuZE9uZSgpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxET01UZXh0Kj4oa2l0KHN0YXRpY19jYXN0PFdlYkNvcmU6Ok5vZGUqPih2
YWx1ZSkpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
VGV4dEV2ZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01UZXh0RXZlbnQu
bW0KaW5kZXggMTdlMWNmMmUxYWUyZWFhZDExYWMzN2YwM2Q3NjBkZWIxOWYyOWM2Yy4uNzkzNDIz
ZmE4ZjY1NTEzZjJmMjk4NDAwYjkwYWVlMTAwNTZkYzIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET01UZXh0RXZlbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET01UZXh0RXZlbnQubW0KQEAgLTI0LDExICsyNCwxNCBAQAogICovCiAK
ICNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiRE9NVGV4dEV2ZW50SW50ZXJuYWwuaCIKKyNp
bXBvcnQgIkRPTUludGVybmFsLmgiCisKKyNpbXBvcnQgIkRPTVRleHRFdmVudC5oIgogCiAjaW1w
b3J0ICJET01BYnN0cmFjdFZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NRXZlbnRJbnRlcm5h
bC5oIgogI2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCisjaW1wb3J0ICJET01UZXh0RXZlbnRJ
bnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NV2luZG93LmgiCiAjaW1wb3J0ICJFeGNlcHRpb25IYW5k
bGVycy5oIgogI2ltcG9ydCAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVRleHRFdmVudEludGVybmFsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVRleHRFdmVudEludGVybmFsLmgKaW5kZXggYjMz
MTc0ZmVjYTU5MzRjZjBjNmIwMTIyYmRjMTc2MjQwMjVjOGU0NS4uYzFiY2VhMWUzYTllZWU4NzZm
ZDYzMjRiOWY3ZTg3MjhiNDNhNDgzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET01UZXh0RXZlbnRJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NVGV4dEV2ZW50SW50ZXJuYWwuaApAQCAtMjMsNyArMjMsNiBAQAogICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0KICNpbXBvcnQgPFdlYkNvcmUvRE9NVGV4dEV2ZW50Lmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NVGV4dEludGVybmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVRl
eHRJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0N2ZmNWMzNDc3OTAxZjA4NGZhYjBmN2FhNDlmM2Uz
N2I1N2RlMTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L0RPTVRleHRJbnRlcm5hbC5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRE9NVGV4dC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBUZXh0OworfQorCitXRUJDT1JFX0VYUE9S
VCBXZWJDb3JlOjpUZXh0KiBjb3JlKERPTVRleHQgKik7CitXRUJDT1JFX0VYUE9SVCBET01UZXh0
ICpraXQoV2ViQ29yZTo6VGV4dCopOwo=
</data>
<flag name="review"
          id="308809"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>